ldconfig
およびの使用に関する一般的な基本事項は認識してLD_LIBRARY_PATH
いますが、私の状況について少し専門家の助けを借りたいと思っています。
独自のディレクトリに常駐し、多くのライブラリの独自のバージョンを持つポータブル ソフトウェア パッケージがあります。
このディレクトリから実行される多くのバイナリとスクリプトがあります。
一部のバイナリ (apache、php、postgres) も、システムに個別のバージョンがインストールされている場合があります。
/etc/ld.so.conf.d/myapp.conf
php には 2 つのバージョンが存在する可能性があるため、ldconfig ファイルを使用する "myapp" のバージョンをシステムが判断できない場合は、作成するだけでは十分ではありません。
このようなシステムを構成するためのベスト プラクティスを探しています。LD_LIBRARY_PATH
システム上のすべてのアプリケーションがそれを使用するようにエクスポートされたソフトウェア パックを最初にセットアップした人。
パッケージ ディレクトリ内のアプリケーションだけを分離しようとしています。
操作するいくつかのパラメーター:
/mypack
- ソフトウェアパッケージのすべてが含まれています
/mypack/local/lib
- システムと互換性がない可能性のある必要なライブラリが含まれています
ライブラリの例:
/mypack/local/lib/libz.so.1 => /mypack/local/lib/libz.so.1.2.3
/lib/libz.so.1 => /lib/libz.so.1.2.3
バージョンが同じであっても、/mypack にあるものはディストリビューションと互換性がなく、使用するとシステムが壊れる可能性があります
バイナリの例: php は /mypack とデフォルト ディレクトリの両方に存在します。/mypack の php は /mypack/local/lib のライブラリを使用し、ディストリビューション バージョンは /lib を使用する必要があります。
Linux ライブラリ パスに関するいくつかの質問: - /mypack 内の php のバージョンのみに影響するように /etc/ld.so.conf.d/php.conf を指定することは可能ですか? - 実行可能ファイルの場所に基づいてライブラリ パスを指定できますか? つまり、実行時に、実行可能ファイルのパスが /mypack の下にある場合、そこからライブラリを自動的に使用できますか? ――ユーザー単位ではいかがですか?システムの一部/ほとんどが異なるユーザー アカウントで実行されています。ユーザーごとに異なるライブラリパスを設定できれば、それで解決します。