ローカルディレクトリにmecabをインストールする方法(2017)

2017年6月27日

なんだか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

 

なんかとっても苦労しました。
最新版の不具合かもしれませんね・・・。