A Day in the Life

Mac + macports + mecab な mecab-ruby が segmentation fault で落ちる対策

Mac + macports + mecab な mecab-ruby が segmentation fault で落ちる対策

ググってもセグフォで落ちてる人は見かけるも対策が書かれてるところが一件も無かったのでメモ残します。具体的に発生する環境が

  • mac
  • macports の mecab 利用
  • macports 以外(/opt/local にパスがある) ruby を使ってmecab-ruby の利用

な環境で発生する。これは mecab-ruby の extconf.rb が macports の mecab(mecab-config なのかな)だと適切なライブラリパスが出力されないためっぽいので本来は extconf.rb をちゃんと動くようにしてパッチ送るべきだけど、適切な書き方が解らなかったのでパッチ送れず…

対策は、extconf.rb 実行時にきちんと

ruby extconf.rb --with-opt-dir=/opt/local

として明示的に /opt/local を指すと直る。bundler 利用時には

bundle config build.mecab-ruby --with-opt-dir=/opt/local

で設定する。bundle config build.xxx なんてあるんだーベルリン(便利)。