FreeBSDへのMeCab-Rubyのインストールでハマる

MeCab - Browse Files at SourceForge.net
から,次のファイルをダウンロードします.
mecab-0.98.tar.gz
mecab-ipadic-2.7.0-20070801.tar.gz
mecab-ruby-0.98.tar.gz
まず,MeCabのインストール.

# ./configure --enable-utf8-only --with-charset=utf8
./.libs/libmecab.so: undefined reference to `libiconv_open'
./.libs/libmecab.so: undefined reference to `libiconv_close'
./.libs/libmecab.so: undefined reference to `libiconv'

*** Error code 1

libiconvを独自にインストールして/usr/local以下にあるので,認識されなかったようです.
環境変数をセットし直して出直しです.

# setenv CFLAGS "-L/usr/local/lib"
# setenv CPPFLAGS "-I/usr/local/include"
# setenv LDFLAGS "-liconv"
# make clean; make; make install
# mecab
tagger.cpp(151) [load_dictionary_resource(param)] param.cpp(71) [ifs] no such file or directory: /usr/local/lib/mecab/dic/ipadic/dicrc

おっと.ipadicをインストールし忘れていました.

# tar xvf mecab-ipadic-2.7.0-20070801.tar.gz
# cd  mecab-ipadic-2.7.0-20070801
# ./configure --with-charset=utf-8;make;make install

再びmecabをテストします.

# mecab -D
filename:       /usr/local/lib/mecab/dic/ipadic/sys.dic
version:        102
charset:        utf-8
type:   0
size:   392126
left size:      1316
right size:     1316
# mecab
すもももももももものうち
すもも  名詞,一般,*,*,*,*,すもも,スモモ,スモモ
も      助詞,係助詞,*,*,*,*,も,モ,モ
もも    名詞,一般,*,*,*,*,もも,モモ,モモ
も      助詞,係助詞,*,*,*,*,も,モ,モ
もも    名詞,一般,*,*,*,*,もも,モモ,モモ
の      助詞,連体化,*,*,*,*,の,ノ,ノ
うち    名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
EOS

次にMeCab-Rubyのインストール

# ruby extconf.rb;make;make install

# ruby test.rb
/libexec/ld-elf.so.1: /usr/local/lib/ruby/site_ruby/1.8/i386-freebsd7/MeCab.so: Undefined symbol "_ZN5MeCab12createTaggerEPKc"

エラーですね...調べてみましょう.

# nm MeCab.so 
(中略)
00001e60 t _Z34MeCab_Tagger_parseToString__SWIG_0PN5MeCab6TaggerEPKcj
         U _ZN5MeCab12createTaggerEPKc
(後略)

SWIG?!
そう,FreeBSDにはデフォルトではSWIGが入っていないので,最初っから入れ直しなのです.

SWIGをインストール
Download SWIG

# wget http://prdownloads.sourceforge.net/swig/swig-1.3.40.tar.gz
# tar xvf swig-1.3.40.tar.gz
# cd swig-1.3.40
# ./configure; make; make install

そしてMeCabMeCab-rubyもmake cleanしてからmake;make installをやり直します.これでMeCab-Rubyruby test.rbが通りました.