RVMのRuby環境にreadline,openssl,zlibなどのライブラリを追加インストールする
現象
RVMで構築した環境でHerokuを起動させようとしたのだが、以下のようなエラーが発生。
$ heroku create redmine_hands_on /home/hoge/.rvm/rubies/ruby-1.8.7-p302/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- readline (LoadError)
どうやらreadlineライブラリがRVM環境のパスに存在しないことが原因ぽい。
以前opensslライブラリでも同様の現象が発生したが、その時は以下のようにRVMの環境の構築し直しという面倒くさい対応を行った。
$ rvm remove 1.8.7 $ rvm install 1.8.7 --with-openssl-dir=$HOME/.rvm/usr. → gemなどで環境の再構築を実施
解決方法
もう一度環境構築し直すのは流石にウンザリするので回避できないか調べてみた。
結果、以下の手順で環境の再構築無しにRVM環境に追加ライブラリのパスを通すことができる。
1. 「rvm pkg install」コマンドで各ライブラリ追加 ※2011/8/9 最新のRVMで引数が「package → pkg」 に変更されているので注意。
# readline追加 $ rvm pkg install readline # openssl追加 $ rvm pkg install openssl # zlib追加 $ rvm pkg install zlib # 旧RVMでは以下で実行 $ rvm package install readline
2. -Cオプション&各ライブラリのパスを指定して再コンパイルする。
# 入れたライブラリを指定して再度コンパイル $ rvm install 1.8.7 -C --with-openssl-dir=$HOME/.rvm/usr --with-readline-dir=$HOME/.rvm/usr --with-zlib-dir=$HOME/.rvm/usr
# 2012/2/29 追記 最新のrvmでは以下コマンドで再コンパイルする必要があった。 $ rvm reinstall 1.8.7 --with-openssl-dir=$HOME/.rvm/usr --with-readline-dir=$HOME/.rvm/usr --with-zlib-dir=$HOME/.rvm/usr
上記でも直らない場合 2012/2/29 追記
公式サイトで以下の手順が載っていて試したらreadlineエラーが解消された。
参考までに。
http://beginrescueend.com/packages/readline/
$ rm -rf $rvm_path/usr $ rvm requirements $ rvm reinstall 1.8.7