为什么每次我删除一个包时都不会调用 autoremove?

为什么每次我删除一个包时都不会调用 autoremove?

man apt-get说:

autoremove 用于删除那些为了满足其他包的依赖关系而自动安装但现在不再需要的包。

那么为什么每次我删除包时它不会自动调用?

编辑

本质上,我的问题是:为什么使用remove <pkg name>而不是autoremove <pkg name>删除包。

看这里

PS:这不会破坏依赖关系这里

答案1

查看AptGet/操作方法 - Ubuntu 文档页面来消除您的疑虑。

它说:

apt-get autoremove

此命令将删除由其他软件包安装的且不再需要的软件包。

apt-get autoremove <package_name>

此命令删除已安装的包和依赖项。

apt-get remove <package_name>

此命令删除已安装的包,但保留完整的配置文件。

编辑

这取决于您对依赖项跟踪器的信任程度。虽然依赖项几乎总是正确的,但有时您希望保留依赖项,特别是当您是开发人员或高级用户安装不在存储库中的软件时。

如果你总是通过 apt-get 安装软件,毫无例外,并且相信所有的依赖关系都是正确的(通常都是正确的),那么你可以使用apt-get autoremove通过删除不再需要的软件包,可以获得少量的驱动器空间,并减少潜在安全漏洞的暴露。

但是如果你手动安装软件,或者开发软件,或者不想处理可能的依赖性错误,那么不使用 autoremove 来清除可能未使用的包可能是更安全的选择。无论你是否apt-get autoremove时不时地使用,你总是会使用apt-get remove Package

例如,如果我安装AwesomePackage,它可能依赖于AwesomeLibrary,因此AwesomeLibrary将自动安装为依赖。当我AwesomePackage使用 autoremove 删除时,只要没有其他包AwesomeLibrary作为依赖项,它也将被卸载。但如果SuperPackage也需要AwesomeLibrary,或者如果我自己明确安装了,AwesomeLibrary而不是让它自动作为依赖项出现(apt-get install AwesomeLibrary),那么 autoremove 就不会删除它。

它不是默认的原因是,AwesomeLibrary在系统中未使用时,这是一个非常小的问题。它几乎永远不会引起问题,并且大多数依赖项不会占用太多空间。也有例外,但删除依赖项导致问题的次数多于它解决或预防问题的次数。

来源:超级用户:什么时候使用 apt-get remove 而不是 apt-get autoremove?

答案2

为什么不删除由其他软件包安装的、并且在删除原始软件包时不再需要的所有软件包?

因为,remove只删除你想要删除的包,而不是它的依赖项。让我们看看:

我安装了xorg依赖于(除其他外)的xserver-xorgxserver-xorg被标记为自动的,而当我保持安装时,xorg它不会被卸载autoremove。现在,我调用apt-get remove xorg,它告诉 apt-get 尽一切努力删除xorg,并且由于它只需要删除该包,因此不会采取进一步的操作。为什么?因为你只告诉他要删除包,别的什么都不要。你没有告诉他如何处理依赖项,也没有告诉他如何处理其他包。apt-get是个好孩子,会按照你的命令用点和逗号来做,不会自作聪明地做你没有要求他做的事情,我喜欢这样。

apt-get autoremove xorg告诉 apt-get 做任何事情来删除xorg任何自动的由 安装的依赖项xorg。然后apt-get按照您的顺序删除xorg和以及标记为的xserver-xorg任何其他依赖项xorg自动的并且没有任何其他依赖项需要满足。

让我们再看另一个场景,我安装了xorgxserver-xorg并且没有一个被标记为自动的。如果我调用removexorg则只有 xorg 会被删除。如果我调用autoremovexorg则只有 xorg 会被删除。如果我调用removexserver-xorg则 xserver-xorg 和 xorg 都将被删除,因为您告诉 apt-get 尽一切努力删除 xserver-xorg,但由于 xorg 也依赖于 xserver-xorg,apt-get 不想在执行您的命令时留下损坏的依赖关系,因此将其删除。

但有趣的是,如果你调用autoremove它将xserver-xorg卸载任何标记为自动的xserver-xorg 和 xorg 本身。很奇怪,对吧?这是因为 apt-get 从您那里获取了这组命令。简而言之,这些是您在调用时按照确切顺序告诉 apt-get 的操作:

apt-get autoremove xserver-xorg

  • 删除 xserver-xorg 的任何反向依赖项。在这种情况下组织
  • 删除 xserver-xorg。
  • 删除 xserver-xorg 所依赖的任何标记为自动的包。
  • 不要做其他任何事情。

apt-get remove xserver-xorg

  • 删除 xserver-xorg 的任何反向依赖项。在这种情况下组织
  • 删除 xserver-xorg。
  • 不要做其他任何事情。

apt-get remove xorg

  • 删除 xorg 的任何反向依赖项。在这种情况下没有任何
  • 删除 xorg。
  • 不要做其他任何事情。

apt-get autoremove xorg

  • 删除 xorg 的任何反向依赖项。在这种情况下没有任何
  • 删除 xorg。
  • 删除 xorg 所依赖且标记为自动的任何软件包。如果 xserver-xorg 被标记为自动,它将被删除。如果不是,它将保持安装状态。
  • 不要做其他任何事情。

如你所见,每组订单最后都有“别做其他事”一旦他执行了所有命令。这就是为什么你只能用 remove 来删除目标。

相关内容