MacPortsで入れたmecabをRubyから使う
MacPortsからmecabを入れる
杉村様がブログで公開されている方法を参考に入れました。MacPortsから普通に入れた上に、UTF−8の辞書に差し替えます。
参考
$ sudo port install mecab $ sudo port install mecab-ipadic-utf8
$ sudo vi /opt/local/etc/mecabrc ;dicdir = /opt/local/lib/mecab/dic/sysdic ←コメントアウト dicdir = /opt/local/lib/mecab/dic/ipadic-utf8
gemパッケージ mecab のインストールする
そのままでは入らない
mecab.hのありかがわからないためエラーが起きます。
$ sudo gem install mecab Fetching: mecab-0.996.gem (100%) Building native extensions. This could take a while... ERROR: Error installing mecab: ERROR: Failed to build gem native extension. /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb checking for make... yes checking for main() in -lstdc++... yes checking for main() in -lmecab... yes checking for main() in -lstdc++... yes checking for mecab.h... yes creating Makefile make "DESTDIR=" compiling mecab_wrap.cpp mecab_wrap.cpp:1855:10: fatal error: 'mecab.h' file not found #include "mecab.h" ^ 1 error generated. make: *** [mecab_wrap.o] Error 1 Gem files will remain installed in /Library/Ruby/Gems/2.0.0/gems/mecab-0.996 for inspection. Results logged to /Library/Ruby/Gems/2.0.0/gems/mecab-0.996/ext/mecab/gem_make.out
解決方法 : CPPFLAGSオプションを付与する
上記エラーを回避するためには、MacPortsのmecabのヘッダの有りかをgemコマンドに教えます。
$ sudo gem install mecab -- --with-cppflags=-I/opt/local/include
MacPorts以外にもHomeBrew等でも同様の指定ができるのではないかと思われます。
参考
余談
下記のサイトなどではgemファイルそのものを改変する方法が紹介されているが、少なくとも今現在はそこまでしなくても上記オプション付与で対処できる模様です。