2012年3月2日金曜日

FreeBSD 8.3-PRERELEASE

昨日、csupしてビルドしてインストールしたら、FreeBSD 8.3-PRERELEASEになっていました。すでにFreeBSD 8.3-BETA1のISOイメージがダウンロードできるようになっています。



しばらく前の8.2-STABLEのときに気がついたんですが、libc.so.7に、FBSD_1.3というシンボルがつくようになっていて、新しい8.2-STABLE(現在の8.3-PRERELEASEも含めて)でビルドしたバイナリが、古い8.2では実行できない場合があります。



あ~、そんなわけで、古い8.1-STABLEなホストがまだ残っているんですが、そろそろ全部のホストをアップデートしないといけないかな、っていう気になってきました。





シンボルの調べかたがよくわからないので、適当なことをやっていますが…、こんな感じで、libc.so.7にFBSD_1.3というシンボルが含まれていることはわかりました。



# objdump -p /lib/libc.so.7
(途中省略)
Version definitions:
1 0x01 0x0865f4e7 libc.so.7
2 0x00 0x077a28b0 FBSD_1.0
3 0x00 0x077a28b1 FBSD_1.1
        FBSD_1.0
4 0x00 0x077a28b2 FBSD_1.2
        FBSD_1.1
5 0x00 0x077a28b3 FBSD_1.3
        FBSD_1.2
6 0x00 0x0f1efaa0 FBSDprivate_1.0
        FBSD_1.3



一方、2011年3月ころにビルドした8.2-STABLEで、同様に調べてみると、



Version definitions:
1 0x01 0x0865f4e7 libc.so.7
2 0x00 0x077a28b0 FBSD_1.0
3 0x00 0x077a28b1 FBSD_1.1
        FBSD_1.0
4 0x00 0x077a28b2 FBSD_1.2
        FBSD_1.1
5 0x00 0x0f1efaa0 FBSDprivate_1.0
        FBSD_1.2



という感じで、FBSD_1.2までで、FBSD_1.3は無いです。



たとえば、たまたま見つけた、/usr/local/bin/guniq を見てみると



# nm /usr/local/bin/guniq | grep FBSD_1.3
         U posix_fadvise@@FBSD_1.3



という風になるんで、このguniqを、FreeBSD 8.2なホストで実行しようとすると、たぶんエラーが出て実行できない、というわけ。



これまで、



  • ある1台のホストでportsを使って、バイナリパッケージを作成し、


  • その他のホストでは、バイナリパッケージを使ってアップデートする


ということをやってたので、バイナリパッケージを作成するホストを、FreeBSD 8.3にしてしまうと、8.2のホストでそのパッケージが使えなくなってしまうんですね。手抜きをやっているんで、しょうがないんですが。



2010年10月ころにビルドした8.1-STABLEなホストがまだ残っているんですが、これは、201110月の8.2-STABLEなホストでビルドしたバイナリパッケージでも大丈夫だったので、OSをアップデートしないまま、だましだまし使い続けていたけど、そろそろダメかな。







20120301





0 件のコメント:

コメントを投稿