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


8

我知道,dpkg并且dpkg-query是很好的工具,以了解当前安装在Debian系统上的包。除了记录到文件中的信息/var/log/dpkg.log.*是存在的,让我知道任何其他地方,当一个变化发生(即时间日期一包的安装的)?

假设这个问题在这里说,Debian的软件包系统不关心存储约一个deb文件来源的信息(和好,应该怎么办呢?)我开始以为/var/log/dpkg.log.*就是什么时候什么信息的唯一地方dpkg发生相关完全存储。

也许有人可以确认这一点。否则,请告诉我有关软件包安装的时间信息是否存储(实际上是太好了!)在哪里找到它们(哪个文件?)。

Answers:


5

/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。此日志包含尝试执行的操作(无论操作是否成功)。

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

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

没有工具记录包的来源。通常,使用APT,给定的程序包总是来自同一来源,除非来源或它们的优先级已更改。在极少数情况下,源或优先级确实发生了变化,没有通用的方法来检索有关过去安装软件包的位置的历史信息。


/var/lib/dpkg/info/在正常apt-get upgrade操作期间,文件的ctime 甚至会更改。进行这样的升级后,例如dpkg.lstctime == mtime == current-time-并且dpkg.md5得出ctime> mtime。因此,不幸的是,查看ctime并不能提供仅查看mtime的更多信息。人们无法与它们区分软件包的升级/安装时间。
maxschlepzig

@maxschlepzig是的,我的意思是安装当前版本的软件包时,而不是第一次安装某些版本时。我将对其进行编辑。
吉尔(Gilles)'所以

3

请参阅中的文件/var/log/apt。这些文件history.logterm.log被两个写入apt-getaptitude,至少。当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系统。

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.