如何让我的 PHP 源安装使用里面的库/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
包libcurl-dev
,因为我需要最新版本进行测试。
/usr/local/lib
并且,我注意到:如果我在而不是中安装程序的 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
和。不仅是 OpenSSL,甚至 cURL 和其他包。make uninstall
答案1
系统默认约定在很多地方使用,因此使用不同的目录会给自己带来很大的开销。
最简单的方法是使用 Docker 容器进行测试。这样,您就可以使用容器内的默认系统位置。
答案2
我添加了设置为PKG_CONFIG_PATH="/usr/local/programname/lib/pkgconfig"
,现在它可以正常工作了。我的 PHP 配置现在使用我在 中安装的版本。LD_LIBRARY_PATH
/usr/local/programname/lib
/usr/local/programname
经过大量研究,我得出了以下结论。但是,除非我继续检查,否则我无法确认它是否适用于所有想要这样做的人。