如何让我的 PHP 源安装使用 /usr/local/programname/lib 内的库而不是 /usr/local/lib?

如何让我的 PHP 源安装使用 /usr/local/programname/lib 内的库而不是 /usr/local/lib?

如何让我的 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-devlibcurl-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

经过大量研究,我得出了以下结论。但是,除非我继续检查,否则我无法确认它是否适用于所有想要这样做的人。

相关内容