使用 apt-get 删除包和依赖项

Bri*_*ins 8 apt apt-cache purge

我最近阅读了很多关于删除包和依赖项的问题/答案/意见。有很多不同的方法可以做到这一点,有些过于复杂,有些不够/不完整。我想在这里问一个地方,其他人认为清除包和所有内容(包括配置、依赖项和依赖项的配置)的最佳方法是什么。我也会提供我的方法,这些方法来自大量的反复试验和拔毛。

Bri*_*ins 13

警告:这可以删除您可能仍然需要的包。如果发生这种情况,只需重新安装它们。但老实说,当你安装/卸载一些会对你的系统产生重大影响的东西时......为什么不先进行备份。

我曾经想出的最彻底的方法是完全删除一个包加上它的依赖项加上所有配置,包括那些依赖项的配置并做一些清理工作,其中 PACKAGENAME 是要删除的主要包:

  • 从桌面注销并按 Ctrl+Alt+F1 然后登录到 TTY1 并运行以下命令:

    sudo apt-get purge <PACKAGENAME>
    sudo apt-get purge $(apt-cache depends <PACKAGENAME> | awk '{ print $2 }' | tr '\n' ' ')
    sudo apt-get autoremove
    sudo apt-get update
    sudo apt-get check
    sudo apt-get -f install
    sudo apt-get autoclean
    
    Run Code Online (Sandbox Code Playgroud)
  • 如果需要,重新启动

    sudo shutdown -r now
    
    Run Code Online (Sandbox Code Playgroud)

那么第二行发生了什么?管道从 apt-cache 依赖中获取输出并重新格式化它。第一个管道awk '{ print $2 }' 获取 apt-cache 依赖的输出并仅打印或“回显”第二列。没有它,您还会在列表中拥有另一列,即依赖类型,即“依赖”、“推荐”等。然后第二个管道tr '\n' ' '获取该结果并删除或截断(因此tr)、换行符并用分隔名称的空格替换它们。所有这些都返回一个“空格分隔”的 PACKAGENAME 的所有依赖包的名称列表,该列表格式友好,可用于多个包输入以清除命令选项。

这对于元包尤其有效。我在最后运行最后一个命令“sudo apt-get -f install”以检查可能的损坏包并在一次进行如此多的更改后修复它们。每当我添加“DE”并想回去时,我都会这样做。就在最近,我在安装 GNOME 后使用了它,它甚至解决了这样一个事实,即在仍然离开我的 GRUB 更改并在 DM 中保留登录选项后,仅使用 autoremove 清除 Gnome。当我尝试 lubuntu-desktop 时,它修复了一些冲突并从 DM 登录中删除了清除和自动删除留下的条目。

一种效果很好的类似方法可能更安全,但仍然不能总是得到一切:

sudo apt-get --purge autoremove PACKAGENAME
Run Code Online (Sandbox Code Playgroud)

可能需要或可能不需要跟进:

sudo apt-get update
sudo apt-get check
sudo apt-get -f install
sudo apt-get autoclean
Run Code Online (Sandbox Code Playgroud)

  • 那么...您正在清除“depends”而不检查其他包是否也依赖于它们? (3认同)

小智 6

我也用aptitude purge这个:

sudo aptitude purge <PACKAGENAME>
Run Code Online (Sandbox Code Playgroud)

这个命令

  • 删除依赖项
  • 无需删除依赖项,这些依赖项也是某些其他已安装软件包的依赖项,
  • 但我不确定它是否删除了依赖项的配置。