麒麟OS系统更新日志可通过四类途径查询:一、dpkg.log记录包操作;二、apt/history.log保存高级包管理命令详情;三、journalctl检索更新服务运行日志;四、~/.cache/kylin-update-manager/logs/存储桌面端结构化更新快照。

如果您需要追溯麒麟OS系统中软件包安装、升级或卸载的历史操作,特别是系统更新引发的版本变更,这些行为通常被记录在特定日志文件中。以下是查询系统更新日志与版本变更记录的具体方法:
一、查看 dpkg 日志(Debian/Ubuntu 系基础版本)
银河麒麟桌面版 V10 及 openKylin 等基于 Debian/Ubuntu 的发行版使用 dpkg 作为底层包管理器,所有软件包操作均写入 /var/log/dpkg.log,该文件按时间顺序记录 install、upgrade、remove 等动作及对应版本号。
1、以管理员权限查看全部更新记录:
sudo cat /var/log/dpkg.log
2、仅筛选出升级(upgrade)操作:
sudo grep " upgrade " /var/log/dpkg.log
3、提取最近一次系统级升级涉及的软件包列表:
sudo grep " upgrade " /var/log/dpkg.log | tail -n 20
4、按日期倒序显示最近7天内的安装与升级事件:
sudo awk -v d="$(date -d '7 days ago' '+%Y-%m-%d')" '$1" "$2 >= d {print}' /var/log/dpkg.log
二、检查 apt 历史日志(高级包管理操作)
apt 工具在执行 update、upgrade、dist-upgrade 时会生成独立的操作日志,存储于 /var/log/apt/history.log,其中包含命令执行时间、参数、起始/结束状态及已处理软件包的精确版本变更信息。
1、查看完整 apt 操作历史:
sudo cat /var/log/apt/history.log
2、定位最近一次 dist-upgrade 的详细记录:
sudo sed -n '/Start-Date:.*[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}/,/^$/p' /var/log/apt/history.log | tail -n +1 | head -n 50
3、提取某次升级中所有被更新的软件包及其旧/新版本:
sudo awk '/Commandline:.*dist-upgrade|upgrade/{f=1;next} f && /End-Date:/ {exit} f {print}' /var/log/apt/history.log | grep -E "(^Install:|^Upgrade:)"
三、解析 journalctl 中的更新服务日志
当系统通过图形界面“更新管理器”或 systemd 服务(如 kylin-update-manager)触发更新时,相关事件会被捕获进 journald,并可按服务单元名过滤。该方式适用于识别自动更新、安全补丁推送等后台行为。
1、查看更新管理器服务的全部运行日志:
sudo journalctl -u kylin-update-manager.service
2、检索包含“update”关键词的近期系统级日志条目:
sudo journalctl --since "7 days ago" | grep -i "update\|upgrade\|patch"
3、仅显示成功完成的更新任务记录:
sudo journalctl -u kylin-update-manager.service | grep "Update completed successfully"
4、检查更新过程中是否发生失败或回滚:
sudo journalctl -u kylin-update-manager.service | grep -i "failed\|rollback\|error"
四、读取更新管理器本地缓存日志(桌面环境专用)
麒麟KOS桌面版的“更新管理器”应用会在用户主目录下生成操作快照日志,路径为 ~/.cache/kylin-update-manager/logs/,其中包含每次扫描、下载、安装阶段的结构化文本日志,含具体软件包名、版本号、SHA256 校验值及时间戳。
1、进入用户专属更新日志目录:
cd ~/.cache/kylin-update-manager/logs/
2、列出最新生成的日志文件:
ls -t | head -n 1
3、查看最新日志文件内容(假设文件名为 update_20260322_142833.log):
cat update_20260322_142833.log
4、快速提取本次更新所涉及的所有软件包名称与版本:
grep -E "package:|version:" update_20260322_142833.log | sed 's/^[[:space:]]*//'

















