さくらインターネットにText::MeCabがインストールできない件

2017年6月27日

開発をraspberrypiでしてきたので、さくらインターネットの方で継続しようと思ったところハマっています。

何故か、Text::MeCabがインストールできません。
それほど大したモジュールではないと思うのですが、エラーを吐いてとまってしまいます。

$ cpanm Text::MeCab
--> Working on Text::MeCab
Fetching http://www.cpan.org/authors/id/D/DM/DMAKI/Text-MeCab-0.20016.tar.gz ... OK
Configuring Text-MeCab-0.20016 ... N/A
! Configure failed for Text-MeCab-0.20016. See /home/****/.cpanm/work/1498314513.60429/build.log for details.

詳細を見ます。

cpanm (App::cpanminus) 1.7043 on perl 5.008009 built for amd64-freebsd
Work directory is /home/****/.cpanm/work/1498314513.60429
You have make /usr/bin/make
You have LWP 6.24
You have /usr/bin/tar: bsdtar 2.8.5 - libarchive 2.8.5
You have /usr/bin/unzip
Searching Text::MeCab () on cpanmetadb ...
--> Working on Text::MeCab
Fetching http://www.cpan.org/authors/id/D/DM/DMAKI/Text-MeCab-0.20016.tar.gz
-> OK
Unpacking Text-MeCab-0.20016.tar.gz
Entering Text-MeCab-0.20016
Checking configure dependencies from META.yml
Checking if you have ExtUtils::ParseXS 2.21 ... Yes (3.18)
Checking if you have ExtUtils::MakeMaker 6.59 ... Yes (7.10)
Checking if you have Devel::PPPort 3.19 ... Yes (3.35)
Configuring Text-MeCab-0.20016
Running Makefile.PL
Subroutine checklibs redefined at inc/Module/Install/CheckLib.pm line 11.
Subroutine assertlibs redefined at inc/Module/Install/CheckLib.pm line 25.
Subroutine _author_side redefined at inc/Module/Install/CheckLib.pm line 39.
Path to mecab config? [/usr/local/bin/mecab-config] /usr/local/bin/mecab-config
detected mecab version 0.995
Using compiler flags '-I/usr/local/include -DMECAB_MAJOR_VERSION=0 -DMECAB_MINOR_VERSION=995'...
Using linker flags '-L/usr/local/lib -lmecab -lstdc++'...

Text::MeCab needs to know what encoding you built your dictionary with
to properly execute tests.

Encoding of your mecab dictionary? (shift_jis, euc-jp, utf-8) [euc-jp] euc-jp
Using euc-jp as your dictionary encoding
Detected the following mecab information:
   version: 0.995
   cflags: -I/usr/local/include -DMECAB_MAJOR_VERSION=0 -DMECAB_MINOR_VERSION=995 -I src
   libs: -L/usr/local/lib -lmecab -lstdc++
   include: /usr/local/include
Can't link/include C library 'mecab', 'mecab', aborting.
-> N/A
-> FAIL Configure failed for Text-MeCab-0.20016. See /home/****/.cpanm/work/1498314513.60429/build.log for details.

主にはここです

Can't link/include C library 'mecab', 'mecab', aborting.

 

こちらが一番近い・・・

Text::MeCabのインストールでCan’t build and link to 'mecab’, 'mecab’

でもちょっとエラーメッセージは違うし(リンク先様はbuildエラー?)あまり参考にならなかったです。
しかしながら、いくら検索してもこれ以上の情報はなし・・・。なぜでしょう。。。?

試しにモジュールをダウンロードしてきて
Makefile.plを自前で実行してみましたが、同じエラーです。

リンク先の方がおっしゃるように、
ラズパイではあっさり成功しますので、何かインストールに失敗(足りない?)しているような気もします。

Text-MeCab-0.20016]$ perl Makefile.PL
Subroutine checklibs redefined at inc/Module/Install/CheckLib.pm line 11.
Subroutine assertlibs redefined at inc/Module/Install/CheckLib.pm line 25.
Subroutine _author_side redefined at inc/Module/Install/CheckLib.pm line 39.
Path to mecab config? [/usr/local/bin/mecab-config]
detected mecab version 0.995
Using compiler flags '-I/usr/local/include -DMECAB_MAJOR_VERSION=0 -DMECAB_MINOR_VERSION=995'...
Using linker flags '-L/usr/local/lib -lmecab -lstdc++'...

Text::MeCab needs to know what encoding you built your dictionary with
to properly execute tests.

Encoding of your mecab dictionary? (shift_jis, euc-jp, utf-8) [euc-jp] utf-8
Using utf-8 as your dictionary encoding
Detected the following mecab information:
version: 0.995
cflags: -I/usr/local/include -DMECAB_MAJOR_VERSION=0 -DMECAB_MINOR_VERSION=995 -I src
libs: -L/usr/local/lib -lmecab -lstdc++
include: /usr/local/include
Can't link/include C library 'mecab', 'mecab', aborting.

自前でインストールした環境では大丈夫だった、という書き込みがあったので、
最新版をインストールしてみましたが、結果同じでした。

ふと、こんなページを発見しました
mecabライブラリ
https://taku910.github.io/mecab/libmecab.html

#include  てありますね。ここでぴーんと来ました。

試しに・・・

#include

int main(){
}

こんな何もしないCプログラムを作りコンパイルしてみました。ラズパイはあっさり通りましたが・・・

$ cc mecab.c
mecab.c:1:19: error: mecab.h: No such file or directory

ライブラリがない。ということですね。

さくらの500円レンタルサーバで MeCab を使う

こちらはあっさり諦めてましたね・・・・^^;

ちょっと悔しいですがMecab.pmでも動くように修正しますかね・・・。

あと、今後の辞書の更新のことも考えなきゃいけないので、

さくらインターネットにPerl版のMeCab(形態素解析)を導入する

こちらを参考にして辞書の設定もしたいと思います。