当我专门列出它时,为什么rpm / yum会获得所需的包?

时间:2016-05-09 18:51:12

标签: redhat rpm yum

我遇到问题,使用 rpm yum 无法获取更新所需的软件包。我正在将 main-package 从16.1升级到16.2。如果我 yum upgrade ,我会得到这个:

# yum upgrade
...
======================================================================================================
 Package                       Arch           Version                      Repository            Size
======================================================================================================
Updating:
 sub-package                   x86_64         1.1-455015.el7               privaterepo           29 k
 main-package                  noarch         16.2-460032.el7              privaterepo          1.9 M
...

如果我运行 yum upgrade main-package ,我会得到:

# yum upgrade main-package
======================================================================================================
 Package                        Arch            Version                   Repository             Size
======================================================================================================
Updating:
 main-package                   noarch          16.2-460032.el7           privaterepo           1.9 M

Transaction Summary
======================================================================================================

似乎我认为我不需要新的子包,即使RPM建议它:

# rpm -q --requires -p main-package-16.2-460032.el7.noarch.rpm  | grep -i sub-package
sub-package >= 1.1

# rpm -qa | grep sub-package
sub-package-1.0-455013.el7.x86_64

根据我的看法,当我 yum升级主程序包时,应该会看到它需要子包> = 1.1 并获得它。我应该补充一点,安装工作正常。好像 rpm yum 完全无视 main-package 需要子包的1.1版的要求

修改

以下是rpm显示的依赖关系:

# rpm -q --provides -p sub-package-1.1-455015.el7.x86_64.rpm 
sub-package
sub-package = 1.1-455015.el7
sub-package(x86-64) = 1.1-455015.el7

# rpm -q --requires -p main-package-16.2-460032.el7.noarch.rpm  | grep sub-package
sub-package >= 1.1

以下是已经安装的较旧的子包

# rpm -q --provides sub-package
sub-package
sub-package = 1.0-455013.el7
sub-package(x86-64) = 1.0-455013.el7

以下是我的spec文件中的相关信息:

$ grep sub-package main-package.spec
Requires: sub-package >= 1.1

$ head -n4 sub-package.spec
Summary: sub-package (...)
Name: sub-package
Version: 1.1
Release: %{BUILD_NUMBER}%{?dist}

编辑2:

我一直在做更多的挖掘,有一件事我注意到,如果我 rpm -q --whatprovides sub-package 子包会被列出两次>它所选择的其他依赖项只列出一次。

1 个答案:

答案 0 :(得分:1)

感谢@alvits,是因为我有

Provides: sub-package
子包规范文件中的

。提示来自这一行:

# rpm -q --provides -p sub-package-1.1-455015.el7.x86_64.rpm 
sub-package
sub-package = 1.1-455015.el7
sub-package(x86-64) = 1.1-455015.el7

第一行输出告诉 rpm 我的子包版本满足所有版本。