安全地回滚更新

我又一次想知道为什么没有(或者我没有find它?)任何工具,可以可靠和毫不费力地回滚更新所做的更改。 让我以Debian上的apt为例进行更新。 有这个新的包,有它的依赖。 每个软件包都有一个将被创build/修改/删除的文件列表。 另外,其他文件可能会被configuration脚本修改。

我对这个话题的研究提出了尽可能好的解决scheme。 通过strace,可以监视单个进程的系统调用(让我们假设apt-get),并且可以过滤出与我正在查找的系统调用相关的信息。

有了这个列表,就可以用一个命令可靠地回滚更新。 也许甚至可以添加某种钩子到一个修改后的strace可执行文件,这个可执行文件在被修改之前触发每个文件的备份。

我的假设是否正确? 如果是的话,这样的工具是否存在?

包并不一定存在于真空中 – 以更新数据库包为例,并在启动时将其数据文件转换为新的格式。 在软件包升级过程中没有捕获到这一点。

您将发现最一致的回滚方法是整个系统的快照和回滚(快照虚拟机或快照文件系统),即使这不是防弹的 – 一个系统上的软件包更新可能会影响其他节点在networking上。