LD_LIBRARY_PATHは、sudoの後は常に空白


9

ソフトウェアを手動でインストールしているように見えるたびに、共有ライブラリエラーが発生します。実行するecho $LD_LIBRARY_PATHと、何も表示されません。私はファイルに追加しようとし/usr/local/libましたが、.conf実行され/etc/ld.so.conf.dないようです。

これも機能しません(引用符など):

LD_LIBRARY_PATH="/usr/local/lib"
export LD_LIBRARY_PATH
sudo ldconfig -v

値は一時的に設定されますが、ターミナルウィンドウを終了した場合、値は保持されません。再起動しても何も起こりません。


追加してみてください~/.bashrc
Kevdog777


重複ではありません。質問は無関係であり、答えは機能しません。
反体制派の怒り2014


1
はい、何かが改善されたかどうかをテストするために更新するのではなく、1年前の壊れたソフトウェアを使用します。
反逆の怒り2014

回答:


7

次のものをに追加します.bashrc

vim ~/.bashrc

...
export LD_LIBRARY_PATH=/usr/local/lib

これにより、コンピューターを再起動しても、そのパスが割り当てられたままになります。


2
1人のユーザーにとってはそれで問題ありません。何のためにおよそすべてのユーザー?
反体制派の怒り2014

2
@DissidentRage:同じことを/etc/bash.bashrcに追加します
JdeHaan

これは所定のスコープで機能するため、これを回答としてマークします。明らかに実行されていないファイルに対して私は何ができます/etc/ld.so.conf.dか?
反体制派の怒り2014

1

Red Hat Enterprise Linux(RHEL)6では、/etc/ld.so.confが含まれていますinclude ld.so.conf.d/*.conf。この行/etc/ld.so.conf.d/*.confがないと、のアイテムは解析されません。

ldconfig解析しているライブラリ/ディレクトリを確認するには

ldconfig -v 

現在のバージョン番号、スキャンされる各ディレクトリの名前、作成されたリンクを出力します。


ええ、/etc/ld.so.conf何が入っているのか気になったので、以前チェックしました。それはincludeラインを持っていた。
反逆の怒り2014

実行ldconfig -vすると、ライブラリが含まれていない理由がわかります。ldconfig -p現在のキャッシュファイルにあるライブラリとディレクトリを印刷するために実行できます。
pyther 14

0

私は最終的にこれをエイリアスで解決しました:

alias sudo='sudo PATH="$PATH" HOME="$HOME" LD_LIBRARY_PATH="$LD_LIBRARY_PATH"'

変数がエイリアスの定義時ではなく、呼び出し時に展開されるように、必ず単一引用符を使用してください。

この:

  • HOMEを保持します(それ以外の場合は/ rootに設定されます)
  • PATHを保持します(そうでない場合はsudersで「安全な」パスに設定されます)
  • LD_LIBRARY_PATH の現在の値を保持します(それ以外の場合は空白になります)

(あなたは物事がでに設定され得るものを見ることができます。sudo bash -c "echo $HOME"

私はカスタムドライバーを使用しており、ドライバーにアクセスするには常にテストプログラムをsudoする必要があります。システム領域にライブラリのテストバージョンをインストールしたくないので、必要に応じてLD_LIBRARY_PATHを使用して特定のテストディレクトリをセットアップします。固定のLD_LIBRARY_PATHを設定することはできません。変更して現在の設定を維持できるようにする必要があります。PATHとHOMEを保持することで、作業環境-スクリプトとディレクトリ構造にアクセスできます。

このエイリアスにより、sudoersに包括的な権限を付与する必要がなくなります。どうせsudoersの設定に関係なく、LD_LIBRARY_PATHの回避策は明らかにありません。スクリプト内ではsudoは機能しませんが、必要に応じてハードコーディングできます。

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