如何清除Ubuntu安装后通过apt-get安装的所有软件包?
嘿,这个需求相当实用啊——想把Ubuntu系统还原到接近刚安装好的状态,只保留初始的基础包,把后来用apt装的全清掉对吧?确实有办法实现类似你说的「mega apt-get purge」效果,但操作的时候可得小心,不然容易把系统核心组件给误删了。下面是具体的操作步骤:
实现“超级apt清除”的具体步骤
1. 生成系统初始基础包列表
首先得搞清楚:Ubuntu刚安装完成时,默认带了哪些包?我们需要生成这个基准列表来做对比:
- 如果你在系统刚装好的时候就备份过包列表,直接用那个就行。如果没有,我们可以通过
ubuntu-minimal(Ubuntu最小安装的核心包集合)来生成基础列表,适配你的系统版本:
注:不同版本的# 以Ubuntu 22.04为例,提取最小安装的依赖包列表 apt-cache show ubuntu-minimal | grep -E 'Depends|Recommends' | sed -e 's/Depends: //g' -e 's/Recommends: //g' -e 's/,//g' | tr ' ' '\n' > base_packages.txtubuntu-minimal依赖可能略有差异,确保你用的是对应自己系统的版本。
2. 获取当前已安装的所有包列表
接下来把现在系统里所有通过dpkg管理的包都列出来:
dpkg --get-selections | awk '{print $1}' > current_packages.txt
3. 筛选出后来额外安装的包
对比两个列表,找出那些不在初始基础包里、是你后来装的包:
# 用comm命令对比排序后的两个列表,提取只在current里有的包 comm -23 <(sort current_packages.txt) <(sort base_packages.txt) > extra_packages.txt
4. 关键:检查要删除的包!
这一步绝对不能跳过!打开extra_packages.txt仔细看看里面的内容,比如如果你用的是桌面版Ubuntu,ubuntu-desktop可能会出现在这个列表里(如果初始是最小安装的话),这时候你得把它从列表里删掉,不然执行删除后桌面环境就没了。
5. 执行清除操作
先模拟删除看看效果,确认没问题再实际执行:
# 模拟删除(不会真的改动系统) sudo apt purge --dry-run $(cat extra_packages.txt) # 如果预览结果没问题,执行实际清除 sudo apt purge $(cat extra_packages.txt)
6. 收尾清理
清除完额外包后,再清理残留的依赖和配置文件:
# 自动移除不再需要的依赖并清除残留配置 sudo apt autoremove --purge # 清理apt缓存 sudo apt clean
重要注意事项
- 备份!备份!备份! 操作前一定要备份好个人文件、配置文件,万一误删了关键组件,还能恢复。
- 针对桌面版的特殊处理:如果你的Ubuntu是桌面版,初始安装时其实包含了
ubuntu-desktop相关组件,所以生成基础列表的时候,可能需要把ubuntu-desktop的依赖也加进去,不然会把桌面环境当成额外包删掉。 - 系统版本适配:不同Ubuntu版本的基础包集合不一样,比如20.04和22.04的
ubuntu-minimal依赖有区别,一定要对应自己的系统版本来生成基础列表。
内容的提问来源于stack exchange,提问作者Arcticooling




