我想获取按时间顺序排列的软件包升级列表。就像是:
Jan 08 10:45:33 CET 2016 xorg 1:7.7+6 upgrade to 1:7.7+7
Jan 10 13:16:33 CET 2016 gcc 1.132 upgrade to 1.133
Jan 12 07:05:33 CET 2016 pulseaudio 5.0-12 upgrade to 5.0-13
我对我的机器上的升级列表感兴趣,也对 debian 源代码感兴趣。
答案1
这可以在文件中找到/var/log/dpkg.log
。
使用此命令生成列表:
awk '$3=="upgrade"' /var/log/dpkg.log*
输出示例:
2015-12-30 15:33:15 upgrade firefox 38.0+build3-0ubuntu0.12.04.1 43.0+build1-0ubuntu0.12.04.1
答案2
我解决了两个问题混乱回答:
1) 生成的日志文件没有排序,因为*
日志文件将按字母顺序排列(dpkg.log
, dpkg.log.1
,dpkg.log.2
, ...),这相当于从最新到较旧,并且在日志文件内,行是从较旧到最新排序的。一种解决方案是(谢谢托比)使用ls -rt
awk '$3=="upgrade"' $(ls -rt /var/log/dpkg.log*)
2) /var/log 中的文件可以通过 logrotate 进行 gzip 压缩。为此,以下答案很有用:有没有一个把zcat和cat透明结合的工具?。解决办法是
zcat -f -- $(ls -rt /var/log/dpkg.log*) | awk '$3=="upgrade"'