Xcode 4.3環境にRVMでREEをインストールする

LionのXcode 4.3をインストールした環境で、RVMを使用してREEをインスト—ルしようとしたところ、以下のようなエラーが出ました。

ERROR: Error running ‘./installer -a /Users/annotunzdy/.rvm/rubies/ree-1.8.7-2011.03 –no-tcmalloc –dont-install-useful-gems ‘, please read /Users/annotunzdy/.rvm/log/ree-1.8.7-2011.03/install.log
ERROR: There has been an error while trying to run the ree installer. Halting the installation.

ログファイルを見ると、

./ext/purelib.rb:2: [BUG] Segmentation fault gcc 4.7

と書かれており、どうやらビルドに失敗しているようでした。

調べてみると、Xcode 4.3からLLVMのgccのみがインストールされるようになったのですが、
REEがLLVMに対応しておらず、LLVMでは正常にビルドできないのが原因でした。
そこで以下のように、MacPortsから非LLVMのGCCをインストールした上で、
MacPortsのGCCを使用するようにすることで回避できました。

sudo port install gcc47 +universal
export CC=/opt/local/bin/gcc-mp-4.7
rvm install ree

LLVMへの早期対応を望みます。。

2012/3/23 追記

RVMを最新にアップグレードしたところ、
前回の記事のCC変数の設定だけでは、REEをインストールできなくなりました。
次の手順でうまくいきました。

  • gcc4.7をインストールしていない場合はインストール
sudo port install gcc47 +universal
  • 必須パッケージをインストール
rvm pkg install readline
rvm pkg install iconv
rvm pkg install zlib
rvm pkg install openssl
rvm pkg install autoconf
  • 環境変数を設定
export export DYLD_LIBRARY_PATH=$HOME/.rvm/usr/lib:/opt/local/lib:$LIBPATH:$DYLD_LIBRARY_PATH
export C_INCLUDE_PATH=$HOME/.rvm/usr/include:/opt/local/include:/usr/include:$C_INCLUDE_PATH
export CPLUS_INCLUDE_PATH=$C_INCLUDE_PATH:$CPLUS_INCLUDE_PATH
export CC=/opt/local/bin/gcc-mp-4.7
export CXX=/opt/local/bin/g++-mp-4.7
export PKG_CONFIG_PATH=/opt/local/lib/pkgconfig:$PKG_CONFIG_PATH
  • REEのインストール
rvm install ree --with-openssl-dir=$HOME/.rvm/usr --with-readline-dir=$HOME/.rvm/usr

Mac OS X標準のcurlのバージョンが古いため、一部gemはインストールされませんでしたが、
REE自体のインストールはこれで無事成功しました。
また、1.8.7のインストールも失敗していましたが、同様の設定でインストールできました。

2012/3/23 再追記

Rubyに、GCC 4.7でビルドした場合、timeout.rbが正常に動作しないバグがあるようです。
Ruby 1.9.3では修正されたようなのですが、Ruby 1.8.7/REEではまだ修正されていません。
このエラーの影響で、一部gemがインストールできませんでした。
ここからGCC 4.2のインストーラーをダウンロードして、GCC 4.2でビルドしたほうがより良さそうです。

Ruby on RailsによるWEBシステム開発、Android/iPhoneアプリ開発、電子書籍配信のことならお任せください この記事を書いた人と働こう! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

BPSアドベントカレンダー

週刊Railsウォッチ

インフラ

BigBinary記事より

ActiveSupport探訪シリーズ