もちろん、大抵のものはソースコードが公開されていて、自分でコンパイルすればよいのだけれど、FreeBSDにインストールするには、大抵はMakefileの編集が必要で、結構大変。 せっかくportsとして先人が数多のソフトウェアをFreeBSDで使えるように整えてくれたのだから、一般ユーザもportsシステム使えたらいいのにと思う。
このような背景のもと、 最近、games/nethack34をユーザ権限で、homeの下にinstallしてみたので、記録し公開する。 (ユーザ権限でインストールした、真の理由は察してください。)
1. インストール場所の用意、portsの知恵を借りる。
mkdir ~/nethack/ mkdir ~/nethack/ports/ mkdir ~/nethack/ports/distfiles/ cp -r /usr/ports/games/nethack34/* ~/nethack/ports/ |
2. Makefile を編集する。
portsのdirectoryで普通にmakeしようとすると、rootにしか書き込み権限のないところに作業ディレクトリを作ろうとしたり、logを残そうとしたりしてmakeに失敗する。 だから、さっきコピーしたMakefileを編集する。~/nethack/ports/Makefileの一番上に、以下を追加する。
DISTDIR= ${HOME}/nethack/ports/distfiles/ PREFIX= ${HOME}/nethack/ WRKDIR= /tmp/work/ TARGETDIR= ${HOME}/nethack/ PORT_DBDIR=/tmp/var/db/ports INSTALL_AS_USER= yes |
3. makeして、配置する。
(この部分を2016年7月に更新しました(次の節の第2段落も削除)。更新前の記述は、取り消し線つきで灰色にした部分。昔は手作業でやっていた。)cd ~/nethack/ports/ make |
cp -r /tmp/wrok/stage/${HOME}/nethack/* ${HOME}/nethack/ |
cd ~/nethack/ports/ make make install |
mkdir ~/nethack/lib/nethack/ mkdir ~/nethack/bin/ cp -r /tmp/work/nethack-3.4.3/dat/* ~/nethack/lib/nethack/ cp /tmp/work/nethack-3.4.3/src/nethack ~/nethack/bin/nethack |
実行したら、permがないとか、saveする場所がないとか怒られたので、以下も実行した。
mkdir nethack/lib/nethack/save/ touch ~/nethack/lib/nethack/perm |
4. 補足
上のMakefileの編集内容は、nethackでなくてもどのportsでも同じはず。nethackの場合は、実行ファイルに$PREFIXがあらわに書き込まれる。て、${PREFIX}/lib/nethack/の下のファイルを見に行くので、安易に/tmpとかしないように注意(もしかして$PREFIXでなくて$TARGETDIRかも)。
環境変数は、/usr/ports/Mk/bsd.*.mkあたり(とくにbsd.port.mk)を参考にすればよろしい。
それから、MASTERDIRが存在するportsのときは、MakefileのMASTERDIR変数も処置しておくことが必要なので忘れないように(例えば、nethack34-nox11のMASTERDIRはnethack-34)。場合によってはMASTERDIRもhomeの下にコピーしてしまってもいいかもしれない。 2014年3月追記 久しぶりに同じことをやろうとしたら、
Switching to root credentials to create /var/db/ports/games_nethack34 su: Sorry |
フォーラムでの議論を参考に、Makefileに
PORT_DBDIR=/tmp/var/db/ports INSTALL_AS_USER= yes |
なお、現在の環境は、9.2-STABLE #5 r260877Mである。
2016年7月追記 久しぶりに同じことをやってmakeまでしたら、 installすべきもの一式が、
/tmp/wrok/stage/home/_account_name_/nethack/
の下にbin、lib、shareのディレクトリなどに整理されてできあがっていることに気がついた。
(上記のパスは、Makefileで設定しているところの
${WRKDIR}/stage/${TARGET_DIR}である。)
したがって、「配置する」のが単純に
cp -r /tmp/wrok/stage/${HOME}/nethack/* ${HOME}/nethack/ |
ちなみに
make install |
なお、現在の環境は、10.3-STABLE #22 r300148である。