我有软件包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
“百胜降级Foo”似乎是有效的命令。
为什么“ yum更新”无法按预期工作?是因为我的规格文件吗?还是只是不起作用?
在Foo的.spec文件中,Foo“提供:Foo-2.3”和“冲突:Foo <= 2.1”。我丢失了一些开发中的规范文件。尽管我认为禁用存储库和“ yum更新”将Foo降级,但我的记忆可能是错误的。
答案 0 :(得分:0)
yum upgrade
总是上升。在仓库中的是更高版本时,请升级。如果年龄较大,则什么都不做。它总是这样运作的。甚至rpm本身也是如此。但是对于rpm,您可以通过rpm -Uvh --force Foo-2.0.rpm
的升级来强制降级。对于百胜没有办法。您必须使用downgrade
命令。
您的规格文件中的顺便说一句应该是:
Provides: Foo-2.3
Obsoletes: Foo <= 2.1
但是在重命名程序包时通常需要这样做。我相信不是你的情况。