【问题标题】:How to determine which version of a yum library is compatible with a specific version of a dependency that is already installed?如何确定哪个版本的 yum 库与已安装的特定版本的依赖项兼容?
【发布时间】:2019-11-03 14:56:56
【问题描述】:

我正在尝试通过 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 repo(我无权这样做)这样我就可以成功安装它。我该怎么做?

这是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 通用 = 2.17-222.el7 可用:glibc-common-2.17-105.el7.x86_64 (redhat_base) glibc 通用 = 2.17-105.el7

这是yum --showduplicates list libcap-devel的输出,这表明yum repo只有一个可用的版本:

========================== 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,而第四行实际上是段错误。

【问题讨论】:

    标签: redhat yum


    【解决方案1】:

    欢迎来到库/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(可能还有 glibc x86_64 版本)降级到版本 0:2.17-105.el7

    【讨论】:

    • 谢谢克里斯。我编辑了我的帖子 - 原来libcap-2.22-8.el7.x86_64 已经安装; glibc.i686 0:2.17-222.el7 可用且已安装 X86_64 版本,任何降低 glibc-common 的尝试均失败:/.
    • 根据您的编辑,glibc.i686 0:2.17-222.el7 似乎不可用。您可以在线搜索此软件包并安装它。我认为这应该可以解除对您的阻止。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-21
    • 2015-04-30
    • 1970-01-01
    • 2011-02-12
    • 2011-06-20
    • 1970-01-01
    • 2021-01-01
    相关资源
    最近更新 更多