You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何清除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.txt
    
    注:不同版本的ubuntu-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

火山引擎 最新活动