只需禁用 repo 和 yum update 即可从实验性 repo 降级 rpm 包

downgrade rpm package from experimental repo just by disabling the repo and yum update

我有包 Foo-2.0.rpm 和 Foo-2.3.rpm。前者通常由 Linux 发行版分发,但很旧。 Foo-2.3 是最新版本,也是我制作的 rpm。我正在编写 .spec 文件,现在,将其保存在我自己的存储库中。

我认为——我什至认为——我可以通过执行以下操作将 Foo-2.3 替换为 Foo-2.0(降级到稳定版本):

yum-config-manager --disable myrepo
yum --update Foo

假设安装了 Foo-2.3,预期结果是 Foo-2.0 代替 Foo-2.3。

然而,现在,它只给我以下信息:

# yum update Foo
No packages marked for update

"yum downgrade Foo" 似乎是一个有效的命令。

为什么 "yum update" 没有像我预期的那样工作?是因为我的规格文件吗?或者它只是一些不起作用的东西?

在 Foo、Foo "Provides: Foo-2.3," 和 "Conflicts: Foo <= 2.1." 的 .spec 文件中,我在开发中丢失了一些 spec 文件。虽然我认为禁用 repo 和 "yum update" 降级了 Foo,但我的记忆可能是错误的。

yum upgrade一直在上升。当回购是更高版本时,然后升级。如果有旧的,什么都不做。它总是这样。甚至 rpm 本身也是如此。但是对于 rpm,您可以通过 rpm -Uvh --force Foo-2.0.rpm 升级来强制它降级。对于 yum 没有办法。你必须使用 downgrade 命令。

顺便说一句,您的规格文件中应该是:

Provides: Foo-2.3
Obsoletes: Foo <= 2.1

但是重命名包时通常需要这样做。我相信这不是你的情况。