运维 Ubuntu 服务器、桌面、虚拟机时,经常需要查看系统已安装软件包:系统迁移、清理无用依赖、排查故障、备份软件清单、审计安装记录都离不开相关命令。
Ubuntu 软件分为三类:APT 管理的 deb 包、Snap 预装应用、Flatpak 第三方应用,三类工具查询命令完全独立,本文统一整理全套实操命令,兼容 Ubuntu22.04/24.04/26.04 所有 LTS 版本,新手运维可直接复制使用。
一、快速选型对照表(运维快速查表)
| 需求场景 | 推荐命令 | 适用场景说明 |
|---|---|---|
| 人机快速浏览包名、版本 | apt list --installed | 日常快速查看,输出直观,不适合脚本自动化 |
| 查看软件安装状态(完整 / 残留配置) | LC_ALL=C dpkg --list | 识别 ii 正常安装、rc 残留配置文件等状态标记 |
| 脚本导出标准化清单、自定义字段 | dpkg-query --show --showformat | 输出无多余警告,适合批量导出、对比快照 |
| 查看单个软件详情、包含文件路径 | dpkg-query –status / dpkg-query –listfiles | 排查软件配置、查找文件归属 |
| 区分手动安装软件与自动依赖 | apt-mark showmanual / apt-mark showauto | 清理无用依赖、系统迁移必备 |
| 查看 Snap 商店应用 | snap list | Ubuntu 桌面预装 Snap,APT 无法读取 |
| 查看 Flatpak 第三方应用 | flatpak list –app | 自行安装 Flathub 软件专用 |
| 查看近期软件安装 / 卸载记录 | zgrep ” install ” /var/log/dpkg.log* | 追溯软件变更时间、版本 |
二、apt list 快速查看已安装包(新手首选)
1. 列出所有 APT 已安装软件
apt list --installed
输出包含软件仓库、版本、架构、自动 / 手动安装标记,阅读友好。
2. 过滤指定软件(查找 nginx、linux 内核、python 等)
屏蔽 APT 脚本警告,只保留过滤结果:
apt list --installed 2>/dev/null | grep -i nginx
# 查看所有内核镜像
apt list --installed 2>/dev/null | grep "^linux-image"
注意缺点
apt 输出存在不稳定 CLI 警告,不适合写入自动化脚本,批量导出清单优先用 dpkg-query。
三、dpkg /dpkg-query 底层包查询(脚本 / 审计推荐)
dpkg 是 Ubuntu 底层包管理工具,输出格式稳定无多余提示,适合批量导出、日志对比。
1. 查看全量软件状态(ASCII 无乱码)
Ubuntu26.04 默认本地化输出会出现方框乱码,强制 C 语言环境:
LC_ALL=C dpkg --list
状态标识说明:
- ii:完整正常安装
- rc:软件已卸载,但配置文件残留
2. dpkg-query 标准化输出(导出清单核心)
仅筛选完全安装(ii)的软件,输出包名 + 版本,无多余表头:
LC_ALL=C dpkg-query --show --showformat='${db:Status-Abbrev}\t${binary:Package}\t${Version}\n' | grep '^ii'
3. 导出软件清单到本地文件(系统迁移备份)
# 导出完整清单
LC_ALL=C dpkg-query --show --showformat='${binary:Package}\t${Version}\n' | grep '^ii' | cut -f2- | sort > ~/ubuntu_install_packages.txt
# 统计已安装软件总数
LC_ALL=C dpkg-query --show --showformat='${db:Status-Abbrev}\n' | grep -c '^ii'
4. 单个软件详情、文件路径查询
# 查看软件元信息(版本、架构、状态)
dpkg-query --status bash
# 查看软件所有安装文件
dpkg-query --listfiles bash
# 反向查询:某个文件属于哪个软件包
dpkg-query --search /etc/bash.bashrc
四、apt-mark 区分手动安装包与自动依赖包
系统迁移、清理冗余软件必备:手动包是管理员主动安装,自动包是依赖自动拉取,清理时仅保留手动包即可。
1. 查看所有手动安装软件
apt-mark showmanual
# 备份手动安装清单(新系统一键重装)
apt-mark showmanual | sort > ~/manual_packages.txt
2. 查看自动安装依赖包
apt-mark showauto
实操技巧
重装系统时,直接读取 manual_packages.txt 批量安装,APT 会自动补齐所有依赖,无需手动记录全部软件。
五、非 APT 软件:Snap / Flatpak 应用查询
APT、dpkg 仅管理 deb 包,桌面版 Ubuntu 自带 Snap,安装 Flathub 后有 Flatpak,需单独查询。
1. 查看 Snap 应用(兼容无 snap 环境)
if command -v snap >/dev/null 2>&1; then snap list; else echo "未安装Snap"; fi
2. 查看 Flatpak 应用(仅展示软件,不包含运行库)
if command -v flatpak >/dev/null 2>&1; then flatpak list --app --columns=application,name,version; else echo "未安装Flatpak"; fi
六、查看软件安装历史日志(追溯操作记录)
dpkg 日志记录所有安装、卸载、升级行为,可排查近期软件变更:
# 查看近期20条安装记录
grep " install " /var/log/dpkg.log | tail -n 20
# 读取压缩归档日志,查看更早记录
zgrep -h " install " /var/log/dpkg.log* 2>/dev/null | tail -n 40
七、常见问题
- apt list 脚本警告 脚本自动化不要使用 apt list,替换为 dpkg-query 标准化输出,消除警告干扰。
- dpkg –list 乱码 执行前添加
LC_ALL=C强制 ASCII 输出,适配 Ubuntu26.04 新版本地化界面。 - rc 状态软件占用空间 rc 代表仅残留配置,可执行
sudo apt autoremove --purge清理无用配置。 - Snap/Flatpak 软件不在 dpkg 列表 属于独立包管理器,必须单独用 snap list、flatpak list 查询。
总结:
- 日常快速查看:
apt list --installed; - 脚本、备份、系统迁移:dpkg-query 导出清单;
- 清理依赖、重装系统:apt-mark 区分手动安装包;
- 桌面应用完整盘点:同时查询 Snap+Flatpak;
- 故障追溯安装记录:读取 /var/log/dpkg.log 日志。 全套命令覆盖 Ubuntu22.04/24.04/26.04 所有版本,是服务器运维、桌面系统维护高频工具集,建议收藏作为速查手册。