Debian 的 dpkg 是否存储软件包更改(即安装/清除)的时间/日期?

Debian 的 dpkg 是否存储软件包更改(即安装/清除)的时间/日期?

我知道这一点dpkg,并且dpkg-query是查找 Debian 系统上当前安装的软件包的好工具。除了记录到文件中的信息之外/var/log/dpkg.log.*,还有其他地方可以让我知道吗什么时候发生了变化(即时间日期软件包的安装)?

假设这个问题这里说 Debian 的软件包系统不关心存储有关 deb 文件来源的信息(那么它应该如何这样做?)我开始认为这/var/log/dpkg.log.*是唯一dpkg存储有关何时发生相关事件的信息的地方。

也许有人可以证实这一点。或者告诉我是否存储了有关软件包安装的时间信息(这确实很棒!)在哪里可以找到它们(哪个文件?)。

答案1

/var/log/dpkg.log是 dpkg 本身留下的唯一日志文件。它记录哪些软件包已安装、卸载、升级等。它仅指示软件包名称、版本和操作:dpkg 不知道软件包的来源。它确实指示每个操作的日期。

如果 dpkg 是由 APT 套件中的工具(apt-get、 aptitude 、 Synaptic 等)调用的,则 APT 的操作将被记录/var/log/apt/history.log/var/log/apt/term.log。该文件apt/history.log包含与 相同类型的信息dpkg.log。该文件apt/term.log包含 dpkg 运行的记录(安装前和安装后以及删除脚本、dpkg 运行、触发器)。

Aptitude 中也写了类似的日志/var/log/aptitude。此日志包含 aptitude 尝试的操作,无论它们是否成功。

您通常还可以通过检查 的 ctime 来确定安装包的当前版本的时间/var/lib/dpkg/info/$package.*。如果这些文件后来因某种原因被修改(例如从备份中恢复),则它们可能具有更新的 ctime。当前版本可能是另一个版本的升级,此方法不会告诉您有关先前版本的任何信息。

如果您安装并启用等等管理员,那么每次运行 APT 并进行某些/etc更改时,更改都会提交给版本控制。当 APT 在执行操作后自动提交时,它会在日志消息中指示所采取的操作(例如安装了哪些软件包)。

没有工具可以记录包的来源。通常,使用 APT 时,给定的包始终来自同一源,除非源或其优先级已更改。在源或优先级确实发生变化的极少数情况下,没有通用的方法来检索有关过去安装的软件包的来源的历史信息。

答案2

请参阅 中的文件/var/log/apt。文件history.log和至少由和term.log写入。运行时,还会给出命令行。您可能想看看。除此之外,它还记录了操作的时间。apt-getaptitudeapt-gethistory.log

因此,例如,与使用的包安装相对应的日志部分apt-get如下所示:

Start-Date: 2013-09-02  00:27:25
Commandline: apt-get install unrar
Install: unrar:amd64 (4.1.4-1)
End-Date: 2013-09-02  00:27:29

与使用的安装相对应的日志部分aptitude如下所示:

Start-Date: 2013-09-02  16:39:11
Install: hello:amd64 (2.8-2)
End-Date: 2013-09-02  16:39:15

这些示例来自 Debian amd64 wheezy 系统。

相关内容