我最近从 Fedora 21 升级到 Fedora 23。除了涉及dnf
.
升级后,执行 adnf upgrade
给我这个:
Skipping packages with broken dependencies:
sqlite x86_64 3.11.0-1.fc23 updates 484 k
Anrpm -qa | grep sqlite
通知我当前正在安装另一个版本的 sqlite:
sqlite-3.10.2-1.fc23.x86_64
现在,我想我可以通过使用来快速解决这个问题dnf upgrade --best --allowerasing
。不幸的是,这一次不起作用,因为已经安装了先前的版本:
Error: cannot install both sqlite-3.11.0-1.fc23.x86_64 and sqlite-3.10.2-1.fc23.x86_64
我想我可以简单地卸载 sqlite 包,删除依赖包,安装较新版本的 sqlite,然后安装依赖包。这显然需要一些时间,但我已经习惯这样做了。如果您愿意,可以手动解决依赖关系。
然而,dnf remove sqlite
给了我这个:
Error: The operation would result in removing the following protected packages: systemd, dnf.
那么,从现在开始我该如何走呢?我显然无法卸载dnf
,或者systemd
类似的。有没有办法可以强制升级依赖于其他被阻止的包的包?
答案1
sqlite 的具体问题是一个暂时性问题,由于错误的更新导致其进入存储库。 (在几位测试人员已经批准后,负面的 QA 反馈来得太晚了。)测试中的更新这应该可以解决问题。
这应该可以解决您眼前的问题;我不确定您是否需要更一般的答案 - 不幸的是,我认为一般的答案通常是“好吧,你不能,真的......当更新存储库处于不连贯的状态时,没有什么可以做的”做完了。”如果你真的如果想要深入研究它(例如,如果存在严重的安全问题),您可以绕过 DNF 并直接使用 rpm(至少在问题依赖于 RPM 本身之前)。