CatalystのプラグインであるCatalyst::Plugin::Charsets::Japaneseのインストールが出来ず、困っています。プラグインのインストールを、下記の手順で行ったところ、以下のログが得られ、make testで失敗していることが分かりました。
--------------------------------------------------
# perl -MCPAN -e shell
cpan[1]> install Catalyst::Plugin::Charsets::Japanese
Running install for module 'Catalyst::Plugin::Charsets::Japanese'
Running make for L/LY/LYOKATO/Catalyst-Plugin-Charsets-Japanese-0.06.tar.gz
(略)
Running make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/00_compile...........ok
t/01_pod...............ok
t/02_handler...........ok
t/03_sjis_to_euc.......1/4 HTTP::Message content must be bytes at /usr/lib/perl5/site_perl/5.8.8/Test/WWW/Mechanize/Catalyst.pm line 88
# Looks like you planned 4 tests but only ran 2.
# Looks like your test died just after 2.
t/03_sjis_to_euc....... Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 2/4 subtests
t/04_sjis_to_utf8......1/4 HTTP::Message content must be bytes at /usr/lib/perl5/site_perl/5.8.8/Test/WWW/Mechanize/Catalyst.pm line 88
# Looks like you planned 4 tests but only ran 2.
# Looks like your test died just after 2.
t/04_sjis_to_utf8...... Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 2/4 subtests
(略)
Running make install
make test had returned bad status, won't install without force
Failed during this command:
LYOKATO/Catalyst-Plugin-Charsets-Japanese-0.06.tar.gz: make_test NO
--------------------------------------------------
make testで実行されるテストは、下記の11個です。このうち、03~11のテストで"HTTP::Message content must be bytes at /usr/lib/perl5/site_perl/5.8.8/Test/WWW/Mechanize/Catalyst.pm line 88"というエラーでtestに失敗しています。
--------------------------------------------------
00_compile.t
01_pod.t
02_handler.t
03_sjis_to_euc.t
04_sjis_to_utf8.t
05_sjis_to_sjis.t
06_euc_to_euc.t
07_euc_to_utf8.t
08_euc_to_sjis.t
09_utf_to_euc.t
10_utf_to_utf.t
11_utf_to_euc.t
--------------------------------------------------
日本語を扱うためのプラグインをインストールするのに、環境変数LANGがen_US.UTF-8になっていることが、インストールできない原因であるのかと思い、環境変数LANGをja_JP.UTF-8にしてインストールを試みて見ましたが、やはりインストールに失敗しました。
どうしてインストールに失敗するのか、どうすればインストールすることができるのか、ご教授頂けると幸いです。
また、足りない情報がありましたらご提供致しますので、ご指導よろしくお願い致します。
やぁ、すみません。出ているエラーメッセージが違っていました。
こちらの環境は CentOS5 で HTTP::Message は、CentOS5 の
perl-libwww-perl-5.805-1.1.1 に含まれているものです。
CPAN の最新の libwww-perl-5.812 に上げると、
t/11_utf_to_euc......ok 1/4HTTP::Message content must be bytes at /usr/lib/perl5/site_perl/5.8.8/Test/WWW/Mechanize/Catalyst.pm line 92
# Looks like you planned 4 tests but only ran 2.
# Looks like your test died just after 2.
と、weirdxxx さんと同じエラーになります。
libwww-perl の ChangeLog に
> 2008-04-08 Gisle Aas <gisle@ActiveState.com>
> Release 5.810
...
> Don't allow HTTP::Message content to be set to Unicode strings.
> Refactor test for Encode.pm
とあるのですが、この変更が関係しているのではないでしょうか。
質問者
お礼
ご回答ありがとうございます。
そして、返信が遅くなってしまい、申し訳ございません(^^;
t-okuraさんの仰る通り、libwww-perlのChangeLogに
> 2008-04-08 Gisle Aas <gisle@ActiveState.com>
> Release 5.810
...
> Don't allow HTTP::Message content to be set to Unicode strings.
> Refactor test for Encode.pm
とあるのを確認しました。
t-okuraさんの仰る通り、
このlibwww-perlの変更が影響して
Catalyst::Plugin::Charstets::Japaneseの
インストールが失敗しているように考えられますね。
このように、他のモジュールに影響を与えるような
変更がCPANにアップデートされるようなことは、
よくあることなのでしょうか?
インストールするだけであれば
force install Catalyst::Plugin::Charsets::Japanese
でできます(make test でエラーが出てもインストールします)。
make test で出るエラーは
# Failed test 'Content is "日本語"'
# at t/11_utf_to_euc.t line 27.
Wide character in print at /usr/lib/perl5/5.8.8/Test/Builder.pm line 1275.
# got: "日本語"
# length: 3
# expected: "\x{e6}\x{97}\x{a5}\x{e6}\x{9c}\x{ac}\x{e8}\x{aa}\x{9e}"
# length: 9
# strings begin to differ at char 1
なので、UTF-8 文字がテストスクリプトでうまく処理できていない
と思われます。
お礼
ご回答ありがとうございます。 そして、返信が遅くなってしまい、申し訳ございません(^^; t-okuraさんの仰る通り、libwww-perlのChangeLogに > 2008-04-08 Gisle Aas <gisle@ActiveState.com> > Release 5.810 ... > Don't allow HTTP::Message content to be set to Unicode strings. > Refactor test for Encode.pm とあるのを確認しました。 t-okuraさんの仰る通り、 このlibwww-perlの変更が影響して Catalyst::Plugin::Charstets::Japaneseの インストールが失敗しているように考えられますね。 このように、他のモジュールに影響を与えるような 変更がCPANにアップデートされるようなことは、 よくあることなのでしょうか?