[ruby-list:23] ruby install on Solaris 2.4

From: Tetsunori Matsubara - Nihon Sun IR <Tetsunori.Matsubara@...>
Date: 1995-12-25 07:43:06 UTC
List: ruby-list #23
松原@日本サンです。

今日 ruby をインストールして見ました。当初 fj.sources で配布されたものをコ
ンパイルしたのですが、make test で core dump してしまいました。

そこで ruby-0.95-0.95b-diff を ftp してきて、patch を当てたところ、問題無
く make test は通りました。しかし、それからもいろいろ問題が起きましたので、
起きた現象と私のとった対処方法を以下にまとめます。今後のリリースの参考にな
れば幸いです。

以下は 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 を見えるように設定して対処。

3. lib/*.rb が base64.rb のみインストールされる。

   make install 時に lib/*.rb が /usr/local/lib/ruby にインストールされる
   が、なぜか base64.rb しかインストールされない。install-sh のバグ?

   → Makefile を直接修正して、/usr/ucb/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

      を追加して再コンパイルしたところ、無事共有ライブラリをロードした。

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 が動作
   する事を確認しました。

6. Tk が動かない。(未解決)

   sample/tkhello.rb を起動しても何も表示されない。ps でプロセスを見てみる
   と wish -n /dev/null というプロセスがあるので、何かをしようとしていると
   は思うのですが、何か足りないんでしょうか?皆様のところでは Tk うまく動
   いていますか?


とりあえず Tk 以外の機能は動くようになりました。これから時間を見つけていろ
いろ試して見ようと思います。ゆくゆくは oraperl みたいな RDBMS の ext を作
れたら楽しそうだなとか、考えています。

−
    松原 哲範
    teppan@sun.co.jp
    Nihon Sun Microsystems K.K. - Information Resources

In This Thread

Prev Next