Gen Otsuji
gen_otsuj****@yahoo*****
2004年 1月 21日 (水) 16:18:39 JST
尾辻です。 > ruby と ruby_r という 2つのコマンドがあって > /usr/local/bin/ruby と /usr/local/bin/ruby_r のように > 共存しているのか、ruby と ruby_r の 2つのパッケージがあって > ruby コマンドの実体はどちらのパッケージが提供する実体への > エイリアスなのか、どちらでしょうか。 前者の方です。rubyとruby_rは共存しています。別の実体です。 libc_r.soを使う方がruby_rです。 portsの方で/usr/local/bin/primeの一行目のrubyをruby_rにする処理を していました。 ですから4.xではruby_rを使うようにすればいいのですが、 5.xのどこからかlibmapというlibxxx.so.xへのリンクを を動的に変更できるシステムができているのでそれを試してみました。 /etc/libmap.confに次の2行を書いて [/usr/local/lib/ruby/site_ruby/1.6/i386-freebsd5/sary.so] libc_r.so.5 libthr.so.1 こうするとlibc_rを使うところをlibthrを使ってくれます。 そしてruby_rでなくrubyで ----------test.rb---------- #!/usr/local/bin/ruby require 'sary' while line = $stdin.gets do p line end --------------------------- % ./test.rb これを試したところ、libcとlibc_rとの相性問題が解消されて、 libthrのスレッドライブラリがうまく使われたようでエラーが出なくなりました。 もちろんlibmapへの記述を消すとエラーになりました。 ということでこれからのFreeBSD-5.xではruby_rを使わずにrubyを使えば いいということになりました。 ------ おつじ