我不知道这是否是常识,但 RPM 支持在执行升级后回滚到以前的安装(例如,这会破坏某些东西)。您可以将--repackage标志传递给 rpm以生成一组当前安装的文件的 RPM,这些文件将要更改。然后你可以说“ rpm -Uvh --rollback '2 hours ago' ”并毫不费力地将你的机器回滚到2小时前的状态。
我的问题是,有没有人在基于 Debian 的发行版中发现类似的东西?
我不相信有这样的选项aptitude
或apt-get
。但是,aptitude
在/var/log/aptitude保留一个优秀的、清晰的日志。您可以使用它来尝试回滚。
进展如何将取决于具体情况。如果您只想删除一些已安装的软件包,这应该是微不足道的。但是,如果您已经升级(因为您进行了测试或不稳定,或者因为您安装了安全升级或点发布升级),那么事情就会变得有点复杂。您可以检查缓存中是否还有旧的 .deb,或者您可以访问Debian 快照。
如果您不使用aptitude
,您可以查看 indpkg
的日志(at /var/log/dpkg.log
),但我发现使用它不太友好。
编辑现在我看了这篇文章,有一件事情有些相似。您可以通过执行此序列来获取包的状态。首先获取当前包状态的列表:
dpkg --get-selections "*" > my_packages-datestamp
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用该包列表回滚:
dpkg --set-selections < my_packages-datestamp
apt-get -u dselect-upgrade
Run Code Online (Sandbox Code Playgroud)
我已经使用这种方法重新安装,然后在机器上拥有当前的软件包集,并且运行良好。但同样,它的工作情况取决于您可以使用上一个软件包列表中的哪些软件包 - 无论是在您的缓存中还是在您的存储库中。