MeCab-ruby on Lion

February 22nd, 2012 by naoya | Filed under day.

過去に Mecab-ruby on OSX 10.6 という記事を書いたけれど、Lion でもかなりはまったのでメモ。

環境は、Mecab バージョン 0.993 を Lion OSX 10.7.3。
mecab と mecab-ipadic は、homebrew でインストール済み、Ruby は RVM で REE 2012.01 をインストール済みとします。


$ rvm ree
$ wget "http://mecab.googlecode.com/files/mecab-ruby-0.993.tar.gz"
$ tar zxf mecab-ruby-0.993.tar.gz
$ cd mecab-ruby-0.993
$ ruby extconf.rb
checking for main() in -lmecab... no
checking for main() in -lstdc++... yes
checking for mecab.h... yes
creating Makefile
$ make
cc -dynamic -bundle -undefined suppress -flat_namespace -o MeCab.bundle MeCab_wrap.o -L. -L/Users/n0ts/.rvm/rubies/ree-1.8.7-2012.01/lib -L. -lstdc++ -L/opt/local/lib -ldl -lobjc
ld: warning: directory not found for option '-L/opt/local/lib'
$ ruby test.rb
0.993
dyld: lazy symbol binding failed: Symbol not found: __ZN5MeCab11createModelEPKc
Referenced from: /Users/Shared/w/prj/src/mecab-ruby-0.993/MeCab.bundle
Expected in: flat namespace

dyld: Symbol not found: __ZN5MeCab11createModelEPKc
Referenced from: /Users/Shared/w/prj/src/mecab-ruby-0.993/MeCab.bundle
Expected in: flat namespace

となって MeCab を使うことができません。原因は、察してのとおり -lmecab が no になっているからですので、extconf.rb を修正する必要があります。

もっとエレガントな方法がありそうですが、次のように修正しました。

--- extconf.rb-org 2012-02-22 16:44:15.000000000 +0900
+++ extconf.rb 2012-02-22 17:01:04.000000000 +0900
@@ -3,6 +3,7 @@
mecab_config = with_config('mecab-config', 'mecab-config')
use_mecab_config = enable_config('mecab-config')

+$LIBS += '-L/var/homebrew/Cellar/mecab/0.993/lib'
`mecab-config --libs-only-l`.chomp.split.each { | lib |
have_library(lib)
}

/var/homebrew とは、homebrew のインストール先のパスになりますので、環境に応じて書き換えてください。

毎度、MeCab を OSX 上で使うときは、かなりはまりますね。。。

Tags:

Leave a Reply