ソフトウェアを手動でインストールしているように見えるたびに、共有ライブラリエラーが発生します。 echo $LD_LIBRARY_PATH
を実行すると、.. nothingと表示されます。 /usr/local/lib
を.conf
の/etc/ld.so.conf.d
ファイルに追加しようとしましたが、実行されないようです。
これも機能しません(引用符など):
LD_LIBRARY_PATH="/usr/local/lib"
export LD_LIBRARY_PATH
Sudo ldconfig -v
値は一時的に設定されますが、ターミナルウィンドウを終了した場合、値は保持されません。再起動しても何も起こりません。
以下を.bashrc
に追加します。
vim ~/.bashrc
...
export LD_LIBRARY_PATH=/usr/local/lib
これにより、コンピュータを再起動しても、そのパスが割り当てられたままになります。
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
現在のバージョン番号、スキャンされる各ディレクトリの名前、作成されたリンクを出力します。
私は最終的にこれをエイリアスで解決しました:
alias Sudo='Sudo PATH="$PATH" HOME="$HOME" LD_LIBRARY_PATH="$LD_LIBRARY_PATH"'
変数がエイリアスの定義時ではなく、呼び出し時に展開されるように、必ず単一引用符を使用してください。
この:
(何が設定されているかを確認できます:Sudo bash -c "echo $HOME"
)
私はカスタムドライバーを使用しており、ドライバーにアクセスするにはテストプログラムを常にsudoする必要があります。システム領域にライブラリのテストバージョンをインストールしたくないので、必要に応じてLD_LIBRARY_PATHを使用して特定のテストディレクトリをセットアップします。固定のLD_LIBRARY_PATHを設定することはできません。変更して現在の設定を維持できるようにする必要があります。 PATHとHOMEを保持することで、スクリプトとディレクトリ構造という私の作業環境にアクセスできます。
このエイリアスにより、sudoersに包括的な権限を付与する必要がなくなります。どうせsudoersの設定に関係なく、LD_LIBRARY_PATHの回避策は明らかにありません。スクリプト内ではSudoは機能しませんが、必要に応じてハードコーディングできます。