PHP ソース インストールで、/usr/local/lib ではなく /usr/local/programname/lib 内のライブラリを使用するようにするにはどうすればよいですか?

PHP ソース インストールで、/usr/local/lib ではなく /usr/local/programname/lib 内のライブラリを使用するようにするにはどうすればよいですか?

/usr/local/programname/libPHP ソース インストールで、または の代わりに内のライブラリを使用するにはどうすればよいでしょうか/usr/local/lib?

のようなプログラム名ごとに LD_LIBRARY_PATH を設定してみましたLD_LIBRARY_PATH="/usr/local/programname1/lib:/usr/local/programname2/lib:/usr/local/programname3/lib"

そして、ログアウトしました。実行もしましたsource /etc/environment(LD_LIBRARY_PATH 変数を /etc/environment に設定しました)。システムを再起動しました。

しかし、それでも、 を実行すると./configure --with-openssl --with-curl、libssl が存在しないというメッセージが表示されます。

テストには最新バージョンが必要なので、apt が提供するパッケージはlibssl-dev使用したくありません。libcurl-dev

また、次の点に留意しました: プログラムの lib ディレクトリを/usr/local/libの代わりににインストールすると/usr/local/programname/lib、環境変数を設定せずに動作します。

しかし、私の意見では、/usr/local/programname/libより明確なので、このタイプのパスを使用したいと思います。

/usr/local/programname/libPHP がの代わりに内のライブラリを使用するようにするにはどうすればよいですか? つまり、他のディレクトリよりも/usr/local/libを優先したいということです。/usr/local/programname/liblib

programname内部にインストールされている各プログラムの名前を指します/usr/local

/etc/ld.so.conf.d/programname.conf/usr/local/programname中に書きました)を使って実行してみましたが、ldconfigまだうまくいきませんでした。

ちなみに私はUbuntu 20.10を使用しています

編集:

システムの慣習に逆らわない- 私はただそうやって先へ進むことはできない。私はこれをやろうとしなくてはならない。そうしないと、行き詰まって、ちょっと古いapt が提供してくれるパッケージ (最新のものが提供されたとしても、たとえば http/3 を使用してテストするなど、他のことはできません)。また、テストもできなくなります。これは、プログラムを将来も使えるようにするため、また、これらを試して楽しむために行います。新しいプログラムでテストすることによって。 にインストールするのは/usr/local気分がよくありません。なぜなら、複数のバージョンのライブラリでテストするからです。たとえば、OpenSSL 1.1.1i と OpenSSL 3.0.0、その他のバージョンでもテストします。したがって、/usr/local にインストールしてもこの点ではメリットはありませんが、 にインストールすると/usr/local/openssl-1.1.1i、よりクリーンになり、時間の節約になります。毎回と を/usr/local/openssl-3.0.0実行し続けることはできません。OpenSSL だけでなく、cURL やその他のパッケージもです。make installmake uninstall

答え1

システムのデフォルト規則は多くの場所で使用されているため、異なるディレクトリを使用することで大きなオーバーヘッドが発生します。

最も簡単な方法は、テストに Docker コンテナを使用することです。これにより、コンテナ内のデフォルトのシステムの場所を使用できます。

答え2

PKG_CONFIG_PATH="/usr/local/programname/lib/pkgconfig"を にLD_LIBRARY_PATH設定して追加したら/usr/local/programname/lib、動作するようになりました。PHP conf では、 内にインストールしたバージョンが使用されるようになりました/usr/local/programname

たくさんの調査を経て、私はこう結論づけました。しかし、これをさらに確認するまで、この方法を試したいすべての人に効果があるかどうかはわかりません。

関連情報