LoginSignup
4
4

More than 5 years have passed since last update.

jNetHack UTF-8対応 を CentOS 6.3 にインストール

Last updated at Posted at 2013-01-18

参考サイト:Linux 用 jnethack 3.4.3 のコンパイル例
(ほぼ参考サイトの劣化コピーです。申し訳ありません。)

はじめに

CentOS 6.3 で tty / X11 版をコンパイルした例です。
(Qt版は 現行バージョン(qt4)に対応していないので、諦めました。)
(GNOME版も 現行バージョンに対応していないので、諦めました。(gdk_imlib.hが無くなった))

以前からcocotなんか使わずにUTF-8に対応できないかなと悶々としていたら、
既に対応してくださっている方がいました。(感謝)

というわけで、最新ソースを svn で取得しつつ、UTF-8対応版のjnethackが出来るようにする。

環境:OS CentOS 6.3
環境:jenethack version 3.4.3-10 ベースの最新開発バージョン(SV)

手順

必要なパッケージの導入

パッケージ導入
yum install libX11-devel ncurses-devel libXt-devel libXaw-devel

最新開発バージョンの取得

ソースの作業用ディレクトリに移動する。

開発バージョンおよび、UTF-8対応版の取得
svn co http://svn.sourceforge.jp/svnroot/jnethack/ jnh-svn
wget http://elbereth.up.seesaa.net/nethack/jnethack-3.4.3-0.10-utf8-2.patch.bz2
資材解凍
cd ./jnh-svn/jnethack/trunk
bzip2 -d /usr/local/src/jnethack/jnethack-3.4.3-0.10-utf8-2.patch.bz2
cat /usr/local/src/jnethack/jnethack-3.4.3-0.10-utf8-2.patch | patch -p1

ファイルの編集

Makefile の該当行を編集

sys/unix/Makefile.top

sys/unix/Makefile.top
...
# make NetHack
PREFIX   = /usr/local
GAME     = jnethack
# GAME     = nethack.prg
GAMEUID  = games
GAMEGRP  = bin

# Permissions - some places use setgid instead of setuid, for instance
# See also the option "SECURE" in include/config.h
GAMEPERM = 04755
FILEPERM = 0644
EXEPERM  = 0755
DIRPERM  = 0755
...

X11 版もコンパイルする場合は以下の設定も必要。

sys/unix/Makefile.topその2
# per discussion in Install.X11 and Install.Qt
# VARDATND =                                              ←ここをコメント
# VARDATND = x11tiles NetHack.ad pet_mark.xbm
VARDATND = x11tiles NetHack.ad pet_mark.xbm rip.xpm       ←ここのコメントを外す
# for Atari/Gem
# VARDATND = nh16.img title.img GEM_RSC.RSC rip.img
# for BeOS
# VARDATND = beostiles
# for Gnome
# VARDATND = x11tiles pet_mark.xbm rip.xpm mapbg.xpm
...

sys/unix/Makefile.src の該当行を編集

sys/unix/Makefile.src
...
# flags for Linux
#   compile normally
# CFLAGS = -O2 -fomit-frame-pointer -I../include
...
CFLAGS = -W -g -O2 -fomit-frame-pointer -I../include -I/usr/include $(GNOMEINC)
#         X11を使う場合/usr/includeも追加。GNOMEを使う場合、$(GNOMEINC)を追加

X11 版もコンパイルする場合は以下の設定も必要。

sys/unix/Makefile.srcその2
...
LFLAGS = -L/usr/X11R6/lib                                      ←flags for Linux を参照しながら、別の行のを編集する。
WINSRC = $(WINTTYSRC) $(WINX11SRC) $(WINQTSRC) $(WINGNOMESRC)  ← X11版、Qt版、GNOME版を追加する
WINOBJ = $(WINTTYOBJ) $(WINX11OBJ) $(WINQTOBJ) $(WINGNOMEOBJ)  ← X11版、Qt版、GNOME版を追加する
WINX11LIB = -lXaw -lXmu -lXext -lXt -lXpm -lX11                ← -lXpmを追加する。
WINLIB = $(WINTTYLIB) $(WINX11LIB) $(WINQTLIB) $(WINGNOMELIB)  ← X11版、Qt版、GNOME版を追加する
...

