web-dev-qa-db-ja.com

LD_LIBRARY_PATHをすべてのユーザーとシステムサービスにエクスポートする方法

エクスポートしたいLD_LIBRARY_PATHシステムサービスとすべてのユーザーに。システムサービスはログイン前に実行されるため、.bashrcは適用されません。

これを達成する方法は?

12
linquize

する必要はありません。ディストリビューションに応じて、ディレクトリを/etc/ld.so.confまたは/etc/ld.so.conf.d/の新しいファイルに追加します。

その後、(少なくともRedhatでは)ldconfigをrootとして実行する必要があります。

注意として、システムの共有ライブラリパスに追加するライブラリ(環境、ld.so.conf経由、または/ usr/local/libに置く)には注意が必要です。特に、同じライブラリーの同じsonameを持つ2つの異なるバージョンに注意してください。たとえば、dpkg/rpm/etcを介してlibfoo.0.1(soname libfoo.0)がインストールされている場合、カスタムライブラリディレクトリにlibfoo.0.2(soname libfoo.0)は必要ありません。

(実際にはシステム全体の環境変数を引き出すのは簡単ではありません。ほとんどのユーザーログインは/etc/environmentで取得できます。スクリプトはinitシステムに依存しますが、(たとえば)Debianのsysv initを使用すると、それを/etc/default/rcSに入れます。何でもinittabからすぐに実行されてしまいます。

20
derobert

ファイル内のすべてのパスを/etc/ld.so.conf.dに追加して実行できます。

ldconfig -v 

次に、それらをロードします。

3
PersianGulf