失败的依赖项:从rpm安装openssl时出错

时间:2015-01-11 09:13:50

标签: linux openssl rpm rhel

我需要升级我的openssl(我目前的版本是OpenSSL 1.0.1e-fips 2013年2月11日 )。我的盒子没有连接到互联网。所以我下载了Openssl rpm并执行

rpm -Uvh openssl-1.0.1e-40.fc20.x86_64.rpm

命令。然后我得到了以下错误。

warning: openssl-1.0.1e-40.fc20.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 246110c1: NOKEY
error: Failed dependencies:
libc.so.6(GLIBC_2.14)(64bit) is needed by openssl-1:1.0.1e-40.fc20.x86_64
libc.so.6(GLIBC_2.15)(64bit) is needed by openssl-1:1.0.1e-40.fc20.x86_64
libcrypto.so.10()(64bit) is needed by openssl-1:1.0.1e-40.fc20.x86_64
libcrypto.so.10(OPENSSL_1.0.1)(64bit) is needed by openssl-1:1.0.1e-40.fc20.x86_64
libcrypto.so.10(OPENSSL_1.0.1_EC)(64bit) is needed by openssl-1:1.0.1e-40.fc20.x86_64
libcrypto.so.10(libcrypto.so.10)(64bit) is needed by openssl-1:1.0.1e-40.fc20.x86_64
libssl.so.10()(64bit) is needed by openssl-1:1.0.1e-40.fc20.x86_64
libssl.so.10(libssl.so.10)(64bit) is needed by openssl-1:1.0.1e-40.fc20.x86_64
openssl-libs(x86-64) = 1:1.0.1e-40.fc20 is needed by openssl-1:1.0.1e-40.fc20.x86_64
libcrypto.so.10()(64bit) is needed by (installed) qt-1:4.6.2-26.el6_4.x86_64
libcrypto.so.10()(64bit) is needed by (installed) libssh2-1.4.2-1.el6.x86_64
libcrypto.so.10()(64bit) is needed by (installed) wget-1.12-1.8.el6.x86_64
libcrypto.so.10()(64bit) is needed by (installed) bind-libs-32:9.8.2-0.17.rc1.el6_4.6.x86_64
libcrypto.so.10()(64bit) is needed by (installed) bind-utils-32:9.8.2-0.17.rc1.el6_4.6.x86_64
libcrypto.so.10()(64bit) is needed by (installed) mysql-libs-5.1.71-1.el6.x86_64
libcrypto.so.10()(64bit) is needed by (installed) fipscheck-1.2.0-7.el6.x86_64
libcrypto.so.10()(64bit) is needed by (installed) python-libs-2.6.6-51.el6.x86_64
libcrypto.so.10()(64bit) is needed by (installed) m2crypto-0.20.2-9.el6.x86_64
libcrypto.so.10()(64bit) is needed by (installed) pyOpenSSL-0.10-2.el6.x86_64
libcrypto.so.10()(64bit) is needed by (installed) python-ldap-0:2.3.10-1.el6.x86_64
libcrypto.so.10()(64bit) is needed by (installed) openssh-5.3p1-94.el6.x86_64
libcrypto.so.10()(64bit) is needed by (installed) ntpdate-4.2.6p5-1.el6.x86_64
libcrypto.so.10()(64bit) is needed by (installed) ntp-4.2.6p5-1.el6.x86_64
libcrypto.so.10()(64bit) is needed by (installed) certmonger-0.61-3.el6.x86_64
libcrypto.so.10()(64bit) is needed by (installed) cyrus-sasl-2.1.23-13.el6_3.1.x86_64
libcrypto.so.10()(64bit) is needed by (installed) postfix-2:2.6.6-2.2.el6_1.x86_64
libcrypto.so.10()(64bit) is needed by (installed) openssh-clients-5.3p1-94.el6.x86_64
libcrypto.so.10()(64bit) is needed by (installed) openssh-server-5.3p1-94.el6.x86_64
libcrypto.so.10()(64bit) is needed by (installed) tcpdump-14:4.0.0-3.20090921gitdf3cb4.2.el6.x86_64
libcrypto.so.10()(64bit) is needed by (installed) perl-Crypt-SSLeay-0.57-16.el6.x86_64
libcrypto.so.10()(64bit) is needed by (installed) nginx-1.6.2-1.el6.ngx.x86_64
libcrypto.so.10(OPENSSL_1.0.1_EC)(64bit) is needed by (installed) nginx-1.6.2-1.el6.ngx.x86_64
libcrypto.so.10(libcrypto.so.10)(64bit) is needed by (installed) nginx-1.6.2-1.el6.ngx.x86_64
libssl.so.10()(64bit) is needed by (installed) qt-1:4.6.2-26.el6_4.x86_64
libssl.so.10()(64bit) is needed by (installed) libssh2-1.4.2-1.el6.x86_64
libssl.so.10()(64bit) is needed by (installed) wget-1.12-1.8.el6.x86_64
libssl.so.10()(64bit) is needed by (installed) mysql-libs-5.1.71-1.el6.x86_64
libssl.so.10()(64bit) is needed by (installed) python-libs-2.6.6-51.el6.x86_64
libssl.so.10()(64bit) is needed by (installed) m2crypto-0.20.2-9.el6.x86_64
libssl.so.10()(64bit) is needed by (installed) pyOpenSSL-0.10-2.el6.x86_64
libssl.so.10()(64bit) is needed by (installed) python-rhsm-1.9.6-1.el6.x86_64
libssl.so.10()(64bit) is needed by (installed) python-ldap-0:2.3.10-1.el6.x86_64
libssl.so.10()(64bit) is needed by (installed) postfix-2:2.6.6-2.2.el6_1.x86_64
libssl.so.10()(64bit) is needed by (installed) perl-Crypt-SSLeay-0.57-16.el6.x86_64
libssl.so.10()(64bit) is needed by (installed) nginx-1.6.2-1.el6.ngx.x86_64
libssl.so.10(libssl.so.10)(64bit) is needed by (installed) nginx-1.6.2-1.el6.ngx.x86_64

