Centos 7 上的 VPS 附带了非常旧版本的 openssl。我构建并安装了较新版本的 openssl。(详细信息如下)安装这个较新的 openssl 只是为了升级到更新版本的curl。其目的是按位置专门调用此curl,而不是将其集成到任何其他程序中。
显然,安装导致了 exim 的问题(谁知道还有什么问题)。现在,由于找不到 libssl.so.1.1,更新 exim 失败。
openssl 二进制文件可以对系统/usr/local/openssl/bin/openssl
隐藏吗?(以便 exim 会更新)我不太确定 exim 构建中发生了什么,但当然它之前有效。
我想有两种解决方案是将 openssl 安装移动到 /opt 或将 openssl 重命名为其他名称。不过,我想了解是否有更简单的解决方案。
欢迎所有想法。感谢您考虑这一点。
一些系统信息:
[root@vps ~]# which openssl
/usr/bin/openssl
[root@vps ~]# whereis openssl
openssl: /usr/bin/openssl /usr/lib64/openssl /usr/include/openssl /usr/local/openssl /usr/share/man/man1/openssl.1ssl.gz /usr/share/man/man1/openssl.1
[root@vps ~]# /usr/bin/openssl version
OpenSSL 1.0.2k-fips 26 Jan 2017
[root@vps ~]# /usr/lib64/openssl version
-bash: /usr/lib64/openssl: Is a directory
[root@vps ~]# /usr/include/openssl version
-bash: /usr/include/openssl: Is a directory
[root@vps ~]# /usr/local/openssl/bin/openssl version
OpenSSL 1.1.1t 7 Feb 2023
---
*** Could not run ./exim -bV -C /dev/null to find version number ***
*** Exim installation failed ***
./exim: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
make: *** [install] Error 1
Moving exim binary.
---
首先,您没有显示任何内容来真正显示某些“二进制文件被隐藏”。
Exim 可能希望在 /usr/local/lib(64) 中而不是在 /usr/lib(64) 或 /lib(64) 中找到该库。检查您的
/etc/ld.so.conf
详细信息。您可以使用环境变量引导您的应用程序选择某个路径LD_LIBRARY_PATH
,例如运行LD_LIBRARY_PATH=/some/path exim
以仅为一个命令定义此变量。这是人们在较新的系统上运行古老程序的方式(对于一种情况,我需要使用旧的 OpenSSL 和特定程序的旧版本,但我不想在系统范围内使用旧的 OpenSSL,所以我放置了足够的旧库将该程序放入自定义目录并像这样启动它)。另外,请注意 soname:如果您构建了较新的 OpenSSL,则必须重建所有依赖软件;不同的soname 意味着ABI 可能会改变。新的 OpenSSL 会创建
libssl3.so
或不会创建libssl.so.1.1
您的应用程序构建所期望的内容。在某些情况下,您可以将一个符号链接到另一个,但可能会出现问题;为了解决这些问题,需要重建。(这就是为什么长期支持发行版如此难以维护:需要将所有修复程序反向移植到旧版本的应用程序和库中,而不更改 ABI 和 soname,这样您就可以只升级库包版本,而不会为依赖的应用程序带来其他问题.)最后,当使用生产服务器时,永远不要使用
make
和make install
,它会让你的系统变得一团糟,你永远无法清理。从 SRPM(或 DEB-SRC,如果我们谈论基于 Debian 的系统)构建您自己的软件包,并使用软件包管理器安装它们。当您选择 CentOS 这样的稳定发行版时,部分原因是事情不会崩溃。当然,您不会获得新功能,但 RedHat/CentOS 将支持旧版本软件的端口安全修复和错误修复,以便您看到最小的更改。
你不会得到新的卷发。为此,您必须更新到较新的版本;CentOS 7 仍停留在其附带的版本上。
此外,curl 和 openssl 都是必不可少的系统库,被许多其他软件使用。当你开始搞这些事情时,事情就会崩溃。不。
升级到较新的发行版。如果您想要新的闪亮玩具,请考虑发布周期更频繁的发行版。