sys/unix/Makefile.utl の該当行を編集

sys/unix/Makefile.utl
...
# flags for Linux
#   compile normally
CFLAGS = -O2 -fomit-frame-pointer -I../include             ←ここのコメントを外す
LFLAGS = -L/usr/X11R6/lib                                  ←ここのコメントを外す
#   OR compile backwards compatible a.out format
# CFLAGS = -O2 -b i486-linuxaout -fomit-frame-pointer -I../include
# LFLAGS = -b i486-linuxaout -L/usr/X11R6/lib
...

# flags for debugging:
# CFLAGS = -g -I../include

# CFLAGS = -O -I../include                 ←ここをコメントにする
# LFLAGS =                                 ←ここをコメントにする

include/unixconf.h の該当行を編集

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

include/unixconf.h
#define SYSV
#define LINUX
#define TERMINFO
#define TIMED_DELAY

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

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

include/config.h
#define DLB

X11版/QT版/GNOME版もコンパイルする場合は以下の設定も必要。

include/config.hその2
#define X11_GRAPHICS
#define QT_GRAPHICS
#define GNOME_GRAPHICS

<<<
以下はいろいろとあって変更なし。

include/config.hその3
#define USE_XPM                       ←編集しなくとも有効になっているくさい
#define AUTOPICKUP_EXCEPTIONS         ←バグを含んでいる?

<<<

win/X11/JNetHack.ad の該当行を編集(X11 版のみ)

確認するぐらいでいいかな?とくに編集してなくても何かが設定してあった。

win/X11/JNetHack.ad
JNetHack*font: -misc-fixed-medium-r-*--12-*
JNetHack*display_file*font: -misc-fixed-medium-r-*--12-*
JNetHack*tombstone*font: -misc-fixed-medium-r-*--12-*
JNetHack*rip*font: -misc-fixed-medium-r-*--12-*
JNetHack*menu*font: -misc-fixed-medium-r-*--12-*
JNetHack*text*font: -misc-fixed-medium-r-*--12-*
JNetHack*map*font: -misc-fixed-medium-r-*--14-*
JNetHack*fontSet: -misc-fixed-medium-r-*--12-*

タイル表示する場合は以下の設定をします。

win/X11/JNetHack.adその2
JNetHack.tile_file: x11tiles
JNetHack.tile_width: 16
JNetHack.tile_height: 16

タイルを使用しない場合はタイル設定の行頭に "!" をつけます。

コンパイル

$ cd sys/unix
$ sh ./setup.sh
$ cd ../../
$ make all

いつものごとくコンパイルエラーが出る。対処方法は[[こちら|jnethackコンパイルエラー]]

インストール

はじめてインストールする場合

# make install

X11 版の場合はリソースファイルもコピーします。

# cp win/X11/JNetHack.ad /usr/X11R6/lib/X11/app-defaults/JNetHack

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

# make update

エラーメッセージ

インストール時に

chgrp: invalid group name `games'

システムに games グループが登録されていません。
新しく games グループを作るか Makefile の GAMEGRP を変更してインストールしてください。

起動時に Warning: cannot write scoreboard file record

record ファイルのパーミッションが設定されていない場合表示されます。

# chmod g+w /usr/games/lib/jnethackdir/record

上記のように書き込み権限を有効にします。

終了時に Cannot open log file!

logfile ファイルのパーミッションが設定されていない場合表示されます。

# chmod g+w /usr/games/lib/jnethackdir/logfile

上記のように書き込み権限を有効にします。

セーブ時に No such file or directory Exec to compress save/[キャラクター名] failed.

compress もしくは gzip が存在しないか設定が間違っています。
include/config.h の COMPRESS の設定が正しいかどうか確認してください。

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

環境設定

設定ファイル

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

tty 版と X11 版の切り替えは以下の通りです。

OPTIONS=windowtype:tty # tty 版の場合
OPTIONS=windowtype:x11 # X11 版の場合

~JNetHack 1.x 系で追加されたスコア送信機能や Radar パッチは 3.4.x 系では
分離されているので report や radar オプションを設定しても有効にはなりません。

X11 版のウインドウサイズ

起動時に -g オプションをつけるとメインウインドウの大きさを設定できます。

$ jnethack -g 640x480
4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4