ぱろっと・すたじお

技術メモなどをまったりと / my site : http://parrot-studio.com/

Homebrew+RVMでreadline/iconvを使う

以前書いたRVMの記事は、その後いろいろわかったことを追記していって、
結構な分量になってます


今さらRVMの使い方をまとめてみる - どっかのBlogの前置きのような


今回のもそこに追記しようと思ったのですが、
他の要因も絡むので、別記事にしてみます...φ(・ω・`)



<追記@2011/07/19>
コメントでいただいたように、RVM側で独自の管理をさせた方が、
Homebrewに左右されないので妥当と思われます


https://rvm.beginrescueend.com/packages/readline/
https://rvm.beginrescueend.com/packages/iconv/


これをふまえてあらためて手順を書いておきます

rvm pkg install readline
rvm pkg install iconv
rvm install 1.9.2 --with-readline-dir=$rvm_path/usr \
  --with-iconv-dir=$rvm_path/usr


確認方法等は同じです


</追記>




最近、Macで開発している人に人気なのが、
「Homebrew」というパッケージマネージャーです


Homebrew — MacPorts driving you to drink? Try Homebrew!


これの利点は、「OSのシステムに存在するライブラリをそのまま利用する」ことと、
「パッケージの管理スクリプトをRubyで書ける」ということです


特に前者は重要で、Macportsは「/opt/local」で全部完結するよう、
すでにOSにあるものもインストールするので、
インストールやメンテナンスにとても時間がかかります(´-ω-)


私も乗り換えてみましたが、MacportsにあるものはたいていHomebrewにもあるので、
あまり問題にならない感じです


ただ・・・これにRVMが絡むと面倒なことにΣ(・ω・ノ)ノ


以前の記事で書いたように、インストール時にreadlineを組み込まないと、
irbで日本語が使えないため、Macの場合はわざわざオプションが必要でした


その状態でMacportsを消してしまえば、リンクが切れてしまうため、
irbどころかrubyそのものの動作も怪しくΣ(゚Д゚)ガーン


そこで、どう対処すべきかと悩んだところ、
そのものズバリのページを見つけました


http://nruth.tumblr.com/post/858778765/fixing-irb-readline-with-snow-leopard-homebrew-rvm


これを参考に、一通り試してたどり着いたのがこれです(´・ω・)っ

brew install readline # readlineのインストール
brew link readline    # readlineをリンクPATHへ これをやらないとダメだった
brew install iconv    # ruby実行でこれのエラーが出たので同様に
brew link iconv

rvm install 1.9.2 -C "--with-opt-dir=/usr/local"


ポイントは"brew link"コマンドです
これで"/usr/local/lib"にライブラリへのリンクが作成されるので、
後はMacportsと同じようにPATHを指定すればOK・・・と


正しくインストールされたかは、以下のようにすれば確認できます

$ irb
irb> p 'あ' # readlineがリンクされていないと、そもそも入力不能
irb> require 'iconv' # iconvが組み込まれていればエラーにならない


わりと詰まりやすいと思うので、参考にしてくださいね(`・ω・´)ノ