CentOS 5.3にアップデート後、cpanインストールが失敗する。

CentOS 5.3がリリースされたということで、何気なく yum update したところ、cpanインストールが失敗するようになった。

# cpan -i JSON::XS
...(色々出力される)
LWP failed with code[500] message[Errno architecture (i386-linux-thread-multi-2.6.18-53.1.14.el5pae) does not match executable architecture (i386-linux-thread-multi-2.6.18-53.el5) at /usr/lib/perl5/site_perl/5.8.8/Errno.pm line 11.


エラーメッセージでググって出てきた http://casey.jp/article.php?story=20090410191319161http://d.hatena.ne.jp/sotarok/20090409/1239300821 を参考にして Errno.pmを退避。

# mv /usr/lib/perl5/site_perl/5.8.8/Errno.pm /usr/lib/perl5/site_perl/5.8.8/Errno.pm.bak


cpanインストールの出力を見た感じ、さっきよりは進むようになったけど、今度はテストで失敗する。

# cpan -i JSON::XS
...(色々出力される)
t/00_load...............ok 1/1Can't use an undefined value as an ARRAY reference at /usr/lib/perl5/5.8.8/Test/Harness.pm line 373.
make: *** [test_dynamic] エラー 255
  /usr/bin/make test -- NOT OK
Running make install
  make test had returned bad status, won't install without force


上記エラーメッセージでググっても解決方法が分からなかったが、とりあえずエラーを吐いている Test/Harness.pmというのをアップデートしてみたところ、Test/Harness.pm自体のアップデートは成功した。

# cpan -i Test::Harness


で、ようやくインストールできるようになった。

# cpan -i JSON::XS
...(色々出力される)
t/00_load.t ............. ok
t/01_utf8.t ............. ok
t/02_error.t ............ ok
t/03_types.t ............ ok
t/04_dwiw_encode.t ...... ok
t/05_dwiw_decode.t ...... ok
t/06_pc_pretty.t ........ ok
t/07_pc_esc.t ........... ok
t/08_pc_base.t .......... ok
t/09_pc_extra_number.t .. ok
t/10_pc_keysort.t ....... ok
t/11_pc_expo.t .......... ok
t/12_blessed.t .......... ok
t/13_limit.t ............ ok
t/14_latin1.t ........... ok
t/15_prefix.t ........... ok
t/16_tied.t ............. ok
t/17_relaxed.t .......... ok
t/18_json_checker.t ..... ok
t/19_incr.t ............. ok
t/20_faihu.t ............ ok
t/99_binary.t ........... ok
All tests successful.
Files=22, Tests=25550, 39 wallclock secs (22.86 usr  1.40 sys + 13.07 cusr  1.31 csys = 38.64 CPU)
Result: PASS
  /usr/bin/make test -- OK
Running make install
Installing /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/JSON/XS/XS.so
Installing /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/JSON/XS/XS.bs
Files found in blib/arch: installing files in blib/lib into architecture dependent library tree
Installing /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/JSON/XS.pm
Installing /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/JSON/XS/Boolean.pm
Installing /usr/share/man/man1/json_xs.1
Installing /usr/share/man/man3/JSON::XS::Boolean.3pm
Installing /usr/share/man/man3/JSON::XS.3pm
Installing /usr/bin/json_xs
Writing /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/JSON/XS/.packlist
Appending installation info to /usr/lib/perl5/5.8.8/i386-linux-thread-multi/perllocal.pod
  /usr/bin/make install  -- OK


ついでにモジュールを読み込めているかテスト

# perl -MJSON::XS -e'print "hoge\n";'
hoge