2009年10月19日

[debian-users:53197] Re: バージョンの異なる同一ソフトが2つ同時に存在する不具合の解消方法について

どうもいろいろとご指摘を有り難うございます。
まとめてここに書かせていただきます。申し訳ありません。

libdbus1.2.1が/usr/lib/にインストールされ、
libdbus1.2.6が/usr/local/lib/にインストールされ、
また/etc/ld.so.confに/etc/ld.so.conf.d/libc.confを通じて
/usr/local/libのみが記載されている場合、
ライブラリを読む順序は/usr/lib/(例えこれはld.so.conf等に記載されていなくても)から

/usr/local/libなのでしょうか。
だとすれば、aptitudeを通じてインストールされ、本来libdbus1.2.1を使う予定のC言語debパッケージは
本来通りlibdbus1.2.1を使うことができ、
使いたいC言語ソフトAは/usr/lib/でのサーチの際は満足なバージョンがなく/usr/local/lib/に進んで
満足するバージョンlibdbus1.2.6を得てソフトAも正しく起動できるということでしょうか。

そうならばなぜ、再起動した時に「failed to initialize HAL!」のダイアログが表示されたのでしょうか。
libdbusのみならずdbus等も/usr/lib/及び/usr/local/lib/にインストールされているので、ダイアログの
原因はdbusの方だったのでしょうか。なお、/etc/rc2.d/は、S12dbus及びS24halとなっています。

しかしながら使いたいソフト及びそれに必要なライブラリを次々と/usr/localに溜め込んでいくのはあまり気持ちの
いいものではありません。そこで、使いたいソフト及びそれに必要なライブラリ毎に異なる1つのディレクトリを作り、
ここにそれを保存することができないかと考えました。
そこで、(1)まず/usr/localをバックアップした後に、
(2)ソフトB及びソフトAを./config,make,make installにより/usr/local/にインストールし、
(3)次にこの/usr/localをそのまま他のディレクトリDに移動して、上記バックアップしていたものをまた
元の/usr/localに戻す方法、
を考えました。
(なお、最初からディレクトリDにソフトB及びソフトAをインストールすることも試みましたが、
ソフトBをディレクトリDにインストールした後、ソフトAの展開ディレクトリにおいて、
LD_LIBRARY_PATH=ディレクトリD/lib/ ./configure
としても、ディレクトリDにインストールしたソフトB(libdbus1.2.6)を認識してくれませんでした。)

そして、ソフトAを起動する時には、
LD_LIBRARY_PATH=ディレクトリD/lib/ ディレクトリD/bin/ソフトA
として起動することを考えました(碇様LD_LIBRARY_PATHのご教示を有り難うございます)。
そしてこれを試してうまくいったように思います。
しかしこの方法がかなり奇策ぽぃので、これを達成するための何か別の標準的な方法があるのではないかと思いました。


投稿者 xml-rpc : 2009年10月19日 23:15
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/89586
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。