我之前在我的 centos 机器上用 openssl10 替换了 openssl,使用类似这些说明:
rpm -Uvh http://dl.iuscommunity.org/pub/ius/stable/CentOS/6/...
...x86_64/ius-release-1.0-11.ius.centos6.noarch.rpm
yum install yum-plugin-replace
# Edit /etc/yum.repos.d/ius-archive.repo and
# enable the ius-archive repo by changing enabled=0 to enabled=1.
yum replace openssl --replace-with openssl10
然后,当我执行常规操作时,yum update
由于 openssl 而出现错误,因此我改为执行以下操作:
yum update -x openssl -x postfix
这似乎工作正常,但事实上,我无法再通过 ssh 重新连接到该盒子:
me@local $ ssh -S none root@the_server
ssh_exchange_identification: Connection closed by remote host
关于如何从这种情况中恢复,有什么想法吗?
编辑:当我sshd
在服务器上运行时(我仍然有一个打开的连接),出现以下错误:
ssh: relocation error: ssh: symbol SSLeay_version, version OPENSSL_1.0.1
not defined in file libcrypto.so.10 with link time reference
答案1
openssl
使用 IUS 存储库并用其替换openssl10
然后尝试升级到 CentOS 6.5 时出现了一个错误。
基本上你要做的就是返回库存openssl
- 无论如何现在是版本 1.0.1:
yum replace openssl10 --replace-with openssl
openssl10
现在不需要使用,也不支持。
这也是为什么它仅在存档存储库中可用。
更多信息请参阅:https://lists.launchpad.net/ius-community/msg00807.html和https://bugs.launchpad.net/ius/+bug/1034961/comments/60
答案2
应该首先尝试 @faker 的回答,但如果这不起作用,我发现以下说明rpm 网站
如果你想安全起见,也可以下载 yum 的 rpm 和它的所有依赖项
(请用适合您的安装的确切名称进行替换)
wget http://mirror.centos.org/centos/6/os/x86_64/Packages/openssl-<version>.rpm
wget http://mirror.centos.org/centos/6/os/x86_64/Packages/openssl-devel-<version>.rpm
rpm -i openssl-*
file /usr/lib64/libcrypto.so.1.0.1e from install of openssl-1.0.1e-16.el6_5.4.x86_64 conflicts with file from package openssl10-libs-1.0.1e-1.ius.el6.x86_64
.... lots more lines
现在备份所有有冲突的文件,以便在出现问题时可以将它们恢复到正确的文件夹中。
最后,你可以大胆尝试一下:
rpm -iv --replacepkgs --replacefiles openssl-*
如果一切顺利的话yum update
应该可以工作。
编辑:还删除软件包,以便它们不会与未来的更新发生冲突:
rpm -qa |grep ius
... lists packages
rpm -e openssl10-libs-1.0.1e-1.ius.el6.x86_64
rpm -e openssl10-devel-1.0.1e-1.ius.el6.x86_64
答案3
更轻松地解决上述问题
yum update openssl openssl-devel