为什么“apt-get -f install”不能自动执行?

为什么“apt-get -f install”不能自动执行?

有时候,在使用 Ubuntu 时,如果我的软件包发生混乱,我就需要运行apt-get -f install来修复它。

如果这是常规修复,为什么不自动进行?

我有什么理由不会想运行它吗?

答案1

您的问题似乎表明,到目前为止,您在处理软件包时只遇到了一些小问题。例如,当您安装谷歌浏览器,由于缺少libappindicator1包,以及一个简单的调用apt-get -f 安装将下载缺少的软件包,然后继续并完成安装google-chorme

唉,并非所有情况都如此简单。有时你会遇到真正复杂的问题,需要降级某些软件包,以便升级其他软件包。在这种情况下,你可能会有几门课程可供选择,你很可能希望/需要能够在不同的可能性中进行选择。甚至你可用的不同课程的布局也不是标准的,取决于所使用的工具。你提到apt-get -f 安装这确实是一种相当简单的乐器(但比它的前身更好,德博芬,现在我很少发现它的用途)。

事实上,在这种情况下,我更喜欢更熟练的资质,其中Debian 管理员手册说(第 285 页):

6.4.1.3. 更好的求解算法

总结本节,让我们注意到,与 apt-get 相比,aptitude 在解决困难情况时拥有更复杂的算法。当请求一组操作并且这些组合操作会导致系统不连贯时,aptitude 会评估几种可能的情况并按相关性递减的顺序呈现它们。但是,这些算法并非万无一失。幸运的是,始终可以手动选择要执行的操作。当当前选定的操作导致矛盾时,屏幕上方会显示一些“损坏”的软件包(您可以按 b 直接导航到这些软件包)。然后可以手动构建发现问题的解决方案。特别是,您只需使用 Enter 选择软件包即可访问不同的可用版本。如果选择其中一个版本可以解决问题,您应该毫不犹豫地使用此功能。当损坏软件包的数量降至零时,您可以安全地转到待处理操作的摘要屏幕,在应用它们之前进行最后检查。

因此,你会发现,用于解决该问题的仪器破碎的配置,以及您可用的操作过程并不像您暗示的那样简单。因此,最好让每个用户自由选择一种工具(deborphan/apt-get/aptitude/synaptic/CLI/...) 以及当此选择不是明确时对包的选择。

答案2

Option -f(或其等效长版本--fix-broken)尝试apt-get修复损坏的依赖项。如果你问为什么默认情况下不启用它,我会说知道你的软件包何时出现问题是件好事,并且然后纠正他们。

相关内容