【发布时间】:2016-09-04 12:46:06
【问题描述】:
我遇到了一个问题,使用 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 upgrade main-package 时,它应该看到它需要 sub-package >= 1.1 并得到它。我应该补充一点,安装工作正常。就好像 rpm 和 yum 完全忽略了 main-package 需要 sub-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
这是我的规范文件中的相关信息:
$ 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:
我一直在做更多的挖掘工作,我注意到的一件事是 sub-package 如果我 rpm -q --whatprovides sub-package 在哪里列出了两次它拾取的其他依赖项只列出一次。
【问题讨论】:
-
看起来
sub-package 1.1-455015.el7可用,但目前安装的是什么?如果是1.1-somethingelse,则满足要求。 -
# rpm -qa | grep 子包 sub-package-1.0-455013.el7.x86_64
-
那一直都在吗?不知道我是怎么错过的……抱歉,当时不知道。
-
您是否尝试使用 rpm 进行更新(看看这是否是 yum 问题):将您的 main-package-16.2...rpm 复制到您的目标机器;然后执行:
rpm -Uvh main-package-16.2...rpm。如果在没有 rpm 抱怨 sub-package-1.1 丢失的情况下可以正常工作;这意味着问题出在您的规范文件中。 -
rpm 不能单独工作。任何想法在规范文件中可能有什么问题? main-package 有
Requires: sub-package >= 1.1行,sub-package 有Version: 1.1行。我在主帖中包含了更多信息。