なんだかmecabのインストールが上手くできなかったのが気持ち悪かったので
vineLinuxでソースコンパイルを試してみました。
インストール先はホームディレクトリにしてみました。さくらインターネットで応用が効くように、です。
mecab(0.996)のソースからのインストール
ここのSourceの
mecab-0.996.tar.gz:ダウンロード
からダウンロードします。
SorceForgeもあるのですが、このソースが見つからないです。どうしてなんでしょうか・・・?
$ tar -zxvf mecab-0.996.tar.gz
$ cd mecab-0.996
UTF8の指定はeucになってしまう不具合があるようでこうなっています。
$ ./configure --prefix=$HOME/local --with-charset=utf8
$ make
$ make install
インストールはあっさり成功しましたが、パスが通ってないので実行できません。
とりあえず以下にて設定します。
export PATH=/home/XXXX/local/bin:$PATH
export LD_LIBRARY_PATH=/home/XXXX/local/lib
これで一応実行できますが、ルートディレクトリのmecabrcを探しに行ってしまいます。
param.cpp(69) [ifs] no such file or directory: /usr/local/etc/mecabrc
どうも仕様的にそうなっているようです。
環境変数を設定すると任意の場所を探しに行ってくれるようになります。
export MECABRC=/home/XXXX/local/etc/mecabrc
実行してみます。
$ mecab
param.cpp(69) [ifs] no such file or directory: /home/XXXX/local/lib/mecab/dic/ipadic/dicrc
やっと辞書がないよ、って言うエラーになりました。
辞書をインストール
2011年であんまり新しくないですが、最新です。
https://ja.osdn.net/projects/naist-jdic/releases/53500
naist-jdic (for MeCab) mecab-naist-jdic-0.6.3b-20111013
$ tar -zxvf mecab-naist-jdic-0.6.3b-20111013.tar.gz
$ cd mecab-naist-jdic-0.6.3b-20111013
インストールしましょう。
$ ./configure --prefix=$HOME/local --with-charset=utf8 --enable-utf8-only
$ make
/home/XXXX/local/libexec/mecab/mecab-dict-index -d . -o . -f EUC-JP -t utf8
...
done!
To enable dictionary, rewrite /home/XXXX/local/etc/mecabrc as "dicdir = /home/XXXX/local/lib/mecab/dic/naist-jdic"
makeでEUCがなんちゃらと出ているのが少し気になりますね。EUCになってしまっているかも。
→ EUCになっちゃってます。
$ nkf -w --overwrite *.csv
$ nkf -w --overwrite *.def
してからインストールします。
dicdirも指定することができます。
./configure --with-charset=utf8 --with-dicdir=$HOME/local/lib/mecab/dic/ipadic-utf8
ここからがうまく行きません。
$ make install
make[1]: ディレクトリ `/home/XXXX/mecab-naist-jdic-0.6.3b-20111013' に入ります
make install-exec-hook
make[2]: ディレクトリ `/home/XXXX/mecab-naist-jdic-0.6.3b-20111013' に入ります
if ! [ -d /etc/mecab/dic/naist-jdic ]; \
then mkdir -p /etc/mecab/dic/naist-jdic; \
fi
mkdir: ディレクトリ `/etc/mecab' を作成できません: 許可がありません
make[2]: *** [install-exec-hook] エラー 1
make[2]: ディレクトリ `/home/XXXX/mecab-naist-jdic-0.6.3b-20111013' から出ます
make[1]: *** [install-exec-am] エラー 2
make[1]: ディレクトリ `/home/XXXX/mecab-naist-jdic-0.6.3b-20111013' から出ます
make: *** [install-am] エラー 2
”`/etc/mecab’ を作成できません: 許可がありません”
とありますように、またルートディレクトリにアクセスしようとしています。
あまりできが良くないですね・・・。
その為オプションDESTDIRを追加してディレクトリを指定します。
$ make DESTDIR=$HOME/local install
make[1]: ディレクトリ `/home/XXXX/mecab-naist-jdic-0.6.3b-20111013' に入ります
make install-exec-hook
make[2]: ディレクトリ `/home/XXXX/mecab-naist-jdic-0.6.3b-20111013' に入ります
if ! [ -d /home/XXXX/local/etc/mecab/dic/naist-jdic ]; \
then mkdir -p /home/XXXX/local/etc/mecab/dic/naist-jdic; \
fi
if ! [ -f /home/XXXX/local/etc/mecab/dic/naist-jdic/dicrc ]; \
then ln -s /home/XXXX/local/lib/mecab/dic/naist-jdic/dicrc /home/XXXX/local/etc/mecab/dic/naist-jdic/dicrc; \
fi
make[2]: ディレクトリ `/home/XXXX/mecab-naist-jdic-0.6.3b-20111013' から出ます
test -z "/home/XXXX/local/lib/mecab/dic/naist-jdic" || /bin/mkdir -p "/home/XXXX/local/home/XXXX/local/lib/mecab/dic/naist-jdic"
/usr/bin/install -c -m 644 matrix.bin char.bin sys.dic unk.dic naist-jdic.csv char.def feature.def left-id.def matrix.def pos-id.def rewrite.def right-id.def unk.def dicrc '/home/XXXX/local/home/XXXX/local/lib/mecab/dic/naist-jdic'
make[1]: ディレクトリ `/home/XXXX/mecab-naist-jdic-0.6.3b-20111013' から出ます
なんとかインストールは成功した”みたい”です。
何故か”/home/XXXX/local/home/XXXX/local/lib/mecab/dic/naist-jdic”という深い場所にインストールされます。
シンボリックリンクもおかしいので、つながっていません。
$ cd /home/XXXX/local/home/XXXX/local/lib/mecab/dic/naist-jdic
$ ls
char.bin dicrc left-id.def matrix.def pos-id.def right-id.def unk.def
char.def feature.def matrix.bin naist-jdic.csv rewrite.def sys.dic unk.dic
必要かどうかわからないのですが、dicrcを編集しておきます。
;config-charset = EUC-JP
config-charset = UTF-8
そして、
param.cpp(69) [ifs] no such file or directory: /home/XXXX/local/lib/mecab/dic/ipadic/dicrc
ということですから
/home/XXXX/local/lib/mecab/dic/ipadic
で
/home/XXXX/local/home/XXXX/local/lib/mecab/dic/naist-jdic
にアクセスするようにリンクを張ります。
ln -s /home/XXXX/local/home/XXXX/local/lib/mecab/dic/naist-jdic /home/XXXX/local/lib/mecab/dic/ipadic
ようやく実行できるようになりました!
$ mecab
嫌よ嫌よも好きのうち。んなわけあるか。
嫌 名詞,形容動詞語幹,*,*,*,*,嫌,イヤ,イヤ,,
よ 助詞,終助詞,*,*,*,*,よ,ヨ,ヨ,,
嫌 名詞,形容動詞語幹,*,*,*,*,嫌,イヤ,イヤ,,
よも 副詞,一般,*,*,*,*,よも,ヨモ,ヨモ,,
好き 名詞,形容動詞語幹,*,*,*,*,好き,スキ,スキ,,
の 助詞,連体化,*,*,*,*,の,ノ,ノ,,
うち 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ,,
。 記号,句点,*,*,*,*,。,。,。,,
ん 名詞,非自立,一般,*,*,*,ん,ン,ン,,
な 助動詞,*,*,*,特殊・ダ,体言接続,だ,ナ,ナ,,
わけ 名詞,非自立,一般,*,*,*,わけ,ワケ,ワケ,,
ある 動詞,自立,*,*,五段・ラ行,基本形,ある,アル,アル,ある/在る/有る,
か 助詞,副助詞/並立助詞/終助詞,*,*,*,*,か,カ,カ,,
。 記号,句点,*,*,*,*,。,。,。,,
EOS
やっとインストールできました!
ライブラリは?
mecab.hを使ってCプログラムをコンパイルしようとするとエラーになってしまうことから、
やはりうまく参照はできていないようです。
$ cc mecab.c
mecab.c:1:19: 致命的エラー: mecab.h: そのようなファイルやディレクトリはありません
#include
^
コンパイルを停止しました。
このように明示的にすれば通ります。
$ cc -I local/include mecab.c
環境変数で指定しても良いようです。
export C_INCLUDE_PATH=/home/XXXX/local/include
export CPLUS_INCLUDE_PATH=$C_INCLUDE_PATH
なんかとっても苦労しました。
最新版の不具合かもしれませんね・・・。