我遇到问题,使用 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 子包会被列出两次>它所选择的其他依赖项只列出一次。
答案 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 我的子包版本满足所有版本。