[ruby-list:26] Re: ruby install on Solaris 2.4
From:
matz@... (Yukihiro Matsumoto)
Date:
1995-12-27 01:45:04 UTC
List:
ruby-list #26
まつもと ゆきひろ@トヨタケーラムです.
In message "[ruby-list:23] ruby install on Solaris 2.4"
on 95/12/25, Tetsunori Matsubara - Nihon Sun IR <Tetsunori.Matsubara@sun.co.jp> writes:
|
|今日 ruby をインストールして見ました。当初 fj.sources で配布されたものをコ
|ンパイルしたのですが、make test で core dump してしまいました。
bugつきのを流して申し訳ないです.
|以下は Solaris2.4 でのコンパイル結果を元にしています。他のシステムには当て
|はまらないかも知れません。
|
|1. ext/*/*.so が インストールされない。
|
| make install の際に .././install-sh というコマンドが呼ばれていたが、実
| 際のコマンドは ../../install-sh に存在していたため、エラーとなった。
|
| → ext/ ディレクトリに ../install-sh に対するシンボリックリンクを張って
| 対処。本来は install script を修正すべきところかと思います。
調べてみました.どうも,パスの調整にバグがあったようです.
|2. ext/tkutil/tkutil.so が作成されない。
|
| ext/Setup に tkutil を指定していたが、なぜかコンパイルされない。他のモ
| ジュールはコンパイルされていた。
|
| → コンパイル時に PATH に wish が存在していないと、省略される事に気付く。
| which wish で wish を見えるように設定して対処。
そうなんですよ.もっとよいチェックの仕方があれば良いんですけ
ど…(wishとwish4.0とblt_wishをチェックすれば良いのかなあ).
|3. lib/*.rb が base64.rb のみインストールされる。
|
| make install 時に lib/*.rb が /usr/local/lib/ruby にインストールされる
| が、なぜか base64.rb しかインストールされない。install-sh のバグ?
|
| → Makefile を直接修正して、/usr/ucb/install を使用するように変更。
install.shの仕様がinstall(私が普段使っている方)と違うのが原
因でしょう.仕様の違いが問題にならないよう修正します.
|4. sample/dbm.rb が core dump する。
|
| make test が成功した ruby で、sample/ ディレクトリの dbm.rb を実行させ
| ると core dump してしまう。debugger で追いかけたりした結果、dlopen が実
| 行されていない事に気付く。config.log に
|
|Undefined first referenced
| symbol in file
|dlopen conftest.o (/usr/lib/libdl.so.1?)
|ld: fatal: Symbol referencing errors. No output written to conftest
|
| というエラーが出ていたので、どうも configure が dynamic load 無しと判断
| しているらしい。
|
| → configure はよくわからないので、defines.h に
|
| #define USE_DLN_DLOPEN
|
| を追加して再コンパイルしたところ、無事共有ライブラリをロードした。
そういえば,私もSolarisでコンパイルした時にdlopenを認識しま
せんでした.原因はいまだに不明ですが,マシンがあるので何とか
なると思います.これも調べてみます.
余談ですが,ELFでないLinuxでrubyを作る時には
configure --with-dln-a-out
を実行してください.
|5. socket.so のコンパイルオプションに -lnsl が抜けている。
|
| 0.95b パッチを当てた直後の socket/extconf.rb は、
|
|have_library("inet", "gethostbyname")
|have_library("nls", "gethostbyname")
|have_library("nls", "gethostbyname")
|have_library("socket", "socket")
|have_header("sys/un.h")
|if have_func("socket")
| create_makefile("socket")
|end
|
| となっているが、これは、
|
|have_library("nsl", "gethostbyname")
|have_library("socket", "socket")
|have_header("sys/un.h")
|if have_func("socket")
| create_makefile("socket")
|end
|
| であるべき。上記のように変更後、再コンパイルして clnt.rb/svr.rb が動作
| する事を確認しました。
どうやら
have_library("inet", "gethostbyname")
が必要なマシンもあるようです(良く知らない).nlsを2回呼んで
いるのは意味が無いですね.このように変更しないとなにかエラー
になりました?
have_library("inet", "gethostbyname")
have_library("nls", "gethostbyname")
have_library("socket", "socket")
have_header("sys/un.h")
if have_func("socket")
create_makefile("socket")
end
これで問題がありますか?
|6. Tk が動かない。(未解決)
|
| sample/tkhello.rb を起動しても何も表示されない。ps でプロセスを見てみる
| と wish -n /dev/null というプロセスがあるので、何かをしようとしていると
| は思うのですが、何か足りないんでしょうか?皆様のところでは Tk うまく動
| いていますか?
/dev/nullですか? なんだろうな.うちのSolarisマシンでテストし
てみます.
|とりあえず Tk 以外の機能は動くようになりました。これから時間を見つけていろ
|いろ試して見ようと思います。ゆくゆくは oraperl みたいな RDBMS の ext を作
|れたら楽しそうだなとか、考えています。
それ面白そうですね.情報提供はいくらでもします.
まつもと ゆきひろ /:|)