Ste*_*ler 23 distribution-choice package-management
是否有工具甚至整个发行版支持在更新后回滚更改的包?
例如:我升级了包 A、B 和 C。在使用这些包几天后,我在 B 中遇到了一个破坏交易的错误。
当我提交错误报告时,我还需要将 B 降级到以前的版本,以便我可以完成我将要做的事情。同时 A 依赖于 B,因此它也需要降级,但 C 独立于两者,因此它可以保持当前版本。
是否有支持此功能的工具或发行版?
我知道大多数发行版都有一种降级软件包的方法,但这通常有点粗略甚至不可能,因为以前的软件包已从存储库中删除,并且在某些情况下(例如在升级 X 服务器和 Mesa 之后)它真的...... 。 乱。
Ste*_*itt 21
NixOS支持升级回滚,尽管据我所知,它并没有像您希望的那样进行:如果您在一个操作中升级 A、B 和 C,您可以回滚整个操作,但不仅仅是 A 和B.(您应该能够回滚 A、B 和 C,然后升级 C...)尽管从事务的角度来看这是有道理的。
Debian(如果您不再拥有旧软件包,则与快照存档结合使用)将允许您降级 B,并且在许多情况下,像apt
或这样的工具aptitude
会发现 A 也需要降级(一旦您让他们相信您不想简单地升级 B)。但是正如您所说,这往往有些混乱,并且无论如何在 Debian 中都不支持软件包降级(这意味着它们大部分时间都可以工作,但如果它们损坏就不是错误)。
and*_*coz 15
在任何yum
基于发行版(例如Red Hat EL、CentOS等)上,您可以:
使用检查系统更改的历史记录 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
Run Code Online (Sandbox Code Playgroud)检查详细信息,使用 sudo yum history info 10
sudo yum history rollback 9
有一些明显的警告:
在我的示例中,<
在带有 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
Run Code Online (Sandbox Code Playgroud)
在OpenSUSE 上,您可以轻松地将Snapper 与 Btrfs 文件系统一起使用。
如果您在安装期间使用标准文件系统配置,则默认启用。
启用 Snapper 后,它与yast2
和完全集成zypper
。每次您安装或升级某些东西(或创建用户等)时,它都会创建一个文件系统快照。
要将系统回滚到以前的状态,您只需运行yast2 snapper
.
AIX非常擅长回滚更新。好吧 - 我们在 Unix/Linux 站点上,您从未指定过您想要 Linux :)
每个 AIX 更新都将所有修改过的文件保存在 /var 文件系统内的一个单独子目录中。更新可以用一个简单的本地命令被还原,而还原并不需要网络来达到,它并不需要任何媒体/包,它不会重新安装任何东西,它不依赖于任何快照技术 - 效果很简单,文件重新显示为更新前的状态。
作为奖励,有一个简单的本机命令mksysb
可以创建可引导的独立系统备份。可以在由于某些故障/损坏而无法启动的完全功能失调的系统上简单启动的文件。
这都是具有数十年历史的成熟技术:)
在 Fedora 中(我相信在其他发行版中也是如此)您可以要求返回到以前的版本:
dnf downgrade <packages>
Run Code Online (Sandbox Code Playgroud)
为您提供倒数第二个版本的软件包,您可以通过以下方式请求特定版本:
dnf downgrade <package>.<version>
Run Code Online (Sandbox Code Playgroud)
这仅适用于软件包在存储库中仍然可用的情况。无论如何,该功能并非闻所未闻。它有其障碍,如果升级的一部分是更改配置,则回滚不一定是确切的过去版本。