为什么 rpm -i我安装的依赖项失败?

为什么 rpm -i我安装的依赖项失败?

我尝试安装以下软件包:

[root@localhost ~]# rpm -i libmicrohttpd-0.9.22-1.el7.centos.x86_64.rpm

但我收到了失败的依赖项的错误:

[root@localhost ~]# rpm -i libmicrohttpd-0.9.22-1.el7.centos.x86_64.rpm
error: Failed dependencies:
libgnutls.so.28()(64bit) is needed by libmicrohttpd-0.9.22-1.el7.centos.x86_64
libgnutls.so.28(GNUTLS_1_4)(64bit) is needed by libmicrohttpd-0.9.22-1.el7.centos.x86_64

当然,我尝试安装这些依赖项:

[root@localhost ~]# yum install libgnutls.so.28
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.vooservers.com
 * epel: pkg.adfinis-sygroup.ch
 * extras: mirrors.melbourne.co.uk
 * updates: mirrors.melbourne.co.uk
Package gnutls-3.3.26-9.el7.i686 already installed and latest version
Nothing to do

但正如您在上面看到的,我被告知该软件包“已安装”并且“无需执行任何操作”。

如果已经安装了该软件包,这对我来说毫无意义,那么为什么 libmicrohttpd-0.9.22-1.el7.centos.x86_64.rpm 安装失败,因为它找不到此依赖项?

答案1

你已经安装了gnutls-3.3.26-9.el7.i686,但那不是libgnutls.so.28()(64bit),它是32位的。

您需要安装gnutls-3.3.26-9.el7.x64_86,这是与您要安装的内容相匹配的正确体系结构。

答案2

尝试这个,

您正在安装i686哪个是32-bit库。该错误明确指出libmicrohttpd需要一个64-bit库。

参考这个关联以获得所需的 RPM。

您还可以配置yumvia/etc/yum.conf以安装最适合底层架构的包。需要修改的参数yum.confmultilib_policy

multilib_policy Can be set to 'all' or 'best'. 
multilib_policy=all

All 意味着为您想要安装的任何软件包安装所有可能的架构。因此 yum install foo 将安装foo.i386 and foo.x86_64 on x86_64(如果可用)。最佳意味着仅为此平台安装最佳拱门。更多请参考这个和这个回答

要了解底层架构,请运行 uname -m

答案3

直接使用总是一个更好的主意,yum以便让yum您管理依赖项:

yum install libmicrohttpd-0.9.22-1.el7.centos.x86_64.rpm

相关内容