読者です 読者をやめる 読者になる 読者になる

無限壁破り駆動開発 <colspan=∞>

テーマは北海道, オープンデータ, Web技術, HTML5, d3.js, カメラ, 韓国語, Javascript, Ruby, Python

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オプションを付与する

上記エラーを回避するためには、MacPortsmecabのヘッダの有りかをgemコマンドに教えます。

$ sudo gem install mecab -- --with-cppflags=-I/opt/local/include

MacPorts以外にもHomeBrew等でも同様の指定ができるのではないかと思われます。

参考

余談

下記のサイトなどではgemファイルそのものを改変する方法が紹介されているが、少なくとも今現在はそこまでしなくても上記オプション付与で対処できる模様です。