我允许更新管理器安装 200 Mib 的更新,我认为这些更新会使我的显卡驱动程序出现问题。因此,我需要一种方法来删除自 2012 年 5 月 30 日(或任何其他日期)以来安装的更新。如果我必须手动删除它们(在逐个卸载它们的情况下),请您告诉我如何操作。
答案1
还有另一种命令行方法来获取安装历史记录。
软件包管理器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
该Commandline:
字段指示触发运行的原因,对于由更新管理器进行安装的情况,它应该如下所示:
Commandline: aptdaemon role='role-commit-packages' sender=':1.131'
...这是您的软件包列表,按日期、方法和操作(安装/升级/删除)排序。请注意,如果您想将这些软件包传回apt-get remove ...
:
- 作为提及, 这彻底删除软件包而不是恢复它们。日志中的信息当然可以用来查看升级的软件包,但将它们回滚又是另一回事。
您需要通过您喜欢的文本操作方法(例如 等)从列表中删除括号、其内容和逗号分隔符
sed
。vim
因此,如果我想删除上面代码片段中的包,我可以相对直接地使用以下行: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
这可以进行调整或扩展以获得某个日期范围内的安装。