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


12

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

Answers:


8

还有另一种命令行方法来获取安装历史记录。

程序包管理器apt似乎将所有内容都记录在/var/log/apt/history.log和中/var/log/apt/term.log,包括用datestamp分隔所有内容。两者都包含相似的可用信息,但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

Commandline:字段指示触发运行的原因,对于由更新管理器进行的安装,其外观应类似于:

Commandline: aptdaemon role='role-commit-packages' sender=':1.131'

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

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

    sudo apt-get remove nautilus-dropbox:amd64 python-gpgme:amd64
    

终端日志

通常,/var/log/apt/term.log其结构不太方便,但是出于完整性考虑,您可以获得相同的信息。终端输出再次由时间戳定界,并且可以从以下形式的行中获取软件包的安装:

Selecting previously unselected package nautilus-dropbox.

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

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

可以对其进行调整或扩展,以在某个日期范围内进行安装。


1
如果这可以使一个人的生活更轻松,这里是我以前从/var/log/apt/history.log上市包装中取出括号和逗号,这样我可以养活他们sed的片断apt-get removesed 's/ ([^)]*)//g' | sed 's/,//g')
Apteryx

4

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

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

在此处输入图片说明

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

在此处输入图片说明

要删除,您可以使用Synaptic软件包管理器。如果您尚未安装,则可以从


谢谢。这样做是否涉及终端上的任何命令?
创意
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.