MacOS10.4.4でRuby-1.8.4をソースコードからコンパイルした。単純に
./configure make make test make intall
とすれば、特にエラーもなくことが済んだのだが、irbを使おうとするとエラーが出た。
$ irb dyld: NSLinkModule() error dyld: Symbol not found: _rl_filename_completion_function Referenced from: /usr/local/lib/ruby/1.8/powerpc-darwin8.4.0/readline.bundle Expected in: flat namespace
readlineのライブラリに_rl_filename_completion_functionという名前のシンボルがないという意味だろうか。よくわからないのでGoogleで検索してまわったところ、下記サイトにRubyのインストール方法が書かれていた。
http://hivelogic.com/articles/2005/12/01/ruby_rails_lighttpd_mysql_tiger
これによるとreadlineのバージョン5.1をインストールする必要があるとのこと。このページにある通りにしたらirbも正しく動作した。
実行した手順を記す:
curl -O ftp://ftp.gnu.org/gnu/readline/readline-5.1.tar.gz tar xzvf readline-5.1.tar.gz cd readline-5.1 ./configure --prefix=/usr/local make sudo make install cd .. curl -O ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.4.tar.gz tar xzvf ruby-1.8.4.tar.gz cd ruby-1.8.4 ./configure --prefix=/usr/local --with-readline-dir=/usr/local make sudo make install cd ..
今度はirbもちゃんと動作した。ありがたい。
そもそもRubyをわざわざソースからコンパイルしようと思ったのはRailsを使っていて
$ ruby script/generate scaffold Hoge Mage
を実行したときに途中で処理が止まってしまうという問題があったからなのだが、今回の再インストールでそれも解消された。なお、Rubyに加えてRubyGemsとRailsもインストールしてます。