-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Install failure on make test #4
Comments
定数(MECAB_***)に関しては a9ac81c までで消えると思うので gitから落としてきてもらって試していただくといいかと思います。 が、自分の環境ではその部分が直っても他の部分で mecab 0.993に対して mecab_new() が NULLを返すという自体になっており、そこで止まってる感じです。 |
早速のcommentありがとうございます。 定数について他の方がMakefile.PLにて追記する事により上記のような現象が解消される旨書かれている記事を拝見しておりました。ただバージョンも違うので同じ手法は使えないと思っておりました。
アドバイス頂いた内容を実装しても動作しない可能性もあると言う事でしょうか。 取り急ぎアドバイス頂いた部分について試してみようと思います。 |
試してみました。 /usr/local/src にgitから落としてきたlestrrat-Text-MeCab-a9ac81cを展開し、Makefile.PLを確認して必要と思われるモジュールをインストールしてperl ./Makefile.PLを実行してみました。
[root@ajp-mailgw lestrrat-Text-MeCab-a9ac81c]# perl ./Makefile.PL Perlを使った事がないので難儀しております。 |
"MeCabを展開した場所"とありますが、MeCabはmake + make installまで済ませてありますか? 通常は以下のように聞かれます:
上記のように発見可能な場所にmecab-configがあれば自動的に見つけますし、なければ上記の最後の行が
となりますので、正しいパスを指定して入れれば動くはずです。 次に"Do you need to predeclare..."系のエラーですが、これらは通常CPANから持ってきたバージョンであればtar.gzファイルに同梱されているのですが、gitではそれがされていないために起こっています。先ほどMakefile.PLで足りないファイルを表示するように変更しておきましたので、それを見てcpan/cpanm等で前もってインストールしてください。 |
ありがとうございます。 MeCabはmake、make install まで終えている状態で、実際に動作もしています。 which mecabすると、 [root@ajp-mailgw ~]# which mecab と返してくれます。 mecab-configもmecabと同じパスにある事から同様にwhichすると、 [root@ajp-mailgw ~]# which mecab-config と返してくれます。
ありがとうございます。 改めてダウンロードして、perl ./Makefile.PL してみました。 [root@ajp-mailgw lestrrat-Text-MeCab-6eada97]# perl ./Makefile.PL
Bail out さらに、 [root@ajp-mailgw lestrrat-Text-MeCab-6eada97]# cpan -i Module::Install::XSUtil (中略) Removing previously used /root/.cpan/build/Module-Install-XSUtil-0.42 CPAN.pm: Going to build G/GF/GFUJI/Module-Install-XSUtil-0.42.tar.gz Checking if your kit is complete... (中略) Removing previously used /root/.cpan/build/B-Hooks-OP-Annotation-0.44 CPAN.pm: Going to build C/CH/CHOCOLATE/B-Hooks-OP-Annotation-0.44.tar.gz Can't locate ExtUtils/Depends.pm in @inc (@inc contains: /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/5.8.8 .) at Makefile.PL line 7. CPAN.pm: Going to build G/GF/GFUJI/Module-Install-XSUtil-0.42.tar.gz cp lib/Module/Install/XSUtil.pm blib/lib/Module/Install/XSUtil.pm Failed test '... success'at t/01_example.t line 29.got: '512'expected: '0'make[1]: ディレクトリ `/root/.cpan/build/Module-Install-XSUtil-0.42/example' に入りますcp include/foo/bar.h blib/arch/auto/Foo/foo/bar.hcp include/foo/baz.h blib/arch/auto/Foo/foo/baz.hcp lib/Foo.pm blib/lib/Foo.pmcp include/foo.h blib/arch/auto/Foo/foo.h/usr/bin/perl "-Iinc" /usr/lib/perl5/5.8.8/ExtUtils/xsubpp -typemap /usr/lib/perl5/5.8.8/ExtUtils/typemap src/Foo.xs > src/Foo.xsc && mv src/Foo.xsc src/Foo.cgcc -c "-I." "-Iinclude" "-I." -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -Wall -Wextra -Wdeclaration-after-statement -Wc++-compat -g -ggdb -g3 -DVERSION="1.23" -DXS_VERSION="1.23" -o src/Foo.o -fPIC "-I/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE" -DXS_ASSERT -DUSE_PPPORT -DFOO_OK src/Foo.cmake[1]: ディレクトリ `/root/.cpan/build/Module-Install-XSUtil-0.42/example' から出ますsrc/Foo.xs:7:40: error: Install/hook_op_annotation.h: そのようなファイルやディレクトリはありません Failed test '... success'at t/01_example.t line 32.got: '512'expected: '0'make[1]: ディレクトリ `/root/.cpan/build/Module-Install-XSUtil-0.42/example' に入りますgcc -c "-I." "-Iinclude" "-I." -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -Wall -Wextra -Wdeclaration-after-statement -Wc++-compat -g -ggdb -g3 -DVERSION="1.23" -DXS_VERSION="1.23" -o src/Foo.o -fPIC "-I/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE" -DXS_ASSERT -DUSE_PPPORT -DFOO_OK src/Foo.cmake[1]: ディレクトリ `/root/.cpan/build/Module-Install-XSUtil-0.42/example' から出ますLooks like you failed 2 tests of 18.t/01_example.t .. Dubious, test returned 2 (wstat 512, 0x200) Test Summary Reportt/01_example.t (Wstat: 512 Tests: 18 Failed: 2) インラインでも書きましたが、途中make testで下記の箇所でとまっていました。何か数値の入力が必要なようです。
その後エラーでインストールが出来ませんでした。 必要なモジュールがあまりに足りていないのでしょうか。 だんだん本筋と違う方向に向かっているようで申し訳なく感じております。 |
Perlが古すぎませんか?確証はないですけど、5.8.8とか僕は正直最近使ってないのでわからないですね・・・ |
ご指摘ありがとうございます。 現在構築しているサーバーはパブリッククラウド上でCentOS5.5しか許されていません。 [root@ajp-mailgw ~]# cpan -i Module::Install::XSUtil 本来なら全て最新にしたい所なのですが、借りている環境の為難儀しています。 やるとすれば現在のPerlパッケージを全てeraseしてソースからビルドし直した方がいいのでしょうか。 |
yumで管理されているPerlを普段から使っていませんので分かりかねます。ただいわゆるシステムPerlは他のツールが使っている可能性が高いのでそれを変更・削除すると色々問題が出るんじゃないかと想像します。 rubyでもpythonでもそうですが、まぁ好き勝手なモジュールを入れたいのなら自分のユーザースペース上で使えるコピーをインストールしておくのが良いでしょう。perlの場合はperlbrewというものがありますので検索してみてください。 |
少し時間が空きましてすみません。 残念ですが現構築環境でのText::MeCabインストールは少し難しいと考え、他の方法を模索し始めました。 別の環境を用意して、gitさせて頂いたソースで試しにText::MeCabがインストールできるかどうか試してみました。 CentOS 6.2 MeCab-0.993 Perlについては以下の通りです。 Platform: Characteristics of this binary (from libperl): MeCabもきちんと動作することを確認しています。 この状況でcpan -i Text::MeCabしてみましたが異なるエラーで止まってしまいます。 [root@testmgw lib]# cpan -i Text::MeCab CPAN.pm: Building D/DM/DMAKI/Text-MeCab-0.20013.tar.gz Path to mecab config? [/usr/local/bin/mecab-config] Text::MeCab needs to know what encoding you built your dictionary with Encoding of your mecab dictionary? (shift_jis, euc-jp, utf-8) [euc-jp] utf-8 メッセージからはshared libraryが見えていないように見受けられました。 このケースではどのような問題が考えられるでしょうか。 |
ldconfigくらいですかねぇ。正直使われているシステムの設定に関してはお手上げです。あと、いくらText::MeCabをgithubから落としても cpan -i Text::MeCabしたらCPANに上がっているバージョンが入るだけですよ。なのでコンパイルが始まったところでこのイッシューをあげる前と同じように落ちるだけです。 |
コメントありがとうございます。 手順混同していてご迷惑をおかけしてすみませんでした。 手順は2点試しました。 一つは前述のようにCPANにてインストールしたケースで、もう一つはgitから落としてきたソースからPerl ./Makefile.PLしたケースです。 gitのソースからのMakeについてはModule::Install::XSUtilのインストールで同様なエラーが出て最終的にインストールできず、 メッセージを比較した感じではCPANの方が後一歩で行けるのかな、と言った感じを受けました。 |
1. 最初の問題最新版libmecabにText::MeCabが対応できていない 2. 私の修正Text::MeCabがlibmecab-0.933でもとりあえずコンパイルできるところまでは github版 にあげた 3. あなたのしていることcpan -i Text::MeCab で CPANに上がっているバージョンの Text::MeCabを入れている。 XSUtilのインストールがエラーになるからcpan版を使うというのもおかしな話で、CPAN版でもXSUtilは使っているわけで、もしそれがそもそもインストールできていないならCPAN版もおかしなことになるのは当然の話です。 違う方法を試せば魔法のように問題が解決するわけはないので、一個一個可能性をつぶしていくしかないのではないでしょうか。 4. その他
|
細かくコメント頂きありがとうございます。 説明不足により誤解を招き、申し訳ございません。
残念ながら、私はプログラマのような開発者ではなく、今回関わっている案件の都合上、調べながら今回の問題に対応しています。 頂いたコメントを元に確認作業を続けたいと思います。現環境でもヒントを探してみたいと思います。 |
同情はしますが、敢えて苦言を呈させていただくと、この次にこのような状況に陥った時にはまず最初にそれを言うといいでしょう。こちらの期待値が全く違います。こちらは「なんでわからないんだ!」と思いながらイライラしますし、そちらも「そんなこと言ったってわからないからしょうがない!」と思わずにはいられないでしょう。 なお今回の件はわかっている人なら15分〜30分、わからない人は多分永遠にわからないタイプの問題かと思います。可能なら今からでも誰か身近なエンジニアに助けてもらうほうがよいかと。 それはともあれ、とりあえずやれることを書いておきますが:
いや、そういうことではありません。よく読んでください
・・・なので制約云々の話はあまり関係ありません。これでperl-5.14.2をインストールすれば 以下のような検証結果が得られるはずですよね?
後方互換の問題なら今度はそこから切り込んでいけばいいだけです。XSUtilに関してはこれが怪しいと思っています。「XSUtilが入らない」環境はそれだけでかなり怪しいです。もちろんこれはあくまで仮説なのでまったく別な結果になるかもしれませんが、そもそもの問題がわからない場合は可能性をひとつずつつぶしくのは面倒でも最短の道です |
日本語にて失礼いたします。
以下の環境にてText::MeCabをCPANからインストールしようとしていますが途中でエラーとなり、インストールできない状況です。
以下に環境、インストール実行時の状況を示します。
なおgithubの利用は初めてなのでお作法など、誤りもあろうかと思います。恐縮ですがご指南頂ければ幸いです。
[環境]
CentOS release 5.5 (Final)
2.6.18-194.el5 #1 SMP Fri Apr 2 14:58:14 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux
glib2-2.12.3-4.el5_3.1
glibc-2.5-81.el5_8.2
glibc-common-2.5-81.el5_8.2
glibc-devel-2.5-81.el5_8.2
libgcc-4.1.2-52.el5_8.1
gcc-4.1.2-52.el5_8.1
gcc-c++-4.1.2-52.el5_8.1
compat-libgcc-296-2.96-138
libgcc-4.1.2-52.el5_8.1
perl-5.8.8-27.el5
MeCab-0.993
[現象]
cpan -i Text::MeCab
を実行すると以下のメッセージにて進行するがtestにてfailureとなってしまう。
cpan -i Text::MeCab
(中略)
Path to mecab config? [/usr/local/bin/mecab-config]
detected mecab version 0.993
Using compiler flags '-I/usr/local/include -DMECAB_MAJOR_VERSION=0 -DMECAB_MINOR_VERSION=993'...
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.993
cflags: -I/usr/local/include -DMECAB_MAJOR_VERSION=0 -DMECAB_MINOR_VERSION=993 -I src
libs: -L/usr/local/lib -lmecab -lstdc++
include: /usr/local/include
reading /usr/local/include/mecab.h to find all constants
Writing ppport.h
Checking if your kit is complete...
Looks good
Writing Makefile for 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 -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -I/usr/local/include -DMECAB_MAJOR_VERSION=0 -DMECAB_MINOR_VERSION=993 -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 -m64 -mtune=generic -DVERSION="0.20013" -DXS_VERSION="0.20013" -o xs/text-mecab-node.o -fPIC "-I/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE" -DUSE_PPPORT -DTEXT_MECAB_ENCODING='"utf-8"' -DTEXT_MECAB_CONFIG='"/usr/local/bin/mecab-config"' xs/text-mecab-node.c
xs/text-mecab-node.c:7 から include されたファイル中:
xs/text-mecab.h:120:30: 警告: ファイル末尾に改行がありません
/usr/bin/perl "-Iinc" /usr/lib/perl5/5.8.8/ExtUtils/xsubpp -typemap /usr/lib/perl5/5.8.8/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 -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -I/usr/local/include -DMECAB_MAJOR_VERSION=0 -DMECAB_MINOR_VERSION=993 -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 -m64 -mtune=generic -DVERSION="0.20013" -DXS_VERSION="0.20013" -o xs/MeCab.o -fPIC "-I/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE" -DUSE_PPPORT -DTEXT_MECAB_ENCODING='"utf-8"' -DTEXT_MECAB_CONFIG='"/usr/local/bin/mecab-config"' xs/MeCab.c
xs/MeCab.xs:1 から include されたファイル中:
xs/text-mecab.h:120:30: 警告: ファイル末尾に改行がありません
xs/MeCab.xs:64: 警告: 構造体初期化子内の要素が多すぎます
xs/MeCab.xs:64: 警告: (near initialization for ‘TextMeCab_vtbl’)
xs/MeCab.c: In function ‘XS_Text__MeCab__Node__Cloned_format’:
xs/MeCab.c:1066: 警告: ‘mecab’ may be used uninitialized in this function
xs/MeCab.c: In function ‘XS_Text__MeCab__Node_format’:
xs/MeCab.c:676: 警告: ‘mecab’ may be used uninitialized in this function
xs/MeCab.c: In function ‘XS_Text__MeCab_parse’:
xs/MeCab.c:303: 警告: ‘mecab’ may be used uninitialized in this function
gcc -c "-I." "-I/usr/local/include" "-I." -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -I/usr/local/include -DMECAB_MAJOR_VERSION=0 -DMECAB_MINOR_VERSION=993 -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 -m64 -mtune=generic -DVERSION="0.20013" -DXS_VERSION="0.20013" -o xs/text-mecab.o -fPIC "-I/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE" -DUSE_PPPORT -DTEXT_MECAB_ENCODING='"utf-8"' -DTEXT_MECAB_CONFIG='"/usr/local/bin/mecab-config"' xs/text-mecab.c
xs/text-mecab.c:7 から include されたファイル中:
xs/text-mecab.h:120:30: 警告: ファイル末尾に改行がありません
xs/text-mecab.c: In function ‘TextMeCab_create’:
xs/text-mecab.c:48: 警告: データ型の範囲制限によって、比較が常に false となります
xs/text-mecab.c: In function ‘TextMeCab_create_from_av’:
xs/text-mecab.c:71: 警告: データ型の範囲制限によって、比較が常に false となります
xs/text-mecab.c:114:30: 警告: ファイル末尾に改行がありません
xs/text-mecab.c:61: 警告: ‘argv’ may be used uninitialized in this function
gcc -c "-I." "-I/usr/local/include" "-I." -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -I/usr/local/include -DMECAB_MAJOR_VERSION=0 -DMECAB_MINOR_VERSION=993 -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 -m64 -mtune=generic -DVERSION="0.20013" -DXS_VERSION="0.20013" -o xs/text-mecab-clone.o -fPIC "-I/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE" -DUSE_PPPORT -DTEXT_MECAB_ENCODING='"utf-8"' -DTEXT_MECAB_CONFIG='"/usr/local/bin/mecab-config"' xs/text-mecab-clone.c
xs/text-mecab-clone.c:7 から include されたファイル中:
xs/text-mecab.h:120:30: 警告: ファイル末尾に改行がありません
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/lib64" gcc -shared -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic xs/text-mecab-node.o xs/MeCab.o xs/text-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
lib/Text/MeCab/Dict.pm:161: Unknown command paragraph "=encoding UTF-8"
Manifying blib/man3/Text::MeCab::Node.3pm
Manifying blib/man3/Text::MeCab.3pm
/usr/bin/make -- OK
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/42 Bareword "MECAB_NOR_NODE" not allowed while "strict subs" in use at t/01-sanity.t line 11.
Bareword "MECAB_UNK_NODE" not allowed while "strict subs" in use at t/01-sanity.t line 12.
Bareword "MECAB_BOS_NODE" not allowed while "strict subs" in use at t/01-sanity.t line 13.
Bareword "MECAB_EOS_NODE" not allowed while "strict subs" in use at t/01-sanity.t line 14.
Execution of t/01-sanity.t aborted due to compilation errors.
Looks like you planned 42 tests but ran 1.
Looks like your test exited with 9 just after 1.
t/01-sanity.t ................ Dubious, test returned 9 (wstat 2304, 0x900)
Failed 41/42 subtests
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 .. skipped: SWIG MeCab not available
t/tagger/01_load.t ........... ok
t/tagger/02_api.t ............ ok
t/tagger/03_basic.t .......... ok
Test Summary Report
t/01-sanity.t (Wstat: 2304 Tests: 1 Failed: 0)
Non-zero exit status: 9
Parse errors: Bad plan. You planned 42 tests but ran 1.
Files=10, Tests=2336, 2 wallclock secs ( 0.20 usr 0.01 sys + 0.42 cusr 0.05 csys = 0.68 CPU)
Result: FAIL
Failed 1/10 test programs. 0/2336 subtests failed.
make: *** [test_dynamic] エラー 255
/usr/bin/make test -- NOT OK
Running make install
make test had returned bad status, won't install without force
The text was updated successfully, but these errors were encountered: