我keybase
安装了 CLI,但keybase
不幸的是,该软件包还包含一个 GUI 客户端,它需要 libadwaita、GTK 和一堆其他巨大的 GUI 东西——这会大大增加我安装的软件包数量和 WSL 使用的磁盘空间量。因此,我手动安装了,keybase
以dpkg -i
避免引入所有 GUI 依赖项,这样我就可以使用 CLI 而不会出现任何臃肿的情况。
但是,这导致apt
停止工作。当我尝试安装任何其他软件包时,即使是与完全不相关的软件包keybase
,我也会收到此错误消息:
Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
keybase : Depends: libappindicator1 but it is not going to be installed or
libayatana-appindicator1 but it is not going to be installed
Depends: libgconf-2-4 but it is not going to be installed
Depends: libgtk-3-0 but it is not going to be installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).
我发现的唯一解决方案是暂时删除keybase
,dpkg
运行我的apt
命令,然后重新安装keybase
。但我不喜欢这个解决方案——我想保留keybase
在我的系统上。有没有办法apt
忽略这些未满足的依赖关系?或者,有没有办法在不破坏的情况下在系统上保留任何未满足的依赖关系apt
?
答案1
当系统存在未满足的依赖关系时,Apt 不能用于升级或安装软件。
- “无法用于升级“包括安全包升级。具有未满足依赖关系的系统不是接收安全更新。因此,对于大多数用户来说,让系统处于这种状态是不明智的。
对于大多数 Ubuntu 用户,未满足的依赖关系当他们安装非 Ubuntu 或错误版本的软件时,就会发生这种情况。当他们卸载那些非 Ubuntu 或错误版本的软件包时,问题就会得到解决。
对于勇敢的高级用户、Apt 和 dpkg 具有--force
(参见man dpkg
)允许有限覆盖的选项。这些是 Ubuntu 前时代的遗产,如今很少使用……但可能正是您所寻求的。例如--force-depends-version
:
Depends-version:检查依赖项时不关心版本。这会影响 Pre-Depends 和 Depends 字段。
警告:应谨慎使用 Force,并且只能暂时使用,直到上游版本修复依赖性问题。Apt 和 dpkg 可能会继续强烈(并且正确地)抱怨错误版本的软件包。可能会发生其他副作用。
- 不要将强制软件包作为永久解决方案。它会导致系统崩溃和崩溃。如果您需要永久的非 deb 软件包解决方案,请研究从源代码构建、替代应用程序和/或替代打包方法。不要对安装了强制软件包的系统进行发布升级,因为这些软件包可能会导致发布升级失败。