我尝试安装以下软件包:
[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。
您还可以配置yum
via/etc/yum.conf
以安装最适合底层架构的包。需要修改的参数yum.conf
是multilib_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