Harukaのnote

Linuxやプログラミング,写真,旅行等の記録帳

MeCabインストール時の「make: /usr/local/libexec/mecab/mecab-dict-index: コマンドが見つかりませんでした」エラー

MeCabのインストールをUbuntu以外のLinuxOpenSUSE)から行う場合、こちらのインストール方法を参考にソースからコンパイルする必要があると思います。
MeCabのインストールはうまく行くのですが、ipadicのインストールの際にエラーが発生しました。
バージョンも数年前から変わっていないと思うのですが、今更初めてのエラーが出ましたので対策を残しておきます。

エラー内容

/usr/local/libexec/mecab/mecab-dict-index -d . -o . -f EUC-JP -t utf8
make: /usr/local/libexec/mecab/mecab-dict-index: コマンドが見つかりませんでした
make: *** [Makefile:253: matrix.bin] エラー 127

原因

どうやらipadicのmake時に必要な/usr/local/libexec/mecab/mecab-dict-indexが存在しないとのことでした。
mecab_0.966のインストール時に作成されるディレクトリに上記のようなものは存在しません。
一応以下のコマンドで調べますと、

$ sudo find  /usr/ -name mecab-dict-index
  /usr/local/lib/mecab/mecab-dict-index

libexecではなくlib下にあることがわかります。

解決方法

解決方法は./configureで作成したipadicのMakefileをエディタで開き、70行目と79行目のlibexeclibに書き換えて保存します。

$ vim Makefile
  70: MECAB_DICT_INDEX = /usr/local/lib/mecab/mecab-dict-index

  79: mecab_dict_index = /usr/local/lib/mecab/mecab-dict-index

後は、普通にmakeが通ると思います。
その後sudo make installして、mecabコマンドを打つと、更にエラーが出ました。

エラー内容

$ mecab
   param.cpp(69) [ifs] no such file or directory: /usr/local/lib/mecab/dic/ipadic/dicrc

ちょっと使わない間にどんだけエラー出るんようになったんやって思いながらこれも修正できました。

解決策

/usr/local/etc/mecabrcを開いてliblib64に修正します。

$ sudo vim /usr/local/etc/mecabrc 
   [修正前]  dicdir =  /usr/local/lib/mecab/dic/ipadic
   [修正後]  dicdir =  /usr/local/lib64/mecab/dic/ipadic

これでなんとか動くようになりました。

めんどくさ〜。

追記 2019/01/11

この方法だと,結局ipadic-NEologdをインストールするときにも再度同じように編集する必要が出てくるため,他の方法を考えました.
それは,以下のコマンドです.

$ sudo cp -r /usr/local/lib/mecab/ /usr/local/libexec/

つまり,デフォルトでインストールされたMeCabを必要とされるパスにコピーします.
libexec下にコピーしたmecabはディクショナリのコンパイルのときだけ使われます.
これでipadicでもipadic-NEologdでもうまく行きました.
必要なくなったら消してもいいかもしれません.

本当はその都度使うmecabのパスを指定したり,書き換えて辞書をインストールするほうがいいのでしょうが,せっかく製作者様がかんたんにインストールできるようにしてくれいるものを書き換えるのは不安であり,書き換えたことが次のエラーに直結するかもしれず怖いので,今回はこのような方法を取りました.