私はldconfig
とLD_LIBRARY_PATH
を使用することの一般的な基礎を知っていますが、私の状況を少し助けてくれることを願っています。ソフトウェアパッケージのLD_LIBRARY_PATHまたはldconfigの適切な使用
私は、独自のディレクトリにあり、多くのライブラリの独自のバージョンを持っているポータブルソフトウェアパッケージを持っています。
このディレクトリから実行される多数のバイナリとスクリプトがあります。
バイナリ(apache、php、postgres)の中には、別々のバージョンがシステムにインストールされているものもあります。
phpのバージョンが2つある可能性があるので、ldconfigファイルを使用する "myapp"のバージョンをシステムが判別できない場合は、/etc/ld.so.conf.d/myapp.conf
を作成するだけでは不十分です。
私はこのようなシステムの設定に関するベストプラクティスを探しています。最初にソフトウェアパックをセットアップした人は、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は PHPのlibsを使用する必要があります/ MYPACKの両方から/ MYPACKで、デフォルトのディレクトリに存在する/ MYPACK/local/libのとから、ディストリビューションのバージョンは/ libを使用する必要がありますLinuxライブラリのパスに関するご質問 - /etc/ld.so.conf.d/php.confを/ mypackのphpのバージョンにのみ影響するように指定できますか? - 実行ファイルの場所に基づいてライブラリパスを指定できますか?つまり、実行時に、実行可能ファイルのパスが/ mypackの下にある場合、自動的にそこからライブラリを使用できますか? - ユーザー単位ではどうですか?システムの一部またはほとんどは、異なるユーザーアカウントで動作します。ユーザーごとに異なるライブラリパスを設定することができれば、それが解決されます。
にそれらを付加ラッパースクリプトを使用する。ラッパースクリプトはLD_LIBRARY_PATHの値を設定し、実行可能ファイルを実行します。例えばgoogle-chromeを見てみましょう。 –
これが誰かが出てくる唯一の方法だとすれば、私はそれに行くでしょう。私は既にCentOSでChrome 28を実行していましたが、実行ファイルの数が異なるため、私はそれを避けようとしていました。 – thatthatisis