mecab
mecab-ipadic-neologd

mecab-ipadic-NEologdのインストールでエラー

環境

Antergos Linux

概要

形態素解析やってみたいと思ってMecabをインストール

公式ドキュメントの通りにインストールするとなんかエラーが出た

[make-mecab-ipadic-NEologd] : Re-Index system dictionary
./libexec/make-mecab-ipadic-neologd.sh: line 492: /usr/libexec/mecab/mecab-dict-index: No such file or directory

1時間くらいいじり倒した結果とその過程をメモ

とりあえず

エラーを読むとmecab-dict-indexがないらしいのでfindしてみよう

$sudo find / -name mecab-dict-index
中略
/usr/lib/mecab/mecab-dict-index
$

パスが違うだけでファイルはあるようだ

推測

他の環境のことはよくわかんないけど/usr/libexec/mecabってフォルダは私の環境にはない
代わりに/lib/mecabならある
こいつを指定してあげればいいんじゃないのか

インストールスクリプトをチェック

まず mecab-ipadic-neologd/libexec/make-mecab-ipadic-neologd.shの492行目あたりを見る

echo "${ECHO_PREFIX} Re-Index system dictionary"
${MECAB_LIBEXEC_DIR}/mecab-dict-index -f UTF8 -t UTF8

$MECAB_LIBEXEC_DIRってのがおかしい気がする
103行目に飛んでみると

MECAB_LIBEXEC_DIR=`${MECAB_PATH}-config --libexecdir

$MECAB_PATHってなんだ?

101行目辺りに

MECAB_PATH=`which mecab`

って書いてある

つまりmecab-configっていうコマンドに--libexecdirっていう引数を与えた結果がMECAB_LIBEXEC_DIR
コマンドでインストールパスを管理している的なニュアンスだろうか

結論

私の環境では

$mecab-config --libexecdir
/usr/libexecdir/mecab

となるんだけど実際に欲しいファイルは/lib/mecabにあるので

無理やりmecab-ipadic-neologd/libexec/make-mecab-ipadic-neologd.shの103行目の

MECAB_LIBEXEC_DIR=`${MECAB_PATH}-config --libexecdir`

MECAB_LIBEXEC_DIR="/lib/mecab"

と書き換えたらインストールがうまくいった

感想

まだペーペーの私にとってはなかなかハードルが高かった。
こういったことへの対処が経験値の向上に繋がっていくのかもしれないと感じた。