/ usr / local / libがデフォルトでライブラリパスにないのはなぜですか? [閉鎖]

/ usr / local / libがデフォルトでライブラリパスにないのはなぜですか? [閉鎖]

下にFHS、システムパッケージ(RPMなど)はライブラリを/usr/lib(または/usr/lib64)にインストールします。同様に、以前のconfigure;make;make installルーチン(システム配布の一部ではない)でコンパイルされたライブラリは、デフォルトで/usr/local/lib(または/usr/local/lib64)にインストールされます。

ld.so.conf通常、LD_LIBRARY_PATHまたはインストールされているアプリケーションの変更をユーザーに依頼することは、誤った形式と見なされます。例をご覧ください。

http://web.archive.org/web/20060719201954/http://www.visi.com/~barr/ldpath.html

しかし、この規則/usr/local/libには例外があるべきではありませんか?

この場合、/usr/local/libデフォルトでライブラリ検索パスに多数の/ほとんどのディストリビューションが含まれていないのはなぜですか?これまでは、ArchLinuxだけがこれをバグと見なしているようです。http://bugs.archlinux.org/task/20059?project=1&opened=2263 そして関連http://bbs.archlinux.org/viewtopic.php?id=99807

RPATHにライブラリを/usr/local/lib含める必要があるアプリケーションの場合、オペレーティングシステム/usr/local/libにすでにこの設定があると予想する方が正確ですか?私は$ ORIGINに基づいていないRPATHのどれも使用するのが好きではありません。

これは、システムの安定性とソフトウェアパッケージの方法に影響を与えるため、賢明な質問ではありません。

答え1

何人かの人々は/usr/local/libがデフォルトパスになければならず、Red HatのようなLinuxの亜種では「バグ」と見なされるべきであると提案したが、これは本当ではない。

この回答https://stackoverflow.com/a/17653893 目立つ部分を指摘した。http://linuxmafia.com/faq/Admin/ld-lib-path.html

多くの Red Hat 派生ディストリビューションでは、通常 /etc/ld.so.conf ファイルに /usr/local/lib は含まれていません。私はこれがバグだと思っています。

私はRed Hatにこの問題を提起しましたが、今はこれに同意しません。

ベンダーが/usr/localにインストールするシステムでは、Red Hat提供のパッケージは絶対に/usr/localにインストールされず、答えは異なります。これらのシステムでは、/usr/local/libがデフォルトの検索パスにあると予想するのが妥当です。

Red Hat では、/usr/local/lib がデフォルトの検索パスにあってはならないと述べています。ここに追加されたライブラリはRPMとyumで利用できるためです。

私はこれをさらに調べました。 /usr/local/libにシステムライブラリの独自バージョンをインストールすると、通常はRPMまたはyumを介してインストールする他のシステムパッケージの依存関係を満たすことができます。明らかに、これはシステムの安定性に影響を与えます。さらに悪いことは、非常に微妙に行うことです。 yum checkでは、必要なすべてのパッケージのすべてのベンダーバージョンがあると報告できますが、/usr/local/libに重要なエントリの独自バージョンがあることに気付かない場合があります。

他のパッケージマネージャを使用するシステムでは、これが適用されない可能性があります。

RPATHに何を入れるべきかについての完全な答えはありません。しかし、可能であれば/usr/local/libにあるライブラリに依存することを避け、代わりに/ opt(つまりインストール中に制御する場所)にインストールする必要があると思います。

関連情報