我知道这一点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-get
aptitude
apt-get
history.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 系统。