2013/02/19

ruby 1.9.3 の rubyinterp を有効にした最新の Vim を brew でビルドする

rbenv + brew な環境で、rubyを入れて HEAD のVimをビルドしていると
:ruby puts RUBY_VERSION
するとSEGVでVimが落ちてしまう現象が発生。
Mac標準の /usr/bin/vim だと落ちないのでどうやら自分でビルドしたのが問題みたい。
原因がbrewなのかrbenvなのかruby-buildなのかrubyなのかVimなのか分からなかったけれど一応解決したので。


環境
  • OS X Mountain Lion
  • XCode 4.6.2
  • Homebrew 0.9.4
  • gcc 4.7.2
  • rbenv 0.4.0
  • ruby-build 20130208
  • Vim  7.3.822  
  • ruby 1.9.3-p385


こちら の記事を見ると、どうやら ruby のdylibが無いのが問題の様子。
rbenv global の ruby を見ると確かに無い 。
$ ls ~/.rbenv/versions/1.9.3-p374/lib/
libruby-static.a
libyaml-0.2.dylib
libyaml.a
libyaml.dylib
libyaml.la
pkgconfig
ruby

ruby をビルドする時に オプションを指定  すると良いらしく、渡し方は こうらしい
今回は --enable-shared のみを有効化してみる。

なので
$ env CONFIGURE_OPTS="--enable-shared" rbenv install 1.9.3-p385
したけれどmakeに失敗。どうやら cc が問題らしい。

XCode 4.6 の Command Line Tools の gcc 4.2.1 じゃ make できない様子。
brew を使って gcc 4.7.2 を gcc-4.7 という名前で入れていたのでそっちを使ってみる。
Web 見てると env があるのと無いのがあるので消している方でも試す。
$ CC="gcc-4.7" CONFIGURE_OPTS="--enable-shared" rbenv install 1.9.3-p385
これだと通った。

ライブラリを見るとちゃんとdylibがある。
$ ls ~/.rbenv/versions/1.9.3-p385/lib/
libruby.1.9.1-static.a
libruby.1.9.1.dylib
libruby.1.9.dylib
libruby.dylib
libyaml-0.2.dylib
libyaml.a
libyaml.dylib
libyaml.la
pkgconfig
ruby
そっちを使うようにしてから
$ rbenv global 1.9.3-p385
 最新のVimをbrewでビルド。ちゃんと通った。
 $ brew install --HEAD vim
 そして確認
:ruby puts RUBY_VERSION
#=> 1.9.3 
動いてる。やたー。


今のところオムニ補完とかで文句も出ていない。
CONFIGURE_OPTS を自分で指定した ruby は始めて使うけれど、大丈夫かなー。
Vim の rubyinterp が 1.9系に対応してるのかとかも気になるけれど、とりあえずビルドできたのでこれで良いかな、とか。

ちなみに最初のlsが 1.9.3-p374 なのは p385 のlsを取る前にp385を消してしまって、ブログのログ用にp374で代替したからだったり。
一応p385の時点でもdylibは無かったです。

0 件のコメント:

コメントを投稿