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 なんてあるんだーベルリン(便利)。

関連するかもエントリー

macports で並列ビルドオプションを有効に
macports で並列ビルドオプションを有効に/opt/local/etc/macports/macports.conf の buildmakejobs を 0 もしくは使いたいジョブ数にすることで利用できます。buildmakejobs 4最近のマシンは2-12スレッドが使え...
macports で並列ビルドオプションを有効に/opt/local/etc/macports/macports.conf の buildm...
.rvmrc.local
.rvmrc.localプロジェクトを特定の Ruby のバージョンで開発したいとき、.rvmrc はバージョン管理システムに突っ込みたい所だけど、エンジニアが各々細かい設定を追加したいとき、.rvmrc を以下のように書いておくと、.rvmrc と同一階層にある .rvmrc....
.rvmrc.localプロジェクトを特定の Ruby のバージョンで開発したいとき、.rvmrc はバージョン管理システムに突っ込みたい所...