答案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
在系统中未使用时,这是一个非常小的问题。它几乎永远不会引起问题,并且大多数依赖项不会占用太多空间。也有例外,但删除依赖项导致问题的次数多于它解决或预防问题的次数。
答案2
为什么不删除由其他软件包安装的、并且在删除原始软件包时不再需要的所有软件包?
因为,remove
只删除你想要删除的包,而不是它的依赖项。让我们看看:
我安装了xorg
依赖于(除其他外)的xserver-xorg
。xserver-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
自动的并且没有任何其他依赖项需要满足。
让我们再看另一个场景,我安装了xorg
,xserver-xorg
并且没有一个被标记为自动的。如果我调用remove
,xorg
则只有 xorg 会被删除。如果我调用autoremove
,xorg
则只有 xorg 会被删除。如果我调用remove
,xserver-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 来删除目标。