Rubyをソースコードからコンパイルする

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に加えてRubyGemsRailsもインストールしてます。