apt-get autoremove会破坏其他依赖关系吗?

我想使用apt-get autoremove命令来删除liba,但我不确定它是否足够智能以保留其他依赖项。例如,如果liba依赖于libb,而libc也依赖于libb,那么会怎样呢?
sudo apt-get autoremove liba

删除libb吗?谢谢提前。
4个回答

除非出现错误,否则apt-get或其他APT工具都不会破坏依赖关系。

你不需要运行apt-get autoremove liba,只需运行apt-get autoremoveautoremove的整个目的就是发现需要删除的内容。

当你运行apt-get autoremove时,请检查要删除的软件包列表,确保你没有依赖于将被删除的任何软件包。你可能没有注意到,你经常使用的软件包可能已作为另一个软件包的依赖而被引入。


我因为懒惰而犯了一个愚蠢的概念性错误。谢谢。 - 4ae1e1
你可以运行apt-get autoremove liba来删除liba和任何其他不再使用且在运行autoremove命令时将自动被删除的软件包。 - dobey

apt-getautoremove 选项将只删除依赖于 liba 和不再使用的软件包。


从apt-get手册中可以看到:
autoremove用于删除那些为了满足某个软件包的依赖关系而自动安装的软件包,但现在不再需要的软件包。
autoremove命令不接受任何软件包作为参数(命令只是apt-get autoremove)。执行该命令不会破坏任何依赖关系。

并不完全正确。它确实接受参数。apt-get autoremove foo将删除不再使用的软件包,以及foo和它的依赖项。 - dobey
真的吗?我不知道这个。至少它没有记录。man页在概要下面只说明了install、remove、purge、source和build-dep接受包列表。 - Eric Carvalho
但我刚刚测试了,你是对的。 - Eric Carvalho

如果你想移除liba,你应该运行apt remove liba。然后你可以运行apt autoremove来移除任何不再使用的liba的依赖项。 apt会保留(1)你安装的软件包列表和(2)因为它是你安装的软件包的依赖项而自动安装的软件包列表。所以当你调用apt autoremove时,它会检查这些列表中的软件包,看看哪些软件包既不是你自己安装的,也不再是其他软件包的依赖项。