yum downgrade不会删除新包

时间:2016-04-26 06:08:30

标签: upgrade rpm yum downgrade

第1版包含以下软件包

Package A-1.0
Package B-1.0

第2版包含以下软件包

Package A-2.0
Package B-2.0
Package C-2.0

第2版中,Package B-1.0分为两个包 - package B-2.0package C-2.0

现在安装第2版时,如何降级为第1版

yum downgrade A B尝试安装与package B-1.0存在文件冲突的package C-2.0

yum downgrade A B C不起作用,因为Package C没有旧版本。

是否有一个命令可以删除新包(package C-2.0)并降级包A和B?

3 个答案:

答案 0 :(得分:3)

如果您升级了多个软件包然后只想降级这两个软件包,则无法完成。不使用yum(除非你使用--nodeps和临时break deps)。 RH Satellite等高级工具可以做到这一点。

如果您只升级单独交易中的那些,那么您可以运行:

   yum history list
   yum history undo <ID>

   yum history undo last

它将回滚该交易。即在你的情况下降级这些包。 有关历史命令的详细信息,请参阅yum的手册页。

答案 1 :(得分:2)

可能为时已晚,因为您已经发布了A-2.0和B-2.0软件包,但您应该做什么(如果您可以删除A-2.0和B-2.0软件包,仍然可以做到):

在A-2.0和B-2.0的spec文件中添加:Requires: C

您可以搜索多种优势(以及更多):

  • 更新A和/或B时; C将自动安装。
  • 卸载C A和B时将降级。

然而:

  • 降级A和B时; C不会被卸载。

我用于项目的替代:我使用元数据包

  • meta-package-1.0:需要A-1.0,B-1.0,冲突C
  • meta-package-2.0:需要A-2.0,B-2.0,C-2.0

(我使用一个带有不稳定元数据包的分支准备下一个版本:meta-package:需要A,B)

答案 2 :(得分:1)

在单个事务中执行所有操作之前,您可以使用yum shell编写多个操作。

在您的情况下,您可以使用以下内容:

yum shell
yum downgrade A B
yum remove C
run