遺伝研スパコンにGentoo Prefixを入れる

Gentoo Prefixのインストール
スパコンユーザーにはルート権限を渡していないが、 大量のソフトウェアを依存関係も含めてインストールする時には 何らかのパッケージャーが使えると作業が楽である.

Gentoo Prefixはルート権限のないユーザーがローカルディレクトリにソフトウェアをインストールするためのパッケージャーである.

参考
 * http://www.gentoo.org/proj/en/gentoo-alt/prefix/bootstrap-solaris.xml
 * http://www.gentoo.org/proj/ja/gentoo-alt/prefix/bootstrap-macos.xml

最初に、gentoo prefixのインストール時に悪さをしそうな環境変数を消しておく. （設定のいくつかは必須ではないかも）

以下、gentoo prefixは日々更新されているので、日によってインストール時の様子が異なるかもしれないが、記録として. .

結果として、調子よく動いてます. 今のところ.

Python 2.7.2のコンパイルエラー を回避
stage1でPython 2.7.2のコンパイル時にエラーで止まる.

bootstrap-prefix.shの該当部分を以下のように編集して、本家からPython 2.7.3をダウンロードするように書き換えて当座をしのぐ.

stage3でDigest verification failedエラー を回避
ところが最後のstage3でエラーが出ます. これは本来Gentooの中の人に直してもらわないといけないようです.

ebuild path/to/ebuild digest で直せるのかもしれませんが知りません. やってみてません. http://www.gentoo.org/doc/ja/handbook/handbook-hppa.xml?part=3&chap=6

お返事
メーリングリストに聞いたらGroffenさんから以下の答え. すぐに直してもらえたようです. (2012.11.17) r61465 | heroxbd | 2012-11-14 11:59:54 +0100 (Wed, 14 Nov 2012) | 4 lines

Partially reverting c60361. the "cd" is need by "for x in lib* ; do" ten lines below.

http://overlays.gentoo.org/proj/alt/changeset/60361

That commit didn't use repoman, and hence broke the Manifest :((((

再び挑戦
以下のスクリプトを実行

$ cat bs-env2.sh unset PERL5LIB unset PERL_MB_OPT unset PERL_LOCAL_LIB_ROOT unset PERL_MM_OPT unset LD_LIBRARY_PATH unset LIBRARY_PATH export LANG=C export EPREFIX=/lustre2/home/youraccount/gentoo2 export PATH="$EPREFIX/usr/bin:$EPREFIX/bin:$EPREFIX/tmp/usr/bin:$EPREFIX/tmp/bin:/usr/bin:/bin" export LATEST_TREE_YES=1 echo "-- hostname --" hostname echo "-- gcc --" which gcc gcc -v echo "-- stage 1 --" ./bootstrap-prefix.sh $EPREFIX/tmp stage1 2>&1 echo "-- stage 2 --" ./bootstrap-prefix.sh $EPREFIX stage2 2>&1 echo "-- stage 3 --" ./bootstrap-prefix.sh $EPREFIX stage3 2>&1 echo "-- emerge -e system --" hash -r 2>&1 emerge -e system 2>&1

