Roads to Linux - JNetHack 1.0.5.4.1のインストール

目次ページへ 前のページへ 次のページへ


■JNetHackのバージョンアップ

NetHackは、UNIX互換システムにおいてはカーネルに次ぐ重要なプログラムです。

私はこれの日本語版であるJNetHackをJGからインストールしていましたが、このバージョンは1.0.3で、これはオリジナルのNetHackの3.1.xベースのものです。

しかしNetHackは既に3.2.2へとバージョンが上がっており、また3.2.1を日本語化したJNetHack 1.0.5.4.1が存在しているのを知っていました。しかし、NetHack 3.2.xは、インタフェースに大きな(慣れるのが難しい)変化があり、しかもJNetHack 1.0.5.4.1には思想的に私の信条と大きく違うフィーチャーが盛り込まれていたので、これをインストールするべきかどうかとても迷っていました。

でもやはり、こういった重要なプログラムはバイナリインストールではなく自分でコンパイルすべきものですし、インタフェースの問題は慣れるしかありません。思想的な問題は、そのフィーチャーを私が使用しなければよいだけの話です。そう決心して、JNetHack 1.0.5.4.1をインストールする事にしました。

■コンパイルの準備

まず準備として、インストール済みの1.0.3をpkgtoolを使用してアンインストールします。その後、nethack-3.2.1.tar.gzを入手し、/usr/local/srcに展開します。

cd /usr/local/src
tar zxvf nethack-3.2.1.tar.gz

jnethack-1.0.5.4.gz、jnethack-1.0.5.4.1.gzを入手し、nethack-3.2.1ディレクトリにコピーし、nethack-3.2.1ディレクトリへ移動して日本語化パッチを当てます。

cd nethack-3.2.1
gzip -dc jnethack-1.0.5.4.gz | patch -p
gzip -dc jnethack-1.0.5.4.1.gz | patch -p

■Makefileの作成と修正

sys/unixディレクトリへ移動し、setup.shスクリプトを使用してMakefileを作成します。

cd sys/unix
sh setup.sh

nethack-3.2.1ディレクトリへ戻り、Makefileを修正します。ここでは、以下の行を修正しました。

GAMEDIR = /usr/local/games/lib/$(GAME)dir
SHELLDIR = /usr/local/games

# VARDATND =
# VARDATND = x11tiles pet_mark.xbm
VARDATND = x11tiles pet_mark.xbm rip.xpm

■config.hの修正

include/config.hを修正します。ここでは、以下の行を修正しました。

#define X11_GRAPHICS /* X11 interface */

# define USE_XPM /* Disable if you do not have the XPM library */

/* # define COMPRESS "/usr/ucb/compress" /* Lempel-Ziv compression */
/* # define COMPRESS_EXTENSION ".Z" /* compress's extension */

# define COMPRESS "/bin/gzip" /* FSF gzip compression */
# define COMPRESS_EXTENSION ".gz" /* normal gzip extension */

# define HACKDIR "/usr/local/games/lib/jnethackdir" /* nethack directory */

■unixconf.hの修正

include/unixconf.hを修正します。ここでは、以下の行を修正しました。

/* #define SUNOS4 /* SunOS 4.x */
/* #define NEWSOS4 /* NEWS-OS 4.x */
#define LINUX /* Another Unix clone */
#define TEXTCOLOR /* Use System V r3.2 terminfo color support */

■src/Makefileの修正

src/Makefileを修正します。ここでは、以下の行を修正しました。

CFLAGS = -O2 -fomit-frame-pointer -I../include -I/usr/X11/include
LFLAGS = -L/usr/X11/lib
# OR compile backwards compatible a.out format
# CFLAGS = -O2 -b i486-linuxaout -fomit-frame-pointer -I../include -I/usr/X11/include
# LFLAGS = -b i486-linuxaout -L/usr/X11/lib

# CFLAGS = -g -I../include
# LFLAGS = -g

WINSRC = $(WINTTYSRC) $(WINX11SRC)
WINOBJ = $(WINTTYOBJ) $(WINX11OBJ)

WINTTYLIB = -ltermcap
# WINTTYLIB = -lcurses
# WINTTYLIB = -lcurses16
# WINTTYLIB = -ltermlib

# WINX11LIB = -lXaw -lXmu -lXext -lXt -lX11
# WINX11LIB = -lXaw -lXmu -lXt -lX11
WINX11LIB = -lXaw -lXmu -lXext -lXt -lXpm -lX11 -lm
# WINX11LIB = -lXaw -lXmu -lXpm -lXext -lXt -lX11 -lSM -lICE -lm # BSD/OS 2.0

WINLIB = $(WINTTYLIB) $(WINX11LIB)

LIBS = -lbsd

■makeとインストール

makeとインストールを行います。

make
make install

最後に、ディレクトリの名前をjnethackにしておきます。

cd ..
mv nethack-3.2.1 jnethack-1.0.5.4.1

これで、TTY上では動く状態になりました。さらにX11上で動かすために、以下のようにX用の定義ファイルをXのディレクトリにコピーします。

cp jnethack-1.0.5.4.1/win/X11/NetHack.ad /usr/X11R6/lib/X11/app-defaults/NetHack
chmod 644 /usr/X11R6/lib/X11/app-defaults/NetHack

これで、

export NETHACKOPTIONS=windowtype:X11
jnethack

等としてX11上で実行できるようになりました(.jnethackrc等でwindowtypeを指定してもよいのですが、ここではTTYがメインなので指定しません)。

また、/usr/X11R6/lib/X11/app-defaults/NetHackの!NetHack.tile_file: x11tilesという行の先頭の!を外して有効行にすれば、タイル表示を有効にできますが、ここでは(タイル表示が嫌いなので)行いませんでした。


目次ページへ 前のページへ 次のページへ