REE 1.8.7p174 を Snow Leopard にインストール

irb で readline.bundle が _system_free で Symbol not found がどうこうとか。

インストール(コンパイル)は、installer で Bus error になったので、ドキュメントにある手作業コンパイルでやりました。
Ruby Enterprise Edition Features Guide

$ wget http://rubyforge.org/frs/download.php/64475/ruby-enterprise-1.8.7-20090928.tar.gz
$ tar xvzf ruby-enterprise-1.8.7-20090928.tar.gz
$ PREFIX=/usr/local
$ cd ruby-enterprise-1.8.7-20090928/source/distro/google-perftools-*
$ ./configure --prefix=$PREFIX --disable-dependency-tracking
$ make libtcmalloc_minimal.la
#sudo mkdir -p $PREFIX/lib
#sudo rm -f $PREFIX/lib/libtcmalloc_minimal*.so*
#sudo cp -Rpf .libs/libtcmalloc_minimal*.bundle* $PREFIX/lib/
$ cd ../..
$ ./configure --prefix=$PREFIX --enable-shared --enable-pthread
$ gcc -dynamiclib system_allocator.c -install_name @rpath/libsystem_allocator.dylib -o libsystem_allocator.dylib
$ sudo install libsystem_allocator.dylib $PREFIX/lib/
$ make PRELIBS="-Wl,-rpath,$PREFIX/lib -L$PREFIX/lib -ltcmalloc_minimal"
$ sudo make install

# 始まりの行は、".libs/libtcmalloc_minimal*.bundle*"が見つからず実行してません。ここはコンパイルに失敗したら省略しとけ的に解釈して飛ばしました。

ruby で Ruby スクリプトファイルを実行する事はできましたが、irb が readline.bundle がらみで終了してしまいます。

irb(main):001:0> puts 'hoge'
dyld: lazy symbol binding failed: Symbol not found: _system_free
  Referenced from: /usr/local/lib/ruby/1.8/i686-darwin10.0.0/readline.bundle
  Expected in: flat namespace

dyld: Symbol not found: _system_free
  Referenced from: /usr/local/lib/ruby/1.8/i686-darwin10.0.0/readline.bundle
  Expected in: flat namespace

[1]    54039 trace trap  /usr/local/bin/irb

ひとまず、Realine を疑って /usr/local にインストール。

$ wget ftp://ftp.gnu.org/gnu/readline/readline-6.0.tar.gz
$ tar xvzf readline-6.0.tar.gz
$ cd readline-6.0
$ ./configure --prefix=/usr/local
$ make
$ sudo make install

REE を改めてコンパイル。configure から make までの間はよく理解していません。

$ cd ~/tmp/ruby-enterprise-1.8.7-20090928/source
$ make clean
$ ./configure --prefix=$PREFIX --enable-shared --enable-pthread --with-readline-dir=/usr/local
$ gcc -dynamiclib system_allocator.c -install_name @rpath/libsystem_allocator.dylib -o libsystem_allocator.dylib
$ sudo install libsystem_allocator.dylib $PREFIX/lib/
# Makefile の LIBS 行の修正
$ make PRELIBS="-Wl,-rpath,$PREFIX/lib -L$PREFIX/lib -ltcmalloc_minimal"

残念ながら、今度は make で Bus error になりました。configure に --with-readline-dir を与えてみましたが、unrecognized という警告が出てしまい、確認すると configure のオプションに --with-readline-dir は見当たりません。参考記事の通り、installer を使う事にしました。
Snow LeopardにRuby Enterprise Editionを入れる - おもしろWEBサービス開発日記

$ cd ~/tmp/ruby-enterprise-1.8.7-20090928
$ sudo ./installer -a /usr/local --no-tcmalloc -c --with-readline-dir=/usr/local -c --enable-shared -c --enable-pthread
$ /usr/local/bin/irb
irb(main):001:0> puts 'hoge'
hoge
=> nil
irb(main):002:0> 

という訳で、 irb も無事動きました。

ほか、gem や rails および passenger についてはまだ試してません。


ひょっとして、インストールは REE 専用のディレクトリ下におさめる様にして、あれこれ独立しておいておくべきなんですかね…?

プロフィール

このブログ記事について

このページは、koshigoeが2009年10月 3日 03:20に書いたブログ記事です。

ひとつ前のブログ記事は「iMac 買った。なんか Snow Leopard だった」です。

次のブログ記事は「派手に Class.new(ActiveRecord::Base) しまくってメモリ大量消費」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。