有什么办法可以回滚最新的更新吗?

有什么办法可以回滚最新的更新吗?

过去 5 年里,这种情况发生过很多次:升级导致系统崩溃。每次遇到这种情况,我都得重新安装整个系统,这真的很烦人。

有没有办法回滚最新更新,以便无需重新安装即可拥有正常运行的系统?如果没有,哪种方法可以最好地将此作为首要想法提出?

我读到过在 brainstorm.ubuntu.com 上描述的这个想法,但感觉它已经死了,而且论坛上充满了更新破坏事物的例子,这就是为什么我觉得需要对这个话题做点什么。

答案1

在 synaptics 中,你至少可以控制最近的更新:文件菜单、历史记录。

(如果 synaptic 可以启动,但系统已损坏)。因此,使用 apt-...-命令来恢复其更新应该不会太难。

我猜想命令行也有一个历史命令。

也许你必须删除整个软件包,然后安装特定版本。据我所知,可以安装特定版本,但我从未需要这样做。

更新:查找如何使用 apt:

查找最近 3x24 小时内安装的软件包:

find /var/lib/dpkg/info/ -name \*.list -mtime -3 | sed 's#.list$##;s#.*/##' 

使用 apt-cache 策略,您可以看到程序的可用版本:

sudo apt-cache policy PROGRAM:
 *** 3.6.7+build3+nobinonly-0ubuntu0.10.04.1 0
        500 http://de.archive.ubuntu.com/ubuntu/ lucid-updates/main Packages
        500 http://security.ubuntu.com/ubuntu/ lucid-security/main Packages
        100 /var/lib/dpkg/status
     3.6.3+nobinonly-0ubuntu4 0

这里是 3.6.7 和 3.6.3 。现在你知道可能安装的是哪个早期版本(通常不是直接的前身):

sudo apt-get install PROGRAM=3.6.3

然后您需要执行 apt-pinning,以防止将来的更新:

在 /etc/apt/preferences.d/ 中创建一个以你的程序命名的新文件(如果 >= 10.4),

Package: program
Pin: version 3.6.3*
Pin-Priority: 1000

答案2

大多数情况下,您可以咨询/var/log/apt/history.logapt/synaptic 所做的更改。这只需要一点取证和大量的剪切/粘贴操作。

回到你的系统仍然运行良好的日期。

首先将此后安装的所有软件包放在一起,并将它们放在卸载脚本中。脚本完成后,重新开始添加所有已删除的软件包。

示例案例:
日志文件:

Start-Date: 2014-05-28  21:28:11
Commandline: synaptic
Install: libfglrx-amdxvba1:amd64 (13.12-3kali1, automatic), libgl1-fglrx-glx:amd64 (13.12-3kali1), glx-alternative-fglrx:amd64 (0.4.1kali1, automatic), libfglrx:amd64 (13.12-3kali1, au$
Remove: fglrx-glx-ia32:amd64 (12-6+point-3)
End-Date: 2014-05-28  21:28:27

你可以看到,

libfglrx-amdxvba1:amd64 libgl1-fglrx-glx:amd64 glx-alternative-fglrx:amd64 & libfglrx:amd64 

由 Synaptic 安装。 就像libfglrx:amd64由 Synaptic 删除一样。

我们按照相反的顺序进行,因此首先删除新安装的软件包,然后重新添加已删除的软件包。

这种情况下的有效命令可能如下所示:

sudo apt-get remove -y libfglrx-amdxvba1:amd64 libgl1-fglrx-glx:amd64 glx-alternative-fglrx:amd64 libfglrx:amd64 && sudo apt-get install -y libfglrx:amd64

也许不使用该开关并不是最好的主意-y- 为了更好地控制流程(以避免依赖关系中断)。大多数人都不会在进行一些验证“y”时弄断手指

大多数情况下,通过这种方式可以进行回滚,但如果依赖关系已经被破坏 - 您可能会遇到更大的问题。

答案3

大多数情况下,如果你的系统坏了,这是一个核心问题。

只需启动较旧的内核并重新安装可能未正确更新的最新软件包(尤其是内核软件包)。几点说明:

/var/log/dpkg.log

你的朋友可以检查一下最近更新/安装的软件包列表是什么

sudo apt-get -f install

大多数情况下可以修复半安装的软件包

答案4

在进行重大升级时,我使用以下方法克隆磁盘克隆兹拉。将其刻录到 CD 上,准备好备用(外部)硬盘,然后按照 Clonezilla LiveCD 上的说明进行操作。选择模式partition-image,该模式占用的空间最少。

如果您认为您的系统已损坏(或希望恢复任何更改),只需启动 Clonezilla LiveCD,选择(外部)硬盘上的映像并恢复它。由于这些映像是磁盘上每个位的逐字副本,因此这可能需要几个小时,具体取决于您的磁盘速度和连接速度(数据(通常是外部 USB 硬盘)与计算机之间的连接)。

顺便说一下,这叫做备份方法。

相关内容