FreeBSD ports の wget コマンドにアップデートがあるということで、FreeBSD 7サーバー上でコマンドを更新するため、portupgrade を掛けたら予期せぬところで以下のようにエラーが発生。
./texi2pod.pl -D VERSION="1.13.4" ./wget.texi wget.pod /usr/local/bin/pod2man --center="GNU Wget" --release="GNU Wget 1.13.4" wget.pod > wget.1 /usr/local/bin/pod2man: not found gmake[2]: *** [wget.1] Error 127 gmake[2]: Leaving directory `/usr/ports/ftp/wget/work/wget-1.13.4/doc' gmake[1]: *** [all-recursive] エラー 1 gmake[1]: ディレクトリ `/usr/ports/ftp/wget/work/wget-1.13.4' から出ます gmake: *** [all] エラー 2 *** Error code 1 Stop in /usr/ports/ftp/wget. *** Error code 1 Stop in /usr/ports/ftp/wget. ** Command failed [exit code 1]: /usr/local/libexec/pkgtools/script -qa /tmp/portupgrade20130206-8378-a7x9um-0 env UPGRADE_TOOL=portupgrade UPGRADE_PORT=wget-1.13.4_1 UPGRADE_PORT_VER=1.13.4_1 make ** Fix the problem and try again. ** Listing the failed packages (-:ignored / *:skipped / !:failed) ! ftp/wget (wget-1.13.4_1) (new compiler error)
pod2man コマンドは存在しているのだけど、、、、 pod2man が何かファイルを見つけられないのだったっけ?インストールされていないコマンドを実行しようとした場合は、shellは「not found」じゃなくて、「command not found」と出力するはずなので、何が見つからなかったのかよくわからない。wgetコマンド本体じゃなくて、doc を生成せいする時にエラーを出しているように見えるので、”/usr/ports/ftp/wget/work/wget-1.13.4/doc” にて、make clean;make を発行してみると、
./texi2pod.pl -D VERSION="1.13.4" ./wget.texi wget.pod /usr/local/bin/pod2man --center="GNU Wget" --release="GNU Wget 1.13.4" wget.pod > wget.1 /usr/local/bin/pod2man: not found *** Error code 127 Stop in /usr/ports/ftp/wget/work/wget-1.13.4/doc.
ここにあるべきファイルが原因だろうとは推測出来るものの、何が原因となっているのかが見つからない!
そこでエラーメッセージを検索してみたところヒントが見つかりました。
/usr/local/bin/pod2man ファイルを head でみてみると、
# head /usr/local/bin/pod2man #!/usr/local/bin/perl eval 'exec /usr/local/bin/perl -S $0 ${1+"$@"}' if $running_under_some_shell; # pod2man -- Convert POD data to formatted *roff input. # # Copyright 1999, 2000, 2001, 2004, 2006, 2008 Russ Allbery <rra@stanford.edu>
ということで、perlスクリプトでした。そして、/usr/local/bin にあるべき perl は、
# cd /usr/local/bin # ll perl ls: perl: No such file or directory
存在していたのは、「perl5.12.4」 で、「perl」 へのシンボリックリンクは存在していない!なんというくだらない原因。
過去に存在していた気がするんだけどな〜、メンテナンスで頻繁に可能な範囲でパッケージを最新にするようにしているため perl をアップグレードしたときにリンクが消えたのかもしれない。
素直に、perl5.12.4 を perl にシンボリックリンクを張って、再度 wget コマンドを 「portupgrade wget-1.13.4_1」 で更新。
無事、更新出来ました。
「new compile error」ということで初めて見るエラーメッセージで慌ててしまいましたけど、原因を突き詰めて行けば、単純なシステム管理上のミスで、終わってみれば、「なんて、無駄なトラブルシューティングの時間だったんだろう。」というのが、今回の感想。