Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

OSXでrbenv使ってて、vimをソースからビルドしてインストールすると、SEGVが発生してvimが落ちてしまう

$
0
0

vimを起動するとこういうエラーが出る。

% vim
dyld: lazy symbol binding failed: Symbol not found: _rb_encdb_declare
  Referenced from: /Users/kameda/.rbenv/versions/1.9.3-p392/lib/ruby/1.9.1/x86_64-darwin12.2.0/enc/encdb.bundle
  Expected in: flat namespace

dyld: Symbol not found: _rb_encdb_declare
  Referenced from: /Users/kameda/.rbenv/versions/1.9.3-p392/lib/ruby/1.9.1/x86_64-darwin12.2.0/enc/encdb.bundle
  Expected in: flat namespace

Vim: Caught deadly signal SEGV
Vim: Finished.
zsh: segmentation fault  vim

以下の条件が重なった時に、vim起動時にSEGVで落ちる。

  • vimのconfigureで --enable-ruby-interpを指定している
  • rubyのdylibがない。(rubyビルド時に、--enable-sharedを指定してない)

rubyのdylibが無いのが原因らしい。
http://attonblog.blogspot.jp/2013/02/ruby-193-rubyinterp-vim-brew.html

これを解消するため、rubyを--enable-sharedをつけてビルドしなおさないといけない。
また、ruby2.0からはrbenvの環境変数がCONFIGURE_OPTSからRUBY_CONFIGURE_OPTSに変わった。
ruby1.9.3ならCONFIGURE_OPTSを使う。
http://attonblog.blogspot.jp/2013/02/rbenv-enable-shared-ruby-200-p0.html

以下の手順で ruby と vim をビルドし直す。

まず ruby-build を使って ruby をインストール。

RUBY_CONFIGURE_OPTS='--enable-shared' rbenv install 2.0.0-p247
rbenv global 2.0.0-p247

あとは普通にvimをソースからインストール。

hg clone https://vim.googlecode.com/hg/ vim
cd vim
./configure --with-features-huge --enable-perlinterp --enable-pythoninterp --enable-rubyinterp
make && make install

--prefixを指定してないと、/usr/local/bin に vim がインストールされる。
OSXのデフォルトでは $PATHが /usr/local/bin より先に /usr/bin を見に行くので、/usr/local/bin を先に見に行くために、.bashrc か .zshrc などで $PATHの順番を変えてやる必要があります。

.zshrc
export PATH=/usr/local/bin:$PATH

以上です。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>