Text::Mecab インストール #perl #cpan #形態素解析
形態解析のモジュールText::MeCabをCPANでインストールを試みたのですが、すんなりできなかったので、メモ...orz
もうテストが通らなくても強引にインストールしてしまおうと思ったのですが、どうにかできないかと調べていたところモジュール作者の牧大輔氏がgitの掲示板にperlのバージョンについて触れてました。
Install failure on make test · Issue #4 · lestrrat-p5/Text-MeCab · GitHub
で、早速バージョンを「v5.10.1⇒v5.16.2」にあげてみたところ、すんなりインストール完了。
・・・ Appending installation info to /usr/local/perl-5.16.2/lib/5.16.2/i686-linux/perllocal.pod DMAKI/Text-MeCab-0.20014.tar.gz /usr/bin/make install -- OK
所感
今回、インストールは「look Text::Mecabしてmake install」や「force intall」で無理やりでもできたと思います。真の原因は不明ですが、CPANモジュールは、すべてのプラットフォームで動作テストしているわけではないですし、推奨バージョン以外のperl環境で動作が保障されないのは至極当然のことだと思います。
そして、perlでXSを直接使っているモジュールのメンテナーは大変だなーと、ともに、牧さんの対応は紳士だなーと。
(参考)「cpan[1]>install Text::MeCab」のエラーログ
Writing MYMETA.yml and MYMETA.json cp lib/Text/MeCab/Dict.pm blib/lib/Text/MeCab/Dict.pm cp lib/Text/MeCab/Node.pod blib/lib/Text/MeCab/Node.pod cp lib/Text/MeCab.pm blib/lib/Text/MeCab.pm gcc -c "-I." "-I/usr/local/include" "-I." -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/local/include -DMECAB_MAJOR_VERSION=0 -DMECAB_MINOR_VERSION=994 -I src -Wall -Wextra -Wdeclaration-after-statement -Wc++-compat -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -DVERSION=\"0.20014\" -DXS_VERSION=\"0.20014\" -o xs/text-mecab-node.o -fPIC "-I/usr/lib/perl5/CORE" -DUSE_PPPORT -DTEXT_MECAB_ENCODING='"utf-8"' -DTEXT_MECAB_CONFIG='"/usr/local/bin/mecab-config"' xs/text-mecab-node.c gcc -c "-I." "-I/usr/local/include" "-I." -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/local/include -DMECAB_MAJOR_VERSION=0 -DMECAB_MINOR_VERSION=994 -I src -Wall -Wextra -Wdeclaration-after-statement -Wc++-compat -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -DVERSION=\"0.20014\" -DXS_VERSION=\"0.20014\" -o xs/text-mecab.o -fPIC "-I/usr/lib/perl5/CORE" -DUSE_PPPORT -DTEXT_MECAB_ENCODING='"utf-8"' -DTEXT_MECAB_CONFIG='"/usr/local/bin/mecab-config"' xs/text-mecab.c xs/text-mecab.c: In function ‘TextMeCab_create_from_av’: xs/text-mecab.c:70: 警告: ‘argv’ may be used uninitialized in this function /usr/bin/perl "-Iinc" /usr/share/perl5/ExtUtils/xsubpp -typemap /usr/share/perl5/ExtUtils/typemap xs/MeCab.xs > xs/MeCab.xsc && mv xs/MeCab.xsc xs/MeCab.c gcc -c "-I." "-I/usr/local/include" "-I." -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/local/include -DMECAB_MAJOR_VERSION=0 -DMECAB_MINOR_VERSION=994 -I src -Wall -Wextra -Wdeclaration-after-statement -Wc++-compat -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -DVERSION=\"0.20014\" -DXS_VERSION=\"0.20014\" -o xs/MeCab.o -fPIC "-I/usr/lib/perl5/CORE" -DUSE_PPPORT -DTEXT_MECAB_ENCODING='"utf-8"' -DTEXT_MECAB_CONFIG='"/usr/local/bin/mecab-config"' xs/MeCab.c xs/MeCab.xs: In function ‘XS_Text__MeCab_version’: xs/MeCab.xs:116: 警告: assignment discards qualifiers from pointer target type gcc -c "-I." "-I/usr/local/include" "-I." -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/local/include -DMECAB_MAJOR_VERSION=0 -DMECAB_MINOR_VERSION=994 -I src -Wall -Wextra -Wdeclaration-after-statement -Wc++-compat -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -DVERSION=\"0.20014\" -DXS_VERSION=\"0.20014\" -o xs/text-mecab-clone.o -fPIC "-I/usr/lib/perl5/CORE" -DUSE_PPPORT -DTEXT_MECAB_ENCODING='"utf-8"' -DTEXT_MECAB_CONFIG='"/usr/local/bin/mecab-config"' xs/text-mecab-clone.c Running Mkbootstrap for Text::MeCab () chmod 644 MeCab.bs rm -f blib/arch/auto/Text/MeCab/MeCab.so LD_RUN_PATH="/usr/local/lib:/usr/lib" gcc -shared -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -L/usr/local/lib xs/text-mecab-node.o xs/text-mecab.o xs/MeCab.o xs/text-mecab-clone.o -o blib/arch/auto/Text/MeCab/MeCab.so \ -L/usr/local/lib -lmecab -lstdc++ \ chmod 755 blib/arch/auto/Text/MeCab/MeCab.so cp MeCab.bs blib/arch/auto/Text/MeCab/MeCab.bs chmod 644 blib/arch/auto/Text/MeCab/MeCab.bs Manifying blib/man3/Text::MeCab::Dict.3pm Manifying blib/man3/Text::MeCab::Node.3pm Manifying blib/man3/Text::MeCab.3pm DMAKI/Text-MeCab-0.20014.tar.gz /usr/bin/make -- OK 'YAML' not installed, will not store persistent state Running make test PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'inc', 'blib/lib', 'blib/arch')" t/*.t t/*/*.t t/01-sanity.t ................ 1/? # 0.994 t/01-sanity.t ................ ok t/node/01_load.t ............. ok t/node/02_api.t .............. ok t/node/03_clone.t ............ ok t/node/04_clone_free.t ....... ok t/node/05_format.t ........... ok t/regression/01_tomi_args.t .. 1/2 # Failed test at t/regression/01_tomi_args.t line 41. # got: '記号,一般,*,*,*,*,* # 感動詞,*,*,*,*,*,* # 名詞,固有名詞,一般,*,*,*,* # 名詞,固有名詞,人名,一般,*,*,* # 名詞,固有名詞,組織,*,*,*,* # 名詞,固有名詞,地域,一般,*,*,* # 名詞,一般,*,*,*,*,* # 記号,一般,*,*,*,*,* # 名詞,固有名詞,一般,*,*,*,* # 名詞,固有名詞,人名,一般,*,*,* # 名詞,固有名詞,組織,*,*,*,* # 名詞,固有名詞,地域,一般,*,*,* # 名詞,一般,*,*,*,*,* # 記号,一般,*,*,*,*,* # BOS/EOS,*,*,*,*,*,*,*,* # ' # expected: 'BOS/EOS,*,*,*,*,*,*,*,* # 記号,一般,*,*,*,*,* # 感動詞,*,*,*,*,*,* # 名詞,固有名詞,一般,*,*,*,* # 名詞,固有名詞,人名,一般,*,*,* # 名詞,固有名詞,組織,*,*,*,* # 名詞,固有名詞,地域,一般,*,*,* # 名詞,一般,*,*,*,*,* # 記号,一般,*,*,*,*,* # 名詞,固有名詞,一般,*,*,*,* # 名詞,固有名詞,人名,一般,*,*,* # 名詞,固有名詞,組織,*,*,*,* # 名詞,固有名詞,地域,一般,*,*,* # 名詞,一般,*,*,*,*,* # 記号,一般,*,*,*,*,* # BOS/EOS,*,*,*,*,*,*,*,* # ' # Looks like you failed 1 test of 2. t/regression/01_tomi_args.t .. Dubious, test returned 1 (wstat 256, 0x100) Failed 1/2 subtests t/tagger/01_load.t ........... ok t/tagger/02_api.t ............ ok t/tagger/03_basic.t .......... ok Test Summary Report ------------------- t/regression/01_tomi_args.t (Wstat: 256 Tests: 2 Failed: 1) Failed test: 2 Non-zero exit status: 1 Files=10, Tests=2375, 1 wallclock secs ( 0.35 usr 0.03 sys + 0.78 cusr 0.07 csys = 1.23 CPU) Result: FAIL Failed 1/10 test programs. 1/2375 subtests failed. make: *** [test_dynamic] エラー 255 DMAKI/Text-MeCab-0.20014.tar.gz /usr/bin/make test -- NOT OK //hint// to see the cpan-testers results for installing this module, try: reports DMAKI/Text-MeCab-0.20014.tar.gz Running make install make test had returned bad status, won't install without force Failed during this command: DMAKI/Text-MeCab-0.20014.tar.gz : make_test NO