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


12

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

これを達成する方法は?


1
あなたが解決しようとしている実際の問題について詳しく説明していただけますか?
キース

回答:


20

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

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

注意事項として、システム共有ライブラリパスに追加するライブラリを注意する必要があります(環境、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をまっすぐに実行してください。まあ、できるとは思いません。)


@bahamat編集の重複のために推測していますが、私の答えから段落を取り出してしまいました。私はそれを再び追加します
。-デロバート

いいえ、私はそれを削除しただけです。なぜなら、「あなたがする必要はない」ということはすでにそれを要約しているからです。
バハマ

@bahamat編集ログを確認してください、unix.stackexchange.com / posts / 46620 / revisions ...私たちはどちらも編集リンクを押して、変更を送信し(追加の段落)、変更を送信したと思います(もちろん、余分な段落は含まれていません)。StackExchangeがこれを検出して大声で警告する必要があるようですが、明らかにそうではありません
...-derobert

いいえ、不要だと思ったため、その段落を明示的に削除しました。他の変更は加えませんでした。編集内容は6m離れていて、私の後に来たものは12m遅れていました。衝突ではありませんでした。
バハマ

@bahamatああ、編集コメントを残すことで混乱を解消できたでしょう
...-derobert

3

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

ldconfig -v 

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.