如何卸载除默认 Ubuntu 软件包之外的所有软件包?

qwa*_*zix 14 package-management

我有一个带 8 GB SSD 的戴尔 Mini 9。几年前我安装了Lucid,每次都升级,现在我的硬盘快满了。我看到安装了新的默认程序,但不会自动删除旧的程序(例如 Banshee 和 Rhythmbox)。现在我可以从头开始安装一个新的发行版,但如果有办法避免麻烦,那就太好了。我不介意我多年来安装的程序是否被删除,它们只是少数,我可以立即重新安装它们。

hto*_*que 12

这个问题解决方案也可能会解决您的问题。

12.04 之前的 Ubuntu

gnome-terminal做:

cat filesystem.manifest-desktop | awk '{print $1}' | sort > default.txt
Run Code Online (Sandbox Code Playgroud)

这将摆脱软件包版本,并为您留下一个包含默认安装的所有软件包的排序列表default.txt。如链接问题中所述,请记住,在安装 Ubuntu 期间安装更新和/或受限软件包时,您可能会更改默认安装。

Ubuntu 12.04

上面的步骤略有变化。要获取最初安装的软件包列表,您需要解压两个文件:

  1. 文件系统清单
  2. filesystem.manifest-remove

为了得到你想要的,你需要从前者中删除后者:

comm -3 <(cat filesystem.manifest | awk '{print $1}' | sort) <(cat filesystem.manifest-remove | sort) > default.txt
Run Code Online (Sandbox Code Playgroud)

现在继续像 12.04 之前一样:

dpkg --get-selections | awk '{print $1}' | sort > current.txt
Run Code Online (Sandbox Code Playgroud)

这将为您提供所有当前安装的软件包的排序列表current.txt

diff -u default.txt current.txt | grep "^+[^+]" | cut -c 2- > installed.txt
diff -u default.txt current.txt | grep "^-[^-]" | cut -c 2- > uninstalled.txt
Run Code Online (Sandbox Code Playgroud)

这将为您提供两个包列表之间的差异,其中installed.txt包含所有不属于默认安装的包,uninstalled.txt包含与默认安装相比您缺少的所有包。

  • 谢谢你的回答,这对我帮助很大!仅供未来用户参考:filesystem.manifest-desktop 可以在 Ubuntu CD 的 casper/ 文件夹下找到。除此之外,这工作得很好,再次感谢! (2认同)