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

时间:2019-06-20 18:24:02

标签: 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

的输出
Resolving Dependencies
--> Running transaction check
---> Package libcap-devel.x86_64 0:2.22-8.el7 will be installed
--> Processing Dependency: libcap = 2.22-8.el7 for package: libcap-devel-2.22-8.el7.x86_64
--> Running transaction check
---> Package libcap.i686 0:2.22-8.el7 will be installed
--> Processing Dependency: libattr.so.1 for package: libcap-2.22-8.el7.i686
--> Processing Dependency: libattr.so.1(ATTR_1.0) for package: libcap-2.22-8.el7.i686
--> Processing Dependency: libc.so.6(GLIBC_2.8) for package: libcap-2.22-8.el7.i686
--> Running transaction check
---> Package glibc.i686 0:2.17-105.el7 will be installed
--> Processing Dependency: glibc-common = 2.17-105.el7 for package: glibc-2.17-105.el7.i686
--> Processing Dependency: libfreebl3.so for package: glibc-2.17-105.el7.i686
--> Processing Dependency: libfreebl3.so(NSSRAWHASH_3.12.3) for package: glibc-2.17-105.el7.i686
---> Package libattr.i686 0:2.4.46-12.el7 will be installed
--> Running transaction check
---> Package glibc.i686 0:2.17-105.el7 will be installed
--> Processing Dependency: glibc-common = 2.17-105.el7 for package: glibc-2.17-105.el7.i686
---> Package nss-softokn-freebl.i686 0:3.16.2.3-13.el7_1 will be installed
--> Finished Dependency Resolution
 You could try using --skip-broken to work around the problem
Error: Package: glibc-2.17-105.el7.i686 (redhat_base)
           Requires: glibc-common = 2.17-105.el7
           Installed: glibc-common-2.17-222.el7.x86_64 (@anaconda/7.5)
               glibc-common = 2.17-222.el7
           Available: glibc-common-2.17-105.el7.x86_64 (redhat_base)
               glibc-common = 2.17-105.el7

以下是yum --showduplicates list libcap-devel的输出,它显示yum存储库只有一个可用版本:


========================== N/S matched: libcap-devel ===========================
libcap-devel-2.22-8.el7.i686 : Development files for libcap
libcap-devel-2.22-8.el7.x86_64 : Development files for libcap


yum --showduplicates list libcap的输出显示:

Installed Packages
libcap.x86_64                      2.22-9.el7                      @anaconda/7.5
Available Packages
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位版本:

...
--> Processing Dependency: libcap = 2.22-8.el7 for package: libcap-devel-2.22-8.el7.x86_64
--> Running transaction check
---> Package libcap.i686 0:2.22-8.el7 will be installed
...

yum --showduplicates list glibc的输出显示glibc.i686 0:2.17-222.el7不可用,只有2.17-105.e17。

Installed Packages
glibc.x86_64                     2.17-222.el7                      @anaconda/7.5
Available Packages
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标头的结果中,而第四行实际上是段错误。

1 个答案:

答案 0 :(得分:0)

欢迎来到依赖库/ rpm的丛林:)

读取需要花费一些时间和耐心,然后需要一些技巧来读取yum输出。有时,您甚至必须运行一些中间命令来获得确切的答案,但让我们看看我们已经在此处看到的内容:

  

处理依赖性:软件包:libcap-devel-2.22-8.el7.x86_64的libcap = 2.22-8.el7

您尝试安装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软件包此问题的信息。

  

->处理依赖性:软件包:libcap-2.22-8.el7.i686的libc.so.6(GLIBC_2.8)

     

->运行事务检查

     

--->将安装软件包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