試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

emul-linux-x86-compat-20071114-r1でlibstdc++.so.5が見つからない?

emul-linux-x86-compatは自前では管理していない*1ため、パッケージを利用しているのだが、今回、バージョン1.0-r3から20071114-r1に上げたところ、

$ realplay
/opt/RealPlayer/realplay.bin: error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory

このように、libstdc++.so.5が見つからない。これは、このファイルが/usr/lib32/libstdc++-v3/ディレクトリに移動したにも関わらず、ライブラリ探索パスに含まれていないことが原因。
この探索パスは、一般的には/etc/ld.so.confに書かれるが、Gentoo Linuxでは/etc/env.d/以下のファイルにLDPATHという変数に書かれる形となっている。

$ sudo sh -c 'echo LDPATH="/usr/lib32/libstdc++-v3/" > /etc/env.d/99libstdc++-emul'
$ sudo env-update

とすることでこの問題は回避できるが、面倒なら、しばらく
ファイル名: /etc/portage/package.mask

>=app-emulation/emul-linux-x86-compat-20071114

このバージョンをマスクしてしまうのも手かも。
(2007/11/26)forums.gentoo.org/viewtopic-t-621098-start-0-postdays-0-postorder-asc-highlight-firefoxbin.html (リンク切れ)によると、このバージョンを2回emergeすると問題なくなるようだ。

$ sudo emerge -avu emul-linux-x86-compat; sudo emerge -avO emul-linux-x86-compat

(2007/12/8)また、今回の件とは関係のない話だが、Debian/Ubuntuにおいて、32bit版libstdc++.so.5は、x86_64版では「ia32-libs」、x86_32版では「libstdc++5」というパッケージで提供されているようだ。

*1:用意するのが面倒な上、あまり使用していないため