是否有支持回滚更新包的发行版?

是否有支持回滚更新包的发行版?

是否有一个工具甚至整个发行版支持在更新后回滚更改的包?

举个例子:我升级了软件包 A、B 和 C。在使用这些软件包几天后,我在 B 中遇到了一个破坏交易的错误。

虽然我会提交错误报告,但我还需要将 B 降级到以前的版本,以便我可以完成我要做的事情。同时,A 依赖于 B,因此也需要降级,但 C 独立于两者,因此可以保持当前版本。

有支持此功能的工具或发行版吗?

我知道大多数发行版都有一种降级软件包的方法,但这通常有点粗略,甚至不可能,因为以前的软件包已从存储库中删除,并且在某些情况下(例如在升级 X 服务器和 Mesa 后)它真的...... 。 凌乱的。

答案1

尼克斯操作系统支持升级回滚,尽管据我了解,它并没有达到您想要的程度:如果您在一次操作中升级 A、B 和 C,您可以回滚整个操作,但不仅仅是 A 和 B (您应该能够回滚 A、B 和 C,然后升级 C...)不过,从事务角度来看,这是有意义的。

Debian(与快照存档如果您不再拥有旧软件包)将允许您降级 B,并且像apt或 这样的工具aptitude在许多情况下会发现 A 也需要降级(一旦您说服他们您不想简单地升级 B )。但正如你所说,这往往有点混乱,而且 Debian 中无论如何都不支持软件包降级(这意味着它们大多数时候都可以工作,但如果它们损坏了,那不是一个错误)。

答案2

基于任何yum基于分布的分布(例如红帽EL,中央操作系统等),您可以:

  1. 使用以下命令检查系统更改的历史记录sudo yum history list

    Loaded plugins: fastestmirror
    ID     | Login user               | Date and time    | Action(s)      | Altered
    ------------------------------------------------------------------------------
        10 | Administrator <admin>    | 2016-03-08 09:08 | Install        |   11   
         9 | Administrator <admin>    | 2016-03-03 16:48 | Install        |    1   
         8 | Administrator <admin>    | 2016-03-03 16:09 | Install        |    5   
         7 | Administrator <admin>    | 2016-02-26 18:13 | Install        |    1   
         6 | Administrator <admin>    | 2016-02-26 15:12 | Install        |   27   
         5 | Administrator <admin>    | 2016-02-26 15:07 | Install        |    1   
         4 | Administrator <admin>    | 2016-02-26 15:05 | Install        |    3  <
         3 | Administrator <admin>    | 2016-02-26 15:03 | Install        |    1 > 
         2 | Administrator <admin>    | 2016-02-26 15:01 | I, U           |   49   
         1 | System <unset>           | 2016-02-26 14:38 | Install        |  296   
    history list
    
  2. 检查详细信息,使用sudo yum history info 10

  3. 回滚到历史记录中的前一点,使用sudo yum history rollback 9

警告

有一些明显的警告:

  1. 如果旧包不再可用,那么你就完蛋了(引用@vonbrand),
  2. 如果你在 yum 之外安装任何东西,你可能会打破历史记录。

在我的示例中,<在具有 ID 的行4(最后一列)中,意味着我无法回滚到该点之后。

sudo yum history rollback 2
Loaded plugins: fastestmirror
Transaction history is incomplete, before 4.
 You can use 'history rollback force', to try anyway.
Error: Failed history rollback, incomplete

答案3

开放SUSE你可以轻松使用带有 Btrfs 文件系统的 Snapper

如果您使用标准安装期间的文件系统配置,默认情况下启用

一旦启用 Snapper,它就与yast2和完全集成zypper。每次您安装或升级某些内容(或创建用户等)时,它都会创建文件系统快照。

要将系统回滚到之前的状态,您只需运行yast2 snapper.

在此输入图像描述

答案4

在 Fedora 中(我确信其他发行版也是如此),您可以要求返回到以前的版本:

dnf downgrade <packages>

为您提供软件包的倒数第二个版本,您可以通过以下方式请求特定版本:

dnf downgrade <package>.<version>

仅当软件包在存储库中仍然可用时,这才有效。无论如何,该功能并非闻所未闻。它有其障碍,如果升级的一部分是更改配置,则回滚不一定是确切的过去版本。

相关内容