・libcom_err.so
多分、どっちでも問題ないレベルの話だけど、しばらくハマっていたのでメモ代り。
OpenLDAP-2.4.29 -> heimdal-1.5.2 とビルドしてきて、samba-3.6.3をビルドしてみたのだけど、 よく見ると、/usr/sbin/smbd が参照しているライブラリがx86とx86_64でちょっとだけ異なっている。
$ diff -u x86 x86_64 --- x86 2012-03-11 10:31:47.202454283 +0900 +++ x86_64 2012-03-11 13:07:38.800407709 +0900 @@ -1,4 +1,4 @@ -/lib/ld-linux.so.2 +/lib64/ld-linux-x86-64.so.2 libacl.so.1 libasn1.so.8 libattr.so.1 @@ -6,7 +6,7 @@ libavahi-common.so.3 libc.so.6 libcap.so.2 -libcom_err.so.1 +libcom_err.so.2 libcrypt.so.1 libcrypto.so.1.0.0 libcups.so.2 @@ -40,4 +40,4 @@ libwbclient.so.0 libwind.so.0 libz.so.1 -linux-gate.so.1 +linux-vdso.so.1
具体的には、x86ではlibcom_err.so.1を参照するのに、x86_64ではlibcom_err.so.2を参照している。 あれれ、と思って調べてみると、libcom_err.so.1はheimdalパッケージ由来で、libcom_err.so.2はe2fsprogs由来。
パッケージを調べてみると、x86用のe2fsprogs(e2fsprogs-1.42-i586-P1.txz)にも、 x86_64用のe2fsprogs(e2fsprogs-1.41.12-x86_64-P2.txz)にも/lib{,64}/libcom_err.so.2.0.0は存在し、 /usr/lib{,64}/libcom_err.so からのリンクも存在している。
それなのに、なぜx86環境ではe2fsprogs由来のlibcom_err.so.2ではなく、 heimdal由来のlibcom_err.so.1を見にいってしまうのだろう、、とsambaのconfigureスクリプトを読んでみたら、 /usr/bin/compile_etコマンドの有無でe2fsprogsのlibcom_err.soが使えるかを判別しているようだった。
そこで改めてパッケージのリストを見ると、x86_64用には/usr/bin/compile_etがあるけど、x86用には無い。 さらによく見たら、x86_64用には/usr/lib64/pkgconfig/com_err.pcがあるけど、x86用には無い。
どうやらこのヘンだろうと目星を付けて、PlamoBuildスクリプトを調べたら、x86_64用では make install してから make install-libs しているけど、x86用では make install しかしていなかったのが原因っぽい。
多分、シンボル等は解決できているはずなので、参照先がlibcom_err.so.1でもlibcom_err.so.2でも問題にはならないとは 思うけど、念のため、このあたり両者が同じ内容になるようにパッケージングをし直す予定。