安装的库中的依赖项解析失败

时间:2013-12-11 11:41:18

标签: rpm

我正在尝试安装rpm并收到以下错误:

---> Package geramer-server.x86_64 0:3.6.0.117-1 will be an update
--> Processing Dependency: libcrypto.so.10(libcrypto.so.10)(64bit) for package: geramer-server-3.6.0.117-1.x86_64
---> Package geramer-ui.x86_64 0:3.6.0.98-1 will be updated
---> Package geramer-ui.x86_64 0:3.6.0.117-1 will be an update
--> Finished Dependency Resolution
Error: Package: geramer-server-3.6.0.117-1.x86_64 (/geramer-server-3.6.0.117.x86_64)
           Requires: libcrypto.so.10(libcrypto.so.10)(64bit)

我的第一个想法是没有安装libcrypto.so。但事实并非如此,请参阅:

$ ldconfig -p | grep libcrypto.so
    libcrypto.so.10 (libc6,x86-64) => /usr/lib64/libcrypto.so.10

它也存在于磁盘上:

$ ls -l /usr/lib64/libcrypto.so.10
lrwxrwxrwx 1 root root 18 Dec  4 13:11 /usr/lib64/libcrypto.so.10 -> libcrypto.so.1.0.0

并且RPM也知道它:

$ yum whatprovides "*/libcrypto.so.10"
Loaded plugins: product-id, rhnplugin, subscription-manager
*Note* Red Hat Network repositories are not listed below. You must run this command as root to access RHN repositories.
openssl-1.0.0-25.el6_3.1.x86_64 : A general purpose cryptography library with TLS implementation
Repo        : installed
Matched from:
Filename    : /usr/lib64/libcrypto.so.10

所以我缺少什么想法?

此致 岸堤

6 个答案:

答案 0 :(得分:9)

我知道这个帖子有点旧,但我最近遇到了这个问题,并想分享我所做的修复,特别是因为@divanov的回答帮助我调试了这个问题。

在我的情况下,我无法安装特定的postgres rpm(postgresql91),并且看到同样的错误:

Error: Package: postgresql91-libs-9.1.12-1PGDG.rhel6.x86_64 (/postgresql91-libs-9.1.12-1PGDG.rhel6.x86_64)
           Requires: libcrypto.so.10(libcrypto.so.10)(64bit)
Error: Package: postgresql91-libs-9.1.12-1PGDG.rhel6.x86_64 (/postgresql91-libs-9.1.12-1PGDG.rhel6.x86_64)
           Requires: libssl.so.10(libssl.so.10)(64bit)

基本上,我能够通过升级已安装的openssl版本来解决问题。在撰写本文时,openssl-1.0.1e-15可在CentOS(6)存储库中找到,此处:openssl-1.0.1e-15.el6.x86_64.rpm并提供以前缺少的libssl和libcrypto依赖项。
要安装,您可以:

sudo yum install http://mirror.centos.org/centos/6/os/x86_64/Packages/openssl-1.0.1e-15.el6.x86_64.rpm

同样,如果CentOS仓库中的版本发生变化,该URL可能不再有效。

好的,现在为血淋淋的细节......

最初,我的机器安装了openssl-1.0.0-27.el6_4.2.x86_64.rpm,它没有提供我postgres rpm要求的所有软件包:

> rpm -q --provides openssl
config(openssl) = 1.0.0-27.el6_4.2
...
libcrypto.so.10()(64bit)
...  
libssl.so.10()(64bit)  
...

安装较新的openssl版本后:

> rpm -q --provides openssl
config(openssl) = 1.0.1e-16.el6_5.4
...
libcrypto.so.10()(64bit)  
libcrypto.so.10(OPENSSL_1.0.1)(64bit)  
libcrypto.so.10(OPENSSL_1.0.1_EC)(64bit)  
libcrypto.so.10(libcrypto.so.10)(64bit)  
...
libssl.so.10()(64bit)  
libssl.so.10(OPENSSL_1.0.1)(64bit)  
libssl.so.10(OPENSSL_1.0.1_EC)(64bit)  
libssl.so.10(libssl.so.10)(64bit)  
...

现在一切都很开心......

从底线开始,安装较新版本的openssl,它应该提供您需要的依赖项。祝你好运!

答案 1 :(得分:1)

我能够通过从/etc/yum.conf中的排除行中删除openssl来解决这个问题。我们有托管服务器,所以它默认放在那里。然后,我只是运行了我需要的正常yum安装,结果很好。

答案 2 :(得分:1)

尝试使用RHEL7或CentOS 7的以下命令同时安装openssl和openssl-libs:

sudo yum install http://mirror.centos.org/centos/7/os/x86_64/Packages/openssl-1.0.2k-8.el7.x86_64.rpm http://mirror.centos.org/centos/7/os/x86_64/Packages/openssl-libs-1.0.2k-8.el7.x86_64.rpm

由于openssl和openssl-libs都需要彼此作为依赖并且在没有sudo的情况下运行,因此旧版本可能会出现冲突问题。

答案 3 :(得分:0)

我使用yumdownloader创建openssl rpm的本地副本。然后我使用rpmrebuild-e -p PACKAGE标志来添加缺少的Provides并创建一个新的rpm。然后安装了生成的工件。增加Release也有所帮助。

答案 4 :(得分:0)

答案 5 :(得分:0)

从此link下载正确的rpm软件包。

具体来说,

wget http://mirror.centos.org/centos/7/os/x86_64/Packages/openssl-libs-1.0.2k-16.el7.x86_64.rpm
rpm -ivh openssl-libs-1.0.2k-16.el7.x86_64.rpm --force

然后再次yum install您的包裹。