ttt

getttyent

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

2009-11-27 23:59:00 | デジタル・インターネット

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

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


コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。