检查特定 apt 或 deb 软件包上次更新的日期和时间

检查特定 apt 或 deb 软件包上次更新的日期和时间

是否有命令可以返回特定包上次更新的日期和时间?目前,我对我的 xorg 上次更新时间很感兴趣(我知道,有些软件将包含多个软件包),但这是我经常想了解的有关各种软件包的信息。我正在运行 Linux Mint。 (是的,我知道 Mint 中有一个更新历史 GUI 功能,但它需要滚动,并且可能会出现人为错误)

答案1

对于特定的包,

zgrep -h "status installed package" /var/log/dpkg.log* | sort | tail -n 1

会告诉您上次成功安装软件包的时间(这反映了软件包的状态,因此还包括升级)。由于dpkg涉及 Debian 衍生版本中的所有包操作,因此无论使用哪种包管理工具(dpkg直接、aptPackageKit 等),它都会起作用。

例如,

$ zgrep -h "status installed xserver-xorg-core" /var/log/dpkg.log* | sort | tail -n 1
2022-08-07 06:40:54 status installed xserver-xorg-core:amd64 2:1.20.11-1+deb11u2

如果apt涉及到(通常是这种情况,除非dpkg直接使用),您可以从其历史记录中获取更多信息:

zcat -f $(ls -tr /var/log/apt/history.log*)|awk -v RS= '/package/{s=$0}; END{print s}'

这将告诉您包最后一次参与操作的时间apt以及影响它的命令。例如:

$ zcat -f $(ls -tr /var/log/apt/history.log*)|awk -v RS= '/xserver-xorg-core/{s=$0}; END{print s}'
Start-Date: 2022-08-07  06:40:51
Commandline: /usr/bin/unattended-upgrade
Upgrade: xserver-xorg-core:amd64 (2:1.20.11-1+deb11u1, 2:1.20.11-1+deb11u2)
End-Date: 2022-08-07  06:41:01

(我知道为什么*不*解析`ls`(以及该怎么做)?我假设文件名在这里是安全的,这是使用默认日志轮换的默认设置的情况。我还假设它IFS被设置为默认值。)

changelog.Debian.gz文件中最上面的条目将告诉您它在您的发行版中最后一次修改的时间:

$ zcat /usr/share/doc/xserver-xorg-core/changelog.Debian.gz | head -n 7
xorg-server (2:1.20.11-1+deb11u2) bullseye-security; urgency=medium

  * xkb: add request length validation for XkbSetGeometry (CVE-2022-2319)
  * xkb: swap XkbSetDeviceInfo and XkbSetDeviceInfoCheck (CVE-2022-2320)
  * Closes: #1014903.

 -- Emilio Pozuelo Monfort <[email protected]>  Fri, 05 Aug 2022 10:00:36 +0200

相关内容