2009年11月28日土曜日

(FreeBSD) /usr/local/lib/libX11.so: undefined reference to `shmctl@FBSD_1.1'

FreeBSDなある1台のマシンでだけ、emacsを実行するとshmctlがundefinedとか言われて起動しなくて、でもemacs -nwだと起動するなあ、なんて不思議な現象に気がついて、いろいろやっていくうちに、やっとたどりついたのは



/usr/local/lib/libX11.so: undefined reference to `shmctl@FBSD_1.1'



という問題。



同じ話がここで出てるのを見つけたんですが、こうなった原因も、まさにそのとおりでした。
http://forums.freebsd.org/showthread.php?p=48130


うちのところでは



  • 1台のマシンでだけ、portsでソフトウェアをインストールするとき、make packageで、バイナリパッケージを作成する


  • その他の多数のマシンでは、そのバイナリパッケージを使って、インストール/アップデートしてる


という運用をしています。



そして、OSは、たんなる気まぐれで、RELEASEバージョンは避けていて、STABLEブランチのものを、たまにcvsup & make buildworldして、問題なく動いているときのものをインストールしていました。



といっても、マシンごとに、全部違う日付のときのOSをインストールしてるわけではなく、一応、全部、同じ日付のものをインストールするようにしてました。



・・・してるつもりでした。



あれれ、1台だけ、なぜか、ちょっと古いので動いてまして、まさにその1台で、



/usr/local/lib/libX11.so: undefined reference to `shmctl@FBSD_1.1'



が出てたのでした。
どうも、/lib/libc.so.7 の中身が、ちょこっと変わってたようで、こういうundefined referenceが出てしまう、ってことでした。ちなみに、ライブラリだけでなく、カーネルも関係しているので、カーネルもあわせてアップデートしなければいけませんでした。



問題が起きたマシンは、7月ころにcvsupしてて、その他は、10月にcvsupしたものでした。その間に、変更があったんでしょうね。



ちなみに、make buildworld、make buildkernelも、実験用のマシン1台でだけ行って、他のマシンは、/usr/srcと/usr/objをNFS mountして、インストールするだけにしてます。





実は、ネネさんの方が好みのタイプだったりする。





20091127



どうでもいいか、そんなこと。





0 件のコメント:

コメントを投稿