Debian 包安装历史的日志查看指南
一、核心日志文件与用途
二、常用查询命令
grep " install " /var/log/dpkg.log
grep " upgrade " /var/log/dpkg.log
grep -E " remove|purge " /var/log/dpkg.log
for f in $(ls -1t /var/log/dpkg.log*); do zcat -f "$f" 2>/dev/null; done | tac | grep -E " install "
grep " install " /var/log/apt/history.log
grep -A4 -B4 "2025-04-12" /var/log/apt/history.log
grep -A20 "Commandline: apt install your-package" /var/log/apt/term.log
tail -f /var/log/dpkg.log
tail -f /var/log/apt/history.log
apt history-list
apt history-info <ID>
以上命令覆盖了日常排查所需的大部分场景:dpkg 日志用于“精确变更”,APT 历史用于“事务视角”。
三、进阶用法与组合查询
zgrep -E " install | upgrade " /var/log/dpkg.log* | grep " package-name "
zgrep " install " /var/log/dpkg.log* | grep "$(date -d '2025-04-12' '+%Y-%m-%d')" | wc -l
# 思路:对比 APT 事务中的包集合 与 全部 install 记录
grep " install " /var/log/apt/history.log | sed 's/.*install //; s/ .*//' | sort -u > /tmp/apt-installed.txt
zgrep " install " /var/log/dpkg.log* | awk '{print $4}' | sort -u > /tmp/dpkg-installed.txt
comm -23 /tmp/dpkg-installed.txt /tmp/apt-installed.txt
ls -lh /var/log/dpkg.log*,必要时用 zless /var/log/dpkg.log.2.gz。四、注意事项与实用建议
apt list --installed 或 dpkg-query -l 仅列出当前已安装包,不提供时间信息;要查“何时、如何安装”,仍需查看日志。