
/usr/local/programname/lib
PHP ソース インストールで、または の代わりに内のライブラリを使用するにはどうすればよいでしょうか/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/lib
PHP がの代わりに内のライブラリを使用するようにするにはどうすればよいですか? つまり、他のディレクトリよりも/usr/local/lib
を優先したいということです。/usr/local/programname/lib
lib
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 install
make uninstall
答え1
システムのデフォルト規則は多くの場所で使用されているため、異なるディレクトリを使用することで大きなオーバーヘッドが発生します。
最も簡単な方法は、テストに Docker コンテナを使用することです。これにより、コンテナ内のデフォルトのシステムの場所を使用できます。
答え2
PKG_CONFIG_PATH="/usr/local/programname/lib/pkgconfig"
を にLD_LIBRARY_PATH
設定して追加したら/usr/local/programname/lib
、動作するようになりました。PHP conf では、 内にインストールしたバージョンが使用されるようになりました/usr/local/programname
。
たくさんの調査を経て、私はこう結論づけました。しかし、これをさらに確認するまで、この方法を試したいすべての人に効果があるかどうかはわかりません。