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 専用のディレクトリ下におさめる様にして、あれこれ独立しておいておくべきなんですかね…?


コメントする