昨日、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をアップデートしないまま、だましだまし使い続けていたけど、そろそろダメかな。
0 件のコメント:
コメントを投稿