OpenSSH RPM 依赖错误解决指南:修复 libcrypto.so.3 缺失
2024-03-12 23:53:15
解决使用 OpenSSL 库构建 OpenSSH RPM 时依赖错误的问题
简介
在构建 OpenSSH RPM 时,可能会遇到依赖错误,无法将 libcrypto.so.3 纳入其中。本文将探讨这个问题并提供一个详细的解决方案,帮助解决依赖错误并成功构建 OpenSSH RPM。
问题
在更新 OpenSSL 版本后,即使 OpenSSL 版本正确,但构建 OpenSSH RPM 时仍无法将 libcrypto.so.3 纳入其中。安装 OpenSSH RPM 时,会出现依赖错误,阻碍了正常安装。
解决方案
要解决此问题,需要修改 openssh.spec 文件,添加 --with-ssl-dir=/usr/local/ssl
选项。此选项指定使用位于 /usr/local/ssl
中的 OpenSSL 库,以确保构建的 OpenSSH RPM 使用正确的 OpenSSL 库版本。
具体步骤
- 编译并更新 OpenSSL: 在主机上编译并更新 OpenSSL,并创建库文件的软链接。
- 修改 openssh.spec 文件: 打开 openssh.spec 文件,将
without_openssl
从1
更改为0
,并添加--with-ssl-dir=/usr/local/ssl
行。 - 构建 OpenSSH RPM: 使用修改后的 openssh.spec 文件构建 OpenSSH RPM。
- 安装构建的 RPM: 安装构建的 OpenSSH RPM,即可解决依赖错误。
详细说明
修改 openssh.spec 文件:
%global without_openssl 0
# build without openssl where 1.1.1 is not available
%if 0%{?fedora} <= 28
%global without_openssl 0
%endif
%if 0%{?rhel} <= 7
%global without_openssl 0
%endif
...
%configure \
--sysconfdir=%{_sysconfdir}/ssh \
--libexecdir=%{_libexecdir}/openssh \
--datadir=%{_datadir}/openssh \
--with-default-path=/usr/local/bin:/bin:/usr/bin \
--with-superuser-path=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin \
--with-privsep-path=%{_var}/empty/sshd \
--with-ssl-dir=/usr/local/ssl \
--mandir=%{_mandir} \
--with-mantype=man \
--disable-strip \
构建 OpenSSH RPM:
~]# rpm -Uvh openssh-9.6p1-1.an8.x86_64.rpm openssh-server-9.6p1-1.an8.x86_64.rpm openssh-clients-9.6p1-1.an8.x86_64.rpm
结论
通过添加 --with-ssl-dir=/usr/local/ssl
选项到 openssh.spec 文件中,可以指定使用 /usr/local/ssl
中的 OpenSSL 库。此解决方案解决了 OpenSSH RPM 中的依赖错误,确保构建的 OpenSSH RPM 使用正确的 OpenSSL 库版本。
常见问题解答
-
为什么需要修改 openssh.spec 文件?
修改 openssh.spec 文件是为了添加--with-ssl-dir=/usr/local/ssl
选项,指定使用正确的 OpenSSL 库版本。 -
如何编译并更新 OpenSSL?
在主机上使用./Configure --prefix=/usr/local/ssl --openssldir=/usr/local/ssl --shared
命令编译并更新 OpenSSL。 -
如何创建库文件的软链接?
使用以下命令创建库文件的软链接:ln -sf /usr/local/ssl/lib64/libssl.so.3 /usr/lib64/
ln -sf /usr/local/ssl/lib64/libcrypto.so.3 /usr/lib64/
-
如何构建 OpenSSH RPM?
使用rpm -ba|--rebuild --define "static_openssl 1"
命令构建 OpenSSH RPM。 -
如何安装构建的 OpenSSH RPM?
使用以下命令安装构建的 OpenSSH RPM:~]# rpm -Uvh openssh-9.6p1-1.an8.x86_64.rpm openssh-server-9.6p1-1.an8.x86_64.rpm openssh-clients-9.6p1-1.an8.x86_64.rpm