问题描述
有没有办法显示apt-get通过命令行更改的包的历史记录?
最佳解决思路
使用apt(apt-get)的所有操作都被记录下来。这些文件可在/var /log /apt /中找到。要查看最近的历史记录,请执行:
less /var/log/apt/history.log
这些日志得到旋转(每个月我猜),旧文件将后缀数字和压缩。所以要查看下一个历史记录,请使用:
zless /var/log/apt/history.log.1.gz
查看可用的日志:
ls -la /var/log/apt/
次佳解决思路
您也可以制作一个简短的命令来显示有趣的内容。
-
将此自定义函数添加到您的
~/.bashrc
:### pars for fun: install | remove | rollback function apt-history(){ case "$1" in install) grep 'install ' /var/log/dpkg.log ;; upgrade|remove) grep $1 /var/log/dpkg.log ;; rollback) grep upgrade /var/log/dpkg.log | \ grep "$2" -A10000000 | \ grep "$3" -B10000000 | \ awk '{print $4"="$5}' ;; *) cat /var/log/dpkg.log ;; esac }
-
并在像这样的终端中调用它:
kreso@h17:~$ apt-history install 2013-08-06 14:42:36 install gir1.2-nautilus-3.0:amd64 <none> 1:3.8.2-0ubuntu1~ubuntu13.04.1 2013-08-06 14:42:36 install python-nautilus:amd64 <none> 1.1-3ubuntu1 2013-08-06 14:42:37 install insync-nautilus:all <none> 1.0.20 2013-08-07 14:41:37 install powertop:amd64 <none> 2.1-0ubuntu1 2013-08-07 18:44:10 install libdiscid0:amd64 <none> 0.2.2-3build1 2013-08-07 18:44:11 install sound-juicer:amd64 <none> 3.5.0-0ubuntu1
取自here
第三种解决思路
您还可以使用以下命令列出最近安装的软件包
grep "\ install\ " /var/log/dpkg.log
第四种思路
如果你想要安装这些软件包而不是随后卸载,请尝试以下操作:
comm -23 <(grep "apt-get install" /var/log/apt/history.log | sed 's/.* //' | sort) \
<(grep "apt-get remove" /var/log/apt/history.log | sed 's/.* //' | sort)
这是安装减去任何匹配删除。
参考文献: