2011年8月21日日曜日

Debian GNU Linux 6.0.2(squeeze)でJNetHackをコンパイル・インストール

忘れっぽい自分のためのメモ。

ついでに何度もコンパイルしたりした場合の時間を短縮するためccacheも入れた。
インストールしただけではccacheは有効にならないので以下のようにccacheをgcc/g++のように振る舞う設定を行った。(NetHackはg++はたぶん使ってないけど)

$ mkdir ~/bin
$ ln -s /usr/bin/ccache ~/bin/cc
$ ln -s /usr/bin/ccache ~/bin/c++
$ ln -s /usr/bin/ccache ~/bin/gcc
$ ln -s /usr/bin/ccache ~/bin/g++

~/.bashrcの末尾に以下の行を追加。

export PATH=~/bin:$PATH

そしてNetHack本体とJNetHackのパッチをダウンロード。

jnethack-3.4.3-0.10.diff.gz
nethack-343-src.tgz

あとは以下の手順でインストールした。
Linux 用 jnethack 3.4.3 のコンパイル例

0) はじめに

Debian GNU/Linux 6.0.2(squeeze) で tty 版をコンパイルした例です。
この文書は sys/unix/README.linux から設定を抜き出して書かれています。

コンパイルに必要なパッケージをあらかじめインストールしておきます。

# aptitude bison build-essential flex libncurses-dev


1) アーカイブの展開・パッチ当て

$ tar zxvf nethack-343.tgz
$ cd nethack-3.4.3
$ zcat jnethack-3.4.3-0.10.diff.gz | patch -p1
$ sh sys/unix/setup.sh

2) ファイルの編集

2-1) Makefile の該当行を編集

GAMEGRP = games
GAMEPERM = 02755
FILEPERM = 0644
EXEPERM = 755
DIRPERM = 775

2-2) src/Makefile の該当行を編集

CFLAGS = -O2 -fomit-frame-pointer -I../include
LFLAGS =

2-3) util/Makefile の該当行を編集

CFLAGS = -O2 -fomit-frame-pointer -I../include
LFLAGS =

2-4) include/unixconf.h の該当行を編集

コメントアウトされている以下の定義を有効にします。

#define SYSV
#define LINUX
#define TERMINFO
#define TIMED_DELAY

2-)include/config.h の該当行を編集

コメントアウトされているDLBの定義を有効にします。

#define DLB /* not supported on all platforms */

gzipのパスを変更します。(/usr/bin/gzipから/bin/gzipに変更。)

#define COMPRESS "/bin/gzip" /* FSF gzip compression */

以下の様にXI18Nの定義をコメントアウトして無効にします。

/*# define XI18N*/


3)コンパイル

$ make all


4) インストール

4-1) はじめてインストールする場合

# make install
# chmod g+w /usr/games/lib/jnethackdir/record
# chmod g+w /usr/games/lib/jnethackdir/logfile

4-2) 上書きする場合(セーブデータが保護されます)

# make update


5) 設定ファイル

ホームディレクトリに ~/.jnethackrc ファイルを作成してプレイヤー名などの設定を
することができます。
設定ファイルの書き方は doc/jGuidebook.txt を参照してください。


6) 起動

JNetHackは文字コードEUC-JPで起動するため、最近のUTF-8を採用した
環境だと文字化けする可能性があります。

6-1) ターミナルエミュレータの設定

文字コードをEUC-JPに設定します。
GNOME Terminalの場合、端末->文字コード->日本語(EUC-JP)を選択。

6-2) JNetHackを起動

$ jnethack




これでとりあえず起動するようになったので遊ぶ。

インストール後にchmodする必要があるのはインストール時の処理を書き換えておけば良いのだろうけどとりあえず動けばいいやという消極的な対応。

参考にしたサイト