追記
perlbrew 最新版では修正済みです。patchperl にパッチ投げておきました。
perlbrewも最新のpatchperl を使うようになったので、失敗する場合はもう一度perlbrew の最新版を再インストールしてください(perlbrew のバージョン番号は変わってないので注意)
追記終わり
http://d.hatena.ne.jp/Itisango/20110504/1304487042 の原因。
原因 - Ubuntu の math ライブラリ諸々がディレクトリごと移動した
Configure はデフォルトで
/usr/local/lib /lib /usr/lib /usr/lib64
を読みに行くところ、Ubuntu Natty からは libm などのライブラリが
/lib/i386-linux-gnu /usr/lib/i386-linux-gnu
などに移動しているためリンクできずにリンカがエラーを吐く。
対策
Configure の plibpth にこれらのディレクトリを加えてやれば解決できる。
ライブラリのパスは環境に依存してるので
$ gcc -print-search-dirs | grep libraries | cut -f2 - -d= | tr ':' '\n'
などして確認できる。
おまけ
make test の時に
../lib/User/pwent.t ............................................... ok ../lib/feature/unicode_strings.t .................................. ok x2p/s2p.t ......................................................... ok Test Summary Report ------------------- op/stash.t (Wstat: 0 Tests: 31 Failed: 0) TODO passed: 26 ../cpan/Memoize/t/errors.t (Wstat: 11 Tests: 6 Failed: 0) Non-zero wait status: 11 Parse errors: Bad plan. You planned 11 tests but ran 6. ../ext/ODBM_File/t/odbm.t (Wstat: 32512 Tests: 0 Failed: 0) Non-zero exit status: 127 Parse errors: No plan found in TAP output ../lib/DBM_Filter/t/01error.t (Wstat: 32512 Tests: 3 Failed: 0) Non-zero exit status: 127 Parse errors: Bad plan. You planned 21 tests but ran 3. Files=1808, Tests=349977, 930 wallclock secs (73.67 usr 14.43 sys + 511.11 cusr 72.13 csys = 671.34 CPU) Result: FAIL make: *** [test_harness] Error 3
のようなエラーが出た場合は libgdbm のリンクに失敗しているため、
$ perlbrew install perl-5.12.3 # もしここで失敗したら $ cd ~/perl5/perlbrew/build/perl-5.12.3/ $ locate libgdbm | grep o$ /usr/lib/i386-linux-gnu/libgdbm.so /usr/lib/i386-linux-gnu/libgdbm_compat.so $ vim ext/ODBM_File/hints/linux.pl
として ext/ODBM_File/hints/linux.pl の条件式をlocate で確認したパスに合わせて次のように書き換える
if (-e '/usr/lib/libgdbm_compat.so' or -e '/usr/lib64/libgdbm_compat.so' or -e '/usr/lib/i386-linux-gnu/libgdbm.so' or -e '/usr/lib/i386-linux-gnu/libgdbm_compat.so' ) {
パーミッションが -r--r--r-- なので強制的に上書き。その後、
$ make clean && make && make test $ make install
すればあら不思議インストールされています。
$ perlbrew list * perl-5.12.1 perl-5.12.3 /usr/bin/perl (5.10.1)
ということでライブラリのパスが変わってしまったために起きた問題でした。