如何确定哪个版本的 yum 库与已安装的特定版本的依赖项兼容

  • 本文关键字:版本 依赖 安装 何确定 yum redhat yum
  • 更新时间 :
  • 英文 :


我正在尝试通过 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-develglibc-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-develyum说他还需要安装具有完全相同版本号的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

可能的解决方案

这里有多种解决方案,按我的偏好顺序列出一个非详尽的列表:

  1. 调查无法安装libcap-2.22-8.el7.x86_64的原因。
  2. 确保glibc.i686 0:2.17-222.el7在您的yum存储库中可用(或安装在您的系统上)
  3. glibc-common(也可能glibcx86_64版本)降级到版本 0:2.17-105.el7