emerge -e system中のエラー (libffi)を回避
libffiが既にインストールされているのでエラー終了します、の旨のエラーが出て止まってしまう. (The linker reported linking against -lffi to be working while it shouldn't have.)

スパコンに最初からインストールされているlibffiが見えているのがいけないようだが、 /libとか/usr/libのようなtrusted directoryにインストールされているのでこれを見えないようにするわけにはいかない.

そこでlibffiが見えていても気にせずコンパイルしてくれるようにebuildを書き換えられないか試みた. （本当にこの手順であっているかは自信無し. 初めてなもので. ）

/home/youraccount/gentoo2/usr/portage/dev-libs/libffi/libffi-3.0.11.ebuild を編集して、

該当個所をコメントアウト.

その後 ebuild /home/oogasawa/gentoo2/usr/portage/dev-libs/libffi/libffi-3.0.11.ebuild digest した.

こののち、bs-env2.shを再実行. （step1,2,3はスキップ. ）

sys-apps/portageでのcollisionの処理
env FEATURES="-collision-protect" emerge sys-apps/portage そののち再び emerge -e system

これでemerge -e systemできた.

startscript というスクリプトを生成させる
http://www.gentoo.org/proj/en/gentoo-alt/prefix/bootstrap-solaris.xml の最後の方のとおり.

Using the Prefix

To use your bootstrapped Prefix environment, you best start a shell from the Prefix, such that your path and other environment variables are set correctly. To facilitate in this, a small helper script can be created by the bootstrap script.

Code Listing 1.8: Creating a start-script $ cd $EPREFIX/usr/portage/scripts $ ./bootstrap-prefix.sh $EPREFIX startscript After running this, a script startprefix will be present in $EPREFIX. You can freely move the script to e.g. your homedir for convenience. Running the script will drop you into a Prefix shell, where for example emerge is directly at your disposal. Enjoy your Prefix!

やってみた結果のメッセージ

エラーで終わってます. ./bootstrap-prefix.sh: line 402: emerge: command not found ということですのでemergeにパスを通します.

再び. startprefixは$EPREFIXの下に作られます.

遺伝研スパコン用に環境変数を調整する
startprefixする前の様子

startprefix後の様子

環境変数を追加するために以下のスクリプト(startprefix2)を使う. とくにジョブを投入するときにSGE関係の環境変数の設定が必要. （Emacsに入って、M-x shellして、そのなかでstartprefixして、source startprefix2する. ）

source startprefix2直後の環境変数
$ env | sort | sed 's/:/\n /g' CONFIG_PROTECT_MASK=/etc/fonts/fonts.conf /etc/terminfo /etc/portage /etc/ca-certificates.conf CVS_RSH=ssh EDITOR=emacs -nw EPREFIX=/home/oogasawa/gentoo HISTCONTROL=ignoredups HISTSIZE=1000 HOME=/home/oogasawa INFOPATH=/lustre2/home/oogasawa/gentoo/usr/share/info /lustre2/home/oogasawa/gentoo//usr/share/binutils-data/x86_64-pc-linux-gnu/2.23/info /lustre2/home/oogasawa/gentoo/usr/share/gcc-data/x86_64-pc-linux-gnu/4.6.3/info JAVA_HOME=/usr/local/pkg/java/current-1.6 JAVA_OPTS=-Xmx2G LANG=en_US.utf8 LESSOPEN=|lesspipe %s LESS=-R -M --shift 5 _=/lustre2/home/oogasawa/gentoo/usr/bin/env MANPATH=/lustre2/home/oogasawa/gentoo/usr/share/man /lustre2/home/oogasawa/gentoo//usr/share/binutils-data/x86_64-pc-linux-gnu/2.23/man /lustre2/home/oogasawa/gentoo/usr/share/gcc-data/x86_64-pc-linux-gnu/4.6.3/man /usr/share/man MAVEN_HOME=/usr/local/pkg/maven/apache-maven-3.0.4 MAVEN_OPTS=-Xmx2G PAGER=/lustre2/home/oogasawa/gentoo/usr/bin/less PATH=/home/oogasawa/progs/python_progs /home/oogasawa/progs/jython_progs /home/oogasawa/progs/jruby_progs /home/oogasawa/progs/perl_progs /usr/local/pkg/java/current-1.6/bin /usr/local/pkg/maven/apache-maven-3.0.4/bin /home/oogasawa/local/sage-5.6 /lustre2/home/oogasawa/gentoo/usr/bin /lustre2/home/oogasawa/gentoo/bin /lustre2/home/oogasawa/gentoo/opt/bin /lustre2/home/oogasawa/gentoo/usr/sbin /lustre2/home/oogasawa/gentoo/sbin /lustre2/home/oogasawa/gentoo/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.3 /usr/bin /bin /home/oogasawa/bin /home/geadmin/UGER/bin/lx-amd64 /usr/local/pkg/java/current-1.6/bin /usr/local/pkg/maven/apache-maven-3.0.4/bin /home/oogasawa/local/sage-5.6 /opt/pgi/linux86-64/current/bin /usr/local/pkg/java/current/bin /opt/intel/composer_xe_2011_sp1.6.233/bin/intel64 /home/geadmin/UGER/bin/lx-amd64 /home/oogasawa/progs/python_progs /home/oogasawa/progs/jython_progs /home/oogasawa/progs/jruby_progs /home/oogasawa/progs/perl_progs /usr/local/pkg/java/current-1.6/bin /usr/local/pkg/maven/apache-maven-3.0.4/bin /home/oogasawa/local/sage-5.6 /home/geadmin/UGER/bin/lx-amd64 /usr/lib64/qt-3.3/bin /opt/pgi/linux86-64/current/bin /usr/local/pkg/java/current/bin /opt/intel/composer_xe_2011_sp1.6.233/bin/intel64 /usr/local/bin /bin /usr/bin /usr/local/sbin /usr/sbin /sbin /opt/bin /opt/intel/composer_xe_2011_sp1.6.233/mpirt/bin/intel64 /opt/intel/itac/8.0.3.007/bin /home/oogasawa/bin /opt/intel/composer_xe_2011_sp1.6.233/mpirt/bin/intel64 PERL5LIB=/home/oogasawa/perl5/lib/perl5/x86_64-linux-thread-multi /home/oogasawa/perl5/lib/perl5 PERL_LOCAL_LIB_ROOT=/home/oogasawa/perl5 PERL_MB_OPT=--install_base /home/oogasawa/perl5 PERL_MM_OPT=INSTALL_BASE=/home/oogasawa/perl5 PKG_CONFIG_PATH=/lustre2/home/oogasawa/gentoo/usr/lib/pkgconfig /lustre2/home/oogasawa/gentoo/usr/share/pkgconfig PP=/home/oogasawa/progs/python_progs PS1=\u@\H \w (\D{%F} \t)\n$ PWD=/lustre2/home/oogasawa/analysis/RGM3 PYTHONPATH=/home/oogasawa/progs/python_progs R_HOME=/lustre2/home/oogasawa/gentoo/usr/lib/R SAGE_ROOT=/home/oogasawa/local/sage-5.6 SCRIPTS=/home/oogasawa/progs/python_progs /home/oogasawa/progs/jython_progs /home/oogasawa/progs/jruby_progs /home/oogasawa/progs/perl_progs SGE_CELL=uger SGE_CLUSTER_NAME=p6444 SGE_ROOT=/home/geadmin/UGER SHELL=/home/oogasawa/gentoo/bin/bash SHLVL=1 TERM=dumb TMOUT=260000 USER=oogasawa XDG_DATA_DIRS=/lustre2/home/oogasawa/gentoo/usr/share