Perlbrewでperl-5.19.8のインストールが失敗する (CentOS 6)
~/perl5/perlbrew/build.perl-5.19.8.log のログを見てみると
# Failed test '[unix] syslog() called with level 'info' (macro)' # at t/syslog.t line 186. # got: 'Wide character in syswrite at ../../lib/Sys/Syslog.pm line 544. # ' # expected: '' # Failed test '[unix] syslog() should return true: '0'' # at t/syslog.t line 187. # Looks like you failed 2 tests of 225. ../cpan/Sys-Syslog/t/syslog.t ..................................... Dubious, test returned 2 (wstat 512, 0x200) Failed 2/225 subtests (less 132 skipped subtests: 91 okay)
~/perl5/perlbrew/build/perl-5.19.8/cpan/Sys-Syslog/t/syslog.t を見てみる
# syslog() with level "info" (as a macro), should pass { local $! = 1; $r = eval { syslog(LOG_INFO(), "$test_string by connecting to a $sock_type socket, setting a fake errno: %m") } || 0; } is( $@, '', "[$sock_type] syslog() called with level 'info' (macro)" ); ok( $r, "[$sock_type] syslog() should return true: '$r'" );
/var/log/messages には対応するテストログが記録されている。
Feb 12 00:00:00 username perl: uid 500 is testing Perl 5.019008 syslog(3) capabilities by connecting to a native socket, setting a fake errno: 許可されていない操作です
ログは成功しているが、エラーメッセージの日本語が原因でPerlのwide character warningが出て失敗と判定されているようだ。
echo $LANG # ja_JP.UTF-8 export LANG=en_US.UTF-8
して、英語のメッセージになるようにしてからinstallしなおすと成功した。
普通にSyslogモジュールを使ってみる限りではlocaleが日本語でも警告は出ない。ファイルハンドルのモードがテスト時とは違うのかもしれないが、モジュールのテストかPerlbrewに問題があるとまで言えるのかはわからない。