如何删除特定日期之后安装的所有更新?

cre*_*ive 13 software-center updates update-manager package-management apt

我已经允许更新管理器安装 200 Mib 的更新,我认为这些更新使我的图形驱动程序出现问题。因此,我需要一种方法来删除自 5 月 12 日 30 日(或任何其他日期)以来已安装的更新。如果我必须手动删除它们(在一个一个卸载它们的情况下),请您告诉我如何操作。

小智 9

有一种替代的命令行方法来获取安装历史记录。

包管理器apt似乎将所有内容都记录在/var/log/apt/history.log和 中/var/log/apt/term.log,包括用日期戳分隔所有内容。两者都包含类似的、可用的信息,但term.log都更加冗长,并且没有明确指出是什么启动了操作。

历史日志

/var/log/apt/history.log存储每次apt运行的简明摘要。这是我手动安装的片段:

Start-Date: 2014-08-22  17:17:52
Commandline: apt-get install nautilus-dropbox
Install: nautilus-dropbox:amd64 (1.6.1-1), python-gpgme:amd64 (0.3-0ubuntu3, automatic)
End-Date: 2014-08-22  17:19:13
Run Code Online (Sandbox Code Playgroud)

Commandline:字段指示触发运行的原因,如果是更新管理器进行的安装,它应该类似于:

Commandline: aptdaemon role='role-commit-packages' sender=':1.131'
Run Code Online (Sandbox Code Playgroud)

...还有您的软件包列表,按日期、方法和操作(安装/升级/删除)排序。请注意,如果您想将这些包传递回apt-get remove ...

  • 正如提到的,这完全删除软件包,而不是恢复它们。日志中的信息当然可以用来查看升级的包,但回滚它们是另一回事。
  • 您需要通过首选的文本操作方法(例如sedvim等)从列表中删除括号、它们的内容和逗号分隔符。因此,如果我想删除上面代码段中的包,我可以相对直接地使用该行:

    sudo apt-get remove nautilus-dropbox:amd64 python-gpgme:amd64
    
    Run Code Online (Sandbox Code Playgroud)

终端日志

通常/var/log/apt/term.log结构不太方便,但为了完整起见,您可以获得相同的信息。终端输出再次由时间戳分隔,可以从以下形式的行中获取包安装:

Selecting previously unselected package nautilus-dropbox.
Run Code Online (Sandbox Code Playgroud)

以下是将整个日志的已安装软件包列表打印到终端的一种方法:

$ awk '/^Selecting/ {gsub(/\./,""); print $5}' /var/log/apt/term.log
Run Code Online (Sandbox Code Playgroud)

这可以进行调整或扩展以在日期范围内进行安装。


Mit*_*tch 4

注意: 与 Windows 不同,在 Ubuntu 中删除更新通常会卸载该软件包/程序,而不会简单地将其恢复(或降级)到以前的版本。

您可以打开Ubuntu软件中心,然后单击历史记录

在此输入图像描述

完成此操作后,单击更新,这将显示系统上安装的所有更新。找到需要删除的更新后,您需要手动执行此操作。

在此输入图像描述

要删除,您可以使用 Synaptic Package Manager。如果您还没有安装它,您可以从以下位置安装它