让我们来读一下官方文档:
dnf history rollback <transaction-spec>
撤消指定事务之后执行的所有事务。如果不可能撤消由于 RPMDB 的当前状态而导致的任何事务,请勿撤消任何事务。
重点是我的。所以这个命令指的是undo
命令。好吧,我们来看看有关undo的文档:
dnf history undo <transaction-spec>
执行与指定事务中执行的所有操作相反的操作。如果由于 RPMDB 的当前状态而无法撤消任何操作,请不要撤消任何操作。
听起来这两个命令执行相同的操作,只不过前者可以撤消多个事务,而后者只能撤消一个事务。
这种理解正确吗?(我希望得到第一手经验的答案,而不是从如何的角度来看你解释手册,我对事实感兴趣,而不是猜测。)
上下文:我需要编写一个运行的脚本dnf upgrade -y
,然后运行一些测试,然后逆转dnf更改如果测试失败。我正在寻找实现这一目标的最佳方法。
答案1
undo
仅撤消该特定交易,同时rollback
撤消所有内容之间该交易和系统的当前状态。
示例:您安装htop
,然后安装ncdu
和glances
,然后是mc
第二天。
您稍后想要撤消安装 htop,因此您使用撤消功能尝试撤消安装 htop,但仍保留稍后安装的其他程序。
如果回滚到已安装的事务,您将撤消、和htop
的安装,同时仍保留.ncdu
glances
mc
htop