![如何处理 Ubuntu 软件包循环破坏的依赖链(这里:“security [amd]”与“security [all]”)](https://linux22.com/image/1024532/%E5%A6%82%E4%BD%95%E5%A4%84%E7%90%86%20Ubuntu%20%E8%BD%AF%E4%BB%B6%E5%8C%85%E5%BE%AA%E7%8E%AF%E7%A0%B4%E5%9D%8F%E7%9A%84%E4%BE%9D%E8%B5%96%E9%93%BE%EF%BC%88%E8%BF%99%E9%87%8C%EF%BC%9A%E2%80%9Csecurity%20%5Bamd%5D%E2%80%9D%E4%B8%8E%E2%80%9Csecurity%20%5Ball%5D%E2%80%9D%EF%BC%89.png)
我尝试在全新安装的 ubuntu-20.04(昨天下载并安装)上安装一个非常常见的软件包 - “gnome-tweaks”。这遇到了无法解析的不可能依赖链,我正在尝试了解诊断/解决它的正确方法是什么。它看起来像一个如此常见/著名的软件包,几乎不可能是一个错误 - 相反,我的安装(不到 24 小时)一定出了问题。
- gnome-tweaks 仅存在于 3.34.0-2ubuntu
- ...需要 gnome-shell-extension-prefs
- ......仅存在版本 3.36-4-1ubuntu1~20.04.2
- ........需要 gnome-shell = 3.36.4-1ubuntu1~20.04.2
- 但新安装的操作系统有 gnome-shell = 3.36.9-0ubuntu0.20.04.2
我认为你应该如何处理这些问题
- 检查所有内容是否为当前最新版本(根据@changanAuto 的评论):这可能不是必需的,但大多数人大多数时候都想要这个,并且(在全新安装操作系统的情况下)它可能就是你想要的
- 检查 apt 源:如果我们只有标准源,上述情况应该是不可能的:不应该存在这样的设置:你的源中安装的核心包的版本应该比最新版本要新
- 如果所有来源都是无趣且标准的,则检查链中每个包的来源:如果其中一个来源很奇怪或损坏,则可能会缺少一些应该在其中的包,从而导致系统尝试满足来自不同来源的依赖关系(只有较旧或较新的版本)
- 如果仍然不起作用,请检查软件包本身是否已被作者/维护者删除,从而从最新来源中消失
- ...如果以上所有方法均不起作用:您正在访问损坏/损坏的源,并且发现了需要报告的错误。
如果上面我说的正确的话,那么看起来:
- 我的所有来源都是平淡无奇的,我只使用“focal”(ubuntu-20.04),我看不到里面有什么奇怪的东西。我没有手动添加任何东西。
- gnome-shell-common 来自:foal-security[all]
- gnome-shell-extension-prefs 来自:focal-security[amd64]
- gnome-shell-common 是较新的版本(与 gnome-shell-extension-prefs 不兼容)
...这是否意味着‘focal-security[all]’(目前)存在一个错误,阻止 amd64 机器使用?
...我们不应该默认安装安全更新吗?
答案1
在桌面上搜索后,我发现“软件和更新”>“更新”>“对于其他软件包,订阅”设置为:
“仅安全更新”
...鉴于我的问题似乎是“安全”存储库中的冲突,我尝试将其切换到“所有更新”,突然一切都好了。我假设“仅安全更新”是默认设置(但完全有可能我在安装操作系统后立即更改了它,然后忘记了)
因此,如果我理解正确的话,发生的事情是:
- 我认为我的 apt 源都是正确的,通过查看 apt/sources.list 并仔细检查其中的所有内容,我猜想它们都是正确的。
- ...但我误读了内容,没有意识到我以某种方式被阻止访问某些来源的定期更新
- ...并且其中一个安全更新要求我还进行非安全更新,以满足链。