我明白这是与依赖项的冲突。实现我在离线模式下更新openssl的方法是什么?

1 个答案:

答案 0 :(得分:2)

您必须满足升级会破坏的所有依赖项。

由于所提到的所有软件包显然都需要libcrypto的特定版本,而您在尝试安装的rpm中似乎不会出现这种情况,因此只留下一个解决方案:您需要必须将所有这些软件包升级到自己接受较新openSSL版本的版本。

这是一个典型的例子,通常称为“依赖地狱”,你可以使用依赖感知软件管理系统,如rpm。虽然这种情况确实显得很烦人,但有一个非常好的理由,并没有真正的解决方法。尽管所有那些失败的依赖性警告,rpm命令提供了一个“强制”选项来安装该包。但最终所有这些软件包都将被破坏,因此这种安装或多或少会破坏您的系统。所以这不是一个选择。

可以尝试收集越来越多的软件包,并将其与openSSL软件包一起脱机安装。但这是一项非常繁琐的任务。帮自己一个忙,以某种方式为该任务建立一个临时的互联网连接。然后包管理系统可以自己整理所有这些依赖关系。


实际上我发现还有一个选择:

您可以在 具有互联网连接的某个其他系统上本地镜像在该目标系统内配置的存储库。这意味着您必须与该层次结构一起同步(下载)该存储库中的所有包,并设置可从目标系统访问的本地存储库服务器。这样,您可以在本地使用该存储库作为包源,具有自动依赖性解析的所有优点。但没有必须设置互联网连接。您所需要的只是与提供镜像存储库的系统的网络连接。并且您必须在目标系统上更改程序包管理的配置,以使用该本地镜像而不是远程镜像。

您还可以通过在常规(每日)基础上同步来保持本地镜像服务。这是许多公司为减少网络流量而实际做的事情。这样,本地镜像有点像本地系统的包代理。

存储库镜像是一个记录良好的策略。您将找到与您的发行版匹配的详细说明。


另一个想法是: - )

如果您的问题不是,您不能/不想为该目标系统设置互联网连接但是您无法设置任何网络连接,那么还有一个选项:

您可以如上所述创建存储库镜像,但将其存储在本地磁盘上。例如usb硬盘。这样,您就可以将该存储库附加并挂载到目标系统上的本地文件系统中,并配置包管理,以便将该本地副本用作存储库。这样,您在目标系统上根本不需要网络连接。

相关问题