あるSolaris8なワークステーションで、Firefox2を実行したかったのですが、処理性能などの理由から、そのワークステーション上でpkgsrcをビルドするのはつらいため、断念。
そこで、別ホストでpkgsrcを使ってビルドしてコピーしようと思ったのですが、あいにくコピー先のワークステーションで管理者権限を持っていないため、/usr/pkg以下にファイルを置くことはできません。
自分で書ける、/usr/pkgとは別のディレクトリにコピーしたのですが、当然ながら、/usr/pkg以下にファイルが置かれていることを前提にしてビルドされたバイナリですから、そのままでは動きません。
とりあえず、あれこれファイルや環境変数をいじくって、なんとか動くようになりました。
firefox起動用のシェルスクリプトは、こんな感じになりました。
#!/bin/sh
#
pkg=(コピー先)/usr/pkg
MOZILLA_FIVE_HOME=${pkg}/lib/firefox
export MOZILLA_FIVE_HOME
LD_LIBRARY_PATH=${pkg}/lib/firefox:${pkg}/lib:${LD_LIBRARY_PATH}
export LD_LIBRARY_PATH
GDK_PIXBUF_MODULEDIR=${pkg}/lib/gtk-2.0/2.10.0/loaders
export GDK_PIXBUF_MODULEDIR
GDK_PIXBUF_MODULE_FILE=${pkg}/libdata/gtk-2.0/gdk-pixbuf.loaders
export GDK_PIXBUF_MODULE_FILE
MRE_HOME=${pkg}/lib/mre/mre-2.0.0.9
export MRE_HOME
FONTCONFIG_FILE=${pkg}/fonts.conf ←ファイル中のパスを書き換える
export FONTCONFIG_FILE
PANGO_RC_FILE=${pkg}/pangorc ←ファイル中のパスを書き換える
export PANGO_RC_FILE
CHARSETALIASDIR=${pkg}/lib
export CHARSETALIASDIR
exec ${pkg}/lib/firefox/firefox-bin "$@"
ファイル名やディレクトリ名にバージョン番号のようなものが書かれているものは、バージョンアップしたときに変わってしまうと思われるので、上記のままで使うことはできません。
fonts.conf、pangorcの中には、/usr/pkg以下のパスが書かれていたので、適宜、書き換えました。
pangorcの中身は、
[Pango]
ModuleFiles = どこそこ/pango.modules
となっています。そこで、pango.modulesというファイルをコピーしてきてから、pango.modulesの中に書かれているパスを書き換えました。
あとでgdk-pixbuf.loadersを見たら、これにも/usr/pkg以下のパスが書かれていたのですが、なぜかオリジナルのままでFirefox2は動いています。もしかするとこれも書き換える必要があるかもしれません。
☆
以上をどうやって調べたかっていうと、かなり泥臭い方法でやりました。
- ○○○というファイルが開けない、みたいなエラーメッセージがでたら、それを参考にする
- trussコマンドつきでfirefoxを実行して、どのファイルにアクセスしようとして失敗しているか、見てみる
- バイナリファイルをstringsコマンドで見て、/usr/pkgという文字列を探す。ときには、「grep -R usr/pkg」など
- ソースコードをgrepしまくって、設定変更できる環境変数がないか、探してみる
こんな泥臭い方法ですが、(FreeBSDの)portsや、pkgsrcは、ソースコードを簡単に見られるので、想像するほど難しくなく、すんなりと見つけられました。
0 件のコメント:
コメントを投稿