我正在尝试通过 yum 安装 libcap-devel 库,看起来我公司的 yum 存储库只有libcap-devel-2.22-8.el7.x86_64
,这需要glibc-common-2.17-105.el7
。
不幸的是,我的 VM 上安装的 glibc-common 是glibc-common-2.17-222.el7.x86_64
,并且安装失败。
我想弄清楚如何确定哪个版本的libcap-devel
与glibc-common-2.17-222.el7.x86_64
兼容,然后要求系统管理员将此libcap-devel
版本添加到 yum 存储库(我无权这样做),以便我可以成功安装它。我该怎么做?
这是yum install libcap-devel
的输出
解析依赖关系 --> 运行事务检查 ---> 将安装 libcap-devel.x86_64 0:2.22-8.el7 软件包 --> 处理依赖关系:libcap = 2.22-8.el7 对于软件包:libcap-devel-2.22-8.el7.x86_64 --> 运行事务检查 ---> 将安装 libcap.i686 0:2.22-8.el7 软件包 --> 处理依赖关系:libattr.so.1 对于软件包:libcap-2.22-8.el7.i686 --> 处理依赖项:libattr.so.1(ATTR_1.0) 对于软件包:libcap-2.22-8.el7.i686 --> 处理依赖项:libc.so.6(GLIBC_2.8) 对于软件包:libcap-2.22-8.el7.i686 --> 运行事务检查 ---> 将安装 glibc.i686 0:2.17-105.el7 软件包 --> 处理依赖关系:glibc-common = 2.17-105.el7 对于软件包:glibc-2.17-105.el7.i686 --> 处理依赖关系:libfreebl3.so 包:glibc-2.17-105.el7.i686 --> 处理依赖项:libfreebl3.so(NSSRAWHASH_3.12.3) 对于软件包:glibc-2.17-105.el7.i686 ---> 将安装 libattr.i686 0:2.4.46-12.el7 软件包 --> 运行事务检查 ---> 将安装 glibc.i686 0:2.17-105.el7 软件包 --> 处理依赖关系:glibc-common = 2.17-105.el7 对于软件包:glibc-2.17-105.el7.i686 ---> 将安装 nss-softokn-freebl.i686 0:3.16.2.3-13.el7_1 软件包 --> 完成依赖解析 您可以尝试使用 --skip-broken 来解决此问题 错误: 包: glibc-2.17-105.el7.i686 (redhat_base) 要求:glibc-common = 2.17-105.el7 已安装: glibc-common-2.17-222.el7.x86_64 (@anaconda/7.5) glibc-common = 2.17-222.el7 可用: 格利布-普通-2.17-105.el7.x86_64 (redhat_base) glibc-common = 2.17-105.el7
这是yum --showduplicates list libcap-devel
的输出,它表明 yum 存储库只有一个版本可用:
N/S 匹配: libcap-devel ============================= libcap-devel-2.22-8.el7.i686 : libcap 的开发文件 libcap-devel-2.22-8.el7.x86_64 : libcap 的开发文件
yum --showduplicates list libcap
的输出显示:
已安装的软件包 libcap.x86_64 2.22-9.el7 @anaconda/7.5 可用软件包 libcap.i686 2.22-8.el7 redhat_base libcap.x86_64 2.22-8.el7 redhat_base
yum install -y libcap-2.22-8.el7.x86_64
的输出显示:
已安装与 libcap-2.22-8.el7.x86_64 匹配的软件包。正在检查更新。 无事可做
在此之后,运行yum install -y libcap-devel-2.22-8.el7.x86_64
仍然尝试下载 32 位版本:
。 --> 处理依赖关系:libcap = 2.22-8.el7 对于软件包:libcap-devel-2.22-8.el7.x86_64 --> 运行事务检查 ---> 将安装 libcap.i686 0:2.22-8.el7 软件包 ...
yum --showduplicates list glibc
的输出显示 glibc.i686 0:2.17-222.el7 不可用,只有 2.17-105.e17 可用。
已安装的软件包 glibc.x86_64 2.17-222.el7 @anaconda/7.5 可用软件包 glibc.i686 2.17-105.el7 redhat_base glibc.x86_64 2.17-105.el7 redhat_base
此内容的任何变体都将失败:
yum downgrade -y glibc-2.17-105.el7
yum downgrade -y glibc-2.17-105.el7 glibc-common-2.17-105.el7
yum downgrade -y glibc-2.17-105.el7 glibc-common-2.17-105.el7 glibc-devel-2.17-105.el7
yum downgrade -y glibc-headers-2.17-105.el7 glibc-2.17-105.el7 glibc-common-2.17-105.el7 glibc-devel-2.17-105.el7
例如,第一个命令抱怨 glibc-common 和 glibc-devel,添加这些命令会导致对 glibc-headers 的抱怨,第四行实际上是段错误。
欢迎来到库/rpm 依赖项的丛林:)
阅读需要一些时间和耐心,然后需要一些技巧来阅读yum
输出。有时您甚至必须运行一些中间命令才能获得确切的答案,但让我们看看我们已经在这里看到的内容:
处理依赖关系:libcap = 2.22-8.el7 对于软件包:libcap-devel-2.22-8.el7.x86_64
您尝试安装libcap-devel
。yum
说他还需要安装具有完全相同版本号的libcap
。到目前为止没有惊喜。
将安装 libcap.i686 0:2.22-8.el7 软件包
这可能已经是你不想要的了。您似乎使用的是 64 位系统;是否确实要安装此库的 i686 版本?事实是libcap-devel
并没有说它需要x86_64版本;它需要两者中的任何一个。最好yum
安装x86_64版本,但如果不可能,i686版本就可以了。
在这种情况下,我建议您首先尝试安装libcap-2.22-8.el7.x86_64
,看看为什么yum
不会安装该安装。
但无论如何,让我们继续阅读,这也将为您提供有关如何解决x86_64包此问题的信息。
--> 处理依赖项:libc.so.6(GLIBC_2.8) 对于软件包:libcap-2.22-8.el7.i686
--> 运行事务检查
---> 将安装 glibc.i686 0:2.17-105.el7 软件包
所以这里yum
选择安装glibc.i686 0:2.17-105.el7
,大概是为了满足libc.so.6(GLIBC_2.8)
现在,这就是发生冲突的地方:glibc.i686 0:2.17-105.el7
需要具有完全相同版本号的glibc-common
,但您的计算机上已经有更新版本的glibc-common
。
可能的解决方案
这里有多种解决方案,按我的偏好顺序列出一个非详尽的列表:
- 调查无法安装
libcap-2.22-8.el7.x86_64
的原因。 - 确保
glibc.i686 0:2.17-222.el7
在您的yum
存储库中可用(或安装在您的系统上) - 将
glibc-common
(也可能glibc
x86_64版本)降级到版本 0:2.17-105.el7