2011年8月31日水曜日

FreeBSDにlinux由来のソフトウェアを入れようとすると、perlのpathのせいでしくじる

 1.FreeBSDにlinux由来のソフトウェアを入れようとすると、perlのpathのせいでしくじる

今日は、ffmpeg を install しようとして、失敗した。
(portupgrade は楽だが、成功率は100パーセントではない)

multimedia/ffmpeg の場合は、texi2pod.pl の一行目に
#!  /usr/bin/perl -w
とあるのだが、FreeBSD での perl 本体の場所は、/usr/local/bin/perl である。
($ type perl
としてみるがよい。昔は/usr/bin/perl だったらしいが、少なくとも8.2では/usr/local/bin/にある。)

perl script の path が正しくなくてmakeが通らないことは、ports systemを使わないでlinux用のソフトウェアを source codeからcompile、installをしようとするときにも、しばしばある。

2.対策
(1)
source codeがあるならば、*.pl という名のファイル内の "/usr/bin/perl" を "/usr/local/bin/perl" に置換してしまえばよいのだが、毎回やるのは面倒くさい(一行ですむけど)。よってこの方法は不採用。

(2)
# ln -s /usr/local/bin/perl5.14.1 /usr/bin/perl
# ln -s /usr/local/bin/perl5.14.1  /usr/bin/perl5
一見やる気ないが、これで万事OK。

(3)
(2)でいいのだが、perlをportupgradeするたびに(2)をするのは面倒くさい。なので /usr/local/etc/pkgtools.confの AFTERINSTALL のところに
        'lang/perl5*' =>
          'ln -s /usr/local/bin/perl5* /usr/bin/perl',
と書いておけば、perlのversionが6に上がるまでは安泰だ。

3.参考文献
ports の不具合の報告 http://www.freebsd.org/cgi/query-pr.cgi?pr=131331

4.追記
ふつうは、perlのmake optionで
USE_PERL on
になっているので、上記対策は必要ないらしい(/usr/ports/lang/perl5.14.1/Makefile を参照)。けれど、なぜか/usr/bin/perl がなかった時のために記事は残しておく。pkgtools.confは編集しないで様子見がよろし。