如何让我的 PHP Source 安装使用里面的库/usr/local/programname/lib
代替或/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
andlibcurl-dev
包,因为我需要最新版本来测试。
而且,我注意到:如果我安装程序的 lib 目录/usr/local/lib
而不是/usr/local/programname/lib
,它可以在不设置任何环境变量的情况下工作。
但是,在我看来,/usr/local/programname/lib
更清楚,所以我想使用这种类型的路径。
我怎样才能使 PHP 使用里面的库/usr/local/programname/lib
而不是/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
会更干净,会节省我更多的时间。我不能每次都make install
继续跑步。make uninstall
不仅是 OpenSSL,甚至是 cURL 和其他包。
系统默认约定用于很多地方,以至于您通过使用不同的目录为自己创造了巨大的开销。
最简单的方法是使用 Docker 容器进行测试。这样您就可以使用容器内的默认系统位置。
我添加
PKG_CONFIG_PATH="/usr/local/programname/lib/pkgconfig"
了LD_LIBRARY_PATH
set to/usr/local/programname/lib
,它现在可以工作了。我的 PHP conf 现在使用我安装在/usr/local/programname
.经过这么多研究,这就是我想出的。但是,在我继续检查之前,我无法确认它是否适用于所有想要这样做的人。