Solaris10 環境の構築

ICFPC は投げ出してしまいましたが、せっかく VMware player をいれたので、Solaris 10 環境を構築して遊んでました。四苦八苦した記録 (未完) をざっと。

  • Solaris 10 のダウンロード。Firefox だとなぜか Sun のダウンロードの認証が通らなくてはまる。Sleipnir だと Javascript かなにかがすごく重くて、プルダウンメニューを選択するたびに 20 秒くらい固まっていらいらする。
  • qemu-img.exe でイメージを作る。.vmx を適当に作る。
  • GUI インストーラが途中で固まる。CUI インストーラだとなぜか DNS を認識してくれない。GUI インストーラはメモリが 512 MB 以上ないと高確率で固まる、という記述を見つけて、1 GB くらいに増やしたらインストールできた。1 時間くらい放置。
  • それなりにインストールできたので、ユーザ作ったり、Update Manager でパッチあてたりする。2 時間くらいかかる。
  • VMware Server を落としてきて Solaris 用の vmware-tools の iso をひっぱりだして、インストールする。「/etc/X11/xorg.conf が見つからないので新規に作りますか」とか聞かれて、適当に Yes と答えた。後で気がついたことだけど、vmware-tools のインストーラは /etc/X11/xorg.conf の存在チェックに失敗してるみたい。上書きしちゃったかも。まあ気にしない。
  • vmware-tools をインストールすると dtlogin がなんか巨大化した。/etc/X11/xorg.conf から使わない解像度 ("3940x1400" とかでかすぎるやつ) をコメントアウトすれば普通になる。
  • vmware-toolbox がなんか起動できない。libglib が見つからないとかなんとか。/usr/bin/vmware-toolbox の最後の方で「LD_LIBRARY_PATH=`LANGUAGE=C LANG=C ldd "$binary" | vm_append_libs`」とかしてるけど、vm_append_libs というのが見つからない。しょうがないので /usr/bin/vmware-toolbox を書き換えて「LD_LIBRARY_PATH="/usr/lib/vmware-tools/lib32/libgdk-1.2.so.0:/usr/lib/vmware-tools/lib32/libglib-1.2.so.0:/usr/lib/vmware-tools/lib32/libgmodule-1.2.so.0:/usr/lib/vmware-tools/lib32/libgtk-1.2.so.0"」とする。
  • x86 用の Companion DVD が見つからない。1 時間ぐらい迷ったけれど、「SPARC 用 iso」の中に x86 のバイナリも同梱されていた。ひどい。ざっとインストールする。30 分くらいか。/opt/sfw/bin が充実する。
  • ブリッジ接続を使ってるけど、ホストの windows からゲストの Solaris に直接 ssh できない。ping も通らない。ホスト以外の第三のマシンからなら pingssh もできる。これは未解決。ルーティングの問題かなあ。
  • 環境変数を TERMINFO=/opt/sfw/lib/terminfo/ にしたり PATH=/usr/local/bin:/usr/sfw/bin:/opt/sfw/bin:$PATH にしたり LD_LIBRARY_PATH=/usr/local/lib:/usr/sfw/lib:/opt/sfw/lib:$LD_LIBRARY_PATH にしたり。
  • sudo や vim 7.1 や lv 4.51 や boehm gc 7.1 や w3m を自前でビルドしてインストール。この辺はわりとさくさく。ただ、make がないとか strip がないとか ar がないとかでうるさいので、ln -s /usr/sfw/bin/gmake /usr/local/bin/make とかしてしまう。
  • subversion 1.5.0 のインストールですごくはまる。Solarissubversion のビルドは鬼門らしい。sunfreeware.com に頼ればいいんだけど、なんか意地になる。以下は結論だけ。
  • まず Berkeley DB 4.7 をビルドして /usr/local/BerkeleyDB.4.7 (デフォルト) にインストール。
  • apr 1.3.2 を /usr/local/apr (デフォルト) にインストール。
  • apr-util 1.3.2 の configure は Berkeley DB 4.6 以下にしか対応していないので (気づくのに時間がかかった) 、パッチをあてて autoconf してから ./configure --with-apr=/usr/local/apr --with-berkeley-db=/usr/local/BerkeleyDB.4.7 --with-dbm=db47 でビルド、インストール。このパッチをあてたら make clean が必須なので注意 (考えてみれば当たり前だけど、はまった) 。あと patch ではなくて gpatch を使わないといけないのにもちょっとはまった。
  • libneon は普通にインストール。
  • subversion 自体は ./configure --with-berkeley-db=/usr/local/BerkeleyDB.4.7/ --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr --disable-shared LDFLAGS=-lintl でビルド。/usr/sfw/bin/gcc は -shared の扱いに問題があるらしくて、とりあえず回避するために --disable-shared 。LDFLAGS=-lintl がなぜ必要だったのかは忘れた。これで一応 svn が使えるようになった。
  • ruby 1.9 をビルドしようと思ったら autoconf 2.60 以上が必要だった。これもわりとはまった。
  • autoconf 2.62 をインストールしようと思ったら m4-1.4.11 が必要。
  • m4-1.4.11 は Solaris 10 の math.h がバグってるらしくてビルドできない。このメールの人が書いてくれたSolaris のバグ回避パッチは HEAD 用らしくて m4-1.4.11 には適用できないので、手で修正。
  • すると m4-1.4.11 は次に automake 1.10 以上が必要と言うのでビルドしようとすると、automake 1.10.1 は autoconf 2.60 以上を要求する。
  • しょうがないので autoconf 2.60 をインストール。これは m4-1.4.11 を必要としないのですぐにインストールできる。実は ruby 1.9 をビルドするには autoconf 2.60 で十分だけど、気がつかない。
  • これで automake 1.10.1 は素直にビルドできる。
  • m4-1.4.11 は次に autoconf 2.61 を要求する。くっそー。ドキュメントは読まないのが悪いんだけど。
  • autoconf 2.61 も m4-1.4.11 を要求しないので (当然だけど) 、すぐにインストールできる。
  • m4-1.4.11 は「error: m4_defn: undefined macro: _m4_divert_diversion」というエラーを吐くようになる。
  • ここで「autoconf 2.61 が入ってるんだからもう m4 ビルドする必要ないじゃん」と気づき、m4 のビルドを放棄する。
  • ruby 1.9 をビルドすると、ext/dbm のビルドに失敗する。/usr/sfw/bin/gcc が -shared をちゃんと扱えないという噂の現象っぽい。--disable-shared すれば回避できるかもだけど、この環境で続けていくのは嫌だー。
  • そして gcc のビルドへ ←今ここ

ヤクの毛を刈りまくった日でした。趣味だと投げ出しても怒られないので気楽だけど、仕事でこういうことやってる人は大変だろうなあ。