Answers:
还有另一种命令行方法来获取安装历史记录。
程序包管理器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 ...
:
你需要通过文本操作(例如你的首选方法来去掉括号,其内容和逗号分隔符从列表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
可以对其进行调整或扩展,以在某个日期范围内进行安装。
apt-get remove
:sed 's/ ([^)]*)//g' | sed 's/,//g')
。