[FreeBSD-users-jp 96320] amd64でi386の同名ライブラリがロードできない

zen-freebsd-ml @ suzuki.que.ne.jp zen-freebsd-ml @ suzuki.que.ne.jp
2018年 10月 8日 (月) 06:15:47 UTC


鈴木@葛飾区です。

FreeBSD11.2(amd64)をインストールして、その上で古いマシンからi386のプロ
グラムやライブラリをコピーして動かそうとしているのですが、妙な現象で悩
んでいます。

古い32bitのライブラリは /usr/local/lib32/10.4 にコピーしてあります。
また、rc.confで
ldconfig32_paths="/usr/local/lib32/10.4 /usr/lib32 /usr/lib32/compat"
のように

perl5.8(i386)のたとえばPostgresSQLのモジュールですが

 # ldd32 /usr/local/lib/perl5/site_perl/5.8.9/mach/auto/DBD/Pg/Pg.so
 /usr/local/lib/perl5/site_perl/5.8.9/mach/auto/DBD/Pg/Pg.so:
        libpq.so.5 => not found (0)
        libm.so.5 => /usr/lib32/libm.so.5 (0x2862e000)
        libc.so.7 => /usr/lib32/libc.so.7 (0x28072000)

のようにlibpq.so.5がnot foundになってしまいます。
もちろん /usr/local/lib32/10.4/libpq.so.5 は存在します。

どうも様子がおかしいのは libpq.so.5 はamd64のための
/usr/local/lib/libpq.so.5 も存在していて、/usr/local/lib に同名の64bit
用ライブラリがあるとダメなのですが、/usr/local/lib/libpq.so.5 を
/usr/lib に移動すると不思議なことに

 # ldd32 /usr/local/lib/perl5/site_perl/5.8.9/mach/auto/DBD/Pg/Pg.so
 /usr/local/lib/perl5/site_perl/5.8.9/mach/auto/DBD/Pg/Pg.so:
        libpq.so.5 => /usr/local/lib32/10.4/libpq.so.5 (0x2862e000)
        libm.so.5 => /usr/lib32/libm.so.5 (0x28656000)
        libc.so.7 => /usr/lib32/libc.so.7 (0x28072000)
        libthr.so.3 => /usr/lib32/libthr.so.3 (0x28684000)
        libintl.so.8 => not found (0)
        libssl.so.7 => /usr/local/lib32/compat/libssl.so.7 (0x286a7000)
        libcrypto.so.7 => /usr/local/lib32/compat/libcrypto.so.7 (0x28704000)

のようにlibpq.so.5はokになります。
(libintl.so.8が新たにnot foundになりますが、これも同名ライブラリが
64bit/32bitにあります)
※amd64のプログラムの方も問題ありません。

32bit用ライブラリと同名のファイルが /usr/lib に存在するとokで
/usr/local/lib以下に存在するとダメな理由があるのでしょうか??

11.2でpkg/portsからインストールしたライブラリを/usr/libに移せば動きそ
うではあるのですが、メンテナンス性が悪くなるためできれば避けたいです。

宜しくお願いいたします。
---
すずき


freebsd-users-jp メーリングリストの案内