Masaki Yatsu
yatsu****@yatsu*****
2005年 1月 15日 (土) 20:41:13 JST
谷津です。 On 05.1.13 6:04 PM, Hiroyuki Komatsu wrote: > At Thu, 13 Jan 2005 01:10:01 +0900, > Masaki Yatsu wrote: >>>>>> Mac OS Xに入っているrubyはUNIXSocket, UNIXServerがないようです。 >>>>>> >>>>>> /usr/lib/ruby/1.6/powerpc-darwin7.0/socket.bundleのシンボルを >>>>>> 見てみましたが、*unix*が存在しませんでした……orz >>>>>> >>>>>> 自分でrubyをインストールする必要がありそうです。 >>> >>> うーん、どうしましょうね。 >>> 諦めてもらうしかないのかなあ。 >> >> Mac OS XはUNIXドメインソケットがないわけでないので、 >> rubyのsocket.cをいじって、モジュールを作ってしまえば >> なんとかなると思います。 >> MacUIMではそうしてみるつもりです。 > > なるほど。うまくいくことを願っています。 簡単でした。 ruby-1.6.8/ext/socket ディレクトリで以下を実行。 % ruby extconf.rb % make ソースはなにも変更していませんが、UNIXSocket, UNIXServer はちゃんとコンパイルされます。 (証拠) % nm socket.bundle | grep -i unix 000020bc t _open_unix 00006278 S _rb_cUNIXServer 00006274 S _rb_cUNIXSocket 000027b8 t _unix_accept 0000286c t _unix_addr 00002714 t _unix_path 000028f0 t _unix_peeraddr 0000279c t _unix_recvfrom 0000270c t _unix_s_sock_open 00002794 t _unix_svr_s_open 0000281c t _unixaddr 000020a8 t _unixsock_connect_internal socket.bundleを好きなディレクトリにコピーし、prime コマンドの先頭行でライブラリパスを指定。 #!/usr/bin/ruby -I<socket.bundleのディレクトリ> これで prime -u /tmp/prime.sock が動作しました。 # なんでMac OS Xに入ってるrubyはUNIXドメインソケットが # 無効になっているんだろう……。 --- 谷津真樹 (Masaki Yatsu) mailto:yatsu****@yatsu*****