在 Debian(以及基于 Debian 的系统,如 Ubuntu)中,导出已安装软件列表有多种方式,取决于你是想导出所有软件、仅用户手动安装的软件,还是用于迁移/重装系统。下面按常见场景说明。
dpkg(最基础、最通用)dpkg --get-selections > installed_packages.txt
恢复(在另一台机器或重装后):
sudo dpkg --set-selections < installed_packages.txt
sudo apt-get dselect-upgrade
✅ 适合:完整系统迁移
❌ 包含大量依赖包,不够精简
apt 导出(推荐)apt list --installed > installed_packages.txt
或只导出包名:
apt list --installed | cut -d/ -f1 > installed_packages.txt
很多情况下你只关心你自己安装的软件,而不是系统依赖。
apt-markapt-mark showmanual > manual_packages.txt
✅ 非常适合系统重装
✅ 不包含依赖包
恢复安装:
sudo apt install $(cat manual_packages.txt)
aptitude(更精确)如果没有安装:
sudo apt install aptitude
导出:
aptitude search '~i !~M' -F '%p' > manual_packages.txt
说明:
~i:已安装!~M:非自动安装dpkg -l > installed_packages_with_version.txt
内容包含:
生成一个可直接执行的安装脚本:
apt-mark showmanual | tr '\n' ' ' > install.sh
然后编辑 install.sh:
#!/bin/bash
sudo apt update
sudo apt install -y <包列表>
| 场景 | 推荐命令 |
|---|---|
| 系统完整迁移 | dpkg --get-selections |
| 重装系统 | apt-mark showmanual ✅ |
| 查看当前装了什么 | apt list --installed |
| 精确控制依赖 | aptitude |
| 生成安装脚本 | apt-mark showmanual |
snap、flatpak,需要单独导出:snap list
flatpak list
如果你愿意,可以告诉我:
我可以帮你给出最合适的导出与恢复方案。