しばらく前から、portupgradeでwiresharkをアップデートしようとしても、途中でエラーが出てアップデートできてなかったんですが、いづれportsが直るだろうと放置してました。だけど、wiresharkの0.99.5にはセキュリティアドバイザリが出てるぞと、portauditが毎日報告してくるので、やっぱりアップデートしなくちゃいけないかな、っと。
で、ふと気がつけば、いくつかあるFreeBSDマシンの中で、portupgradeで、0.99.6へアップデートできたマシンと、できなかったマシンがある。
・・・どうも、FreeBSD 5-STABLEのマシンだけ、makeの途中でエラーになっているっぽい感じがします。こんなエラーがでてます。
then mv -f ".deps/libwireshark_la-xmlstub.Tpo" ".deps/libwireshark_la-xmlstub.Plo"; else rm -f ".deps/libwireshark_la-xmlstub.Tpo"; exit 1; fi
cc -DHAVE_CONFIG_H -I. -I. -I.. -I./.. -I./../tools/lemon -I/usr/local/include -I/usr/local/include -I/usr/local/include -I/usr/local/include -I/usr/local/include -I/usr/local/include -I/usr/local/include -I/usr/local/lib/include -DINET6 -O -pipe -Dfreebsd5 -DAPPLLIB_EXP=/usr/local/lib/perl5/5.8.8/BSDPAN -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -I/usr/local/lib/perl5/5.8.8/mach/CORE -I. -I/usr/local/include -I/usr/include -DINET6 "-D_U_=__attribute__((unused))" -O -pipe -funit-at-a-time -Wall -W -Wdeclaration-after-statement -Wendif-labels -Wpointer-arith -I/usr/local/include -D_THREAD_SAFE -D_REENTRANT -I/usr/local/include/gtk-2.0 -I/usr/local/lib/gtk-2.0/include -I/usr/local/include/atk-1.0 -I/usr/local/include/cairo -I/usr/local/include/pango-1.0 -I/usr/local/include -I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include -I/usr/local/include/freetype2 -I/usr/local/lib/include -DINET6 -O -pipe -Dfreebsd5 -DAPPLLIB_EXP=/usr/local/lib/perl5/5.8.8/BSDPAN -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -I/usr/local/lib/perl5/5.8.8/mach/CORE -I. -I/usr/local/include -I/usr/include -MT libwireshark_la-xmlstub.lo -MD -MP -MF .deps/libwireshark_la-xmlstub.Tpo -c xmlstub.c -fPIC -DPIC -o .libs/libwireshark_la-xmlstub.o
gmake[3]: *** `libwireshark.la' に必要なターゲット `inet_pton.lo' を make するルールがありません. 中止.
portupgrade wiresharkが始まった最初のころ、configure実行時のメッセージにヒントが?!
---> Upgrading 'wireshark-0.99.5_3' to 'wireshark-0.99.6' (net/wireshark)
---> Building '/usr/ports/net/wireshark'
===> Cleaning for wireshark-0.99.6
===> Found saved configuration for wireshark-0.99.4
===> Extracting for wireshark-0.99.6
=> MD5 Checksum OK for wireshark-0.99.6.tar.bz2.
=> SHA256 Checksum OK for wireshark-0.99.6.tar.bz2.
途中省略
checking for inet_aton... yes
checking for library containing inet_pton... none required
checking for broken inet_pton... broken
以下省略
inet_ptonがbrokenだそうです。configureでやってるテスト内容をのぞいてみると、IPv6関係かな?と思ったのですが、よくわかんないから、まあいいことにします。
brokenなら、wiresharkが自前で用意しているinet_ptonがコンパイル、リンクされるっぽいです。
なお、FreeBSD 6-STABLEや、7-CURRENTの場合は、
checking for broken inet_pton... ok
となるみたいで、そのせいかビルドも成功しているみたい。
☆
というわけで、OSが用意してくれているinet_ptonがbrokenらしいので、自前のinet_ptonを使うみたいなんですが、
gmake[3]: *** `libwireshark.la' に必要なターゲット `inet_pton.lo' を make するルールがありません. 中止.
となるように、なんかうまくいってないみたいです。
Makefileを見ても、すぐにはよくわかんなかったのですが、なんとなく思いつきで、portsで実際にコンパイル作業を行うディレクトリへ移動し、手でgmakeコマンドをたたいてみると、うまくできちゃいました。
# cd ...SOMEWHERE.../ports/net/wireshark/work/wireshark-0.99.6/
# gmake inet_pton.o
# gmake inet_pton.lo
これでうまくいくかと思えば、やっぱりだめ。
よーくログメッセージを見てみると
gmake[3]: *** `libwireshark.la' に必要なターゲット `inet_pton.lo' を make するルールがありません. 中止.
gmake[3]: ディレクトリ `...SOMEWHERE.../ports/net/wireshark/work/wireshark-0.99.6/epan' から出ます
ああ、ディレクトリが違う。epanという1レベル違うところでエラーがでてました。
というわけで、こんな具合にシンボリックリンクをはってやったところ、正常にビルドできました。
# cd epan
# ln -s ../inet_pton.lo
# ln -s ../inet_pton.o
# cd .libs/
# ln -s ../../.libs/inet_pton.o .
なぜこういう状況になってしまうのか、時間がなくて調べられなかったんですが、まあ、うまくいってしまった、ってことで。
0 件のコメント:
コメントを投稿