当我尝试安装软件包时,apt 返回“E:未满足的依赖项”,我该如何诊断问题并找出发生问题的原因?

当我尝试安装软件包时,apt 返回“E:未满足的依赖项”,我该如何诊断问题并找出发生问题的原因?

我正在尝试安装一个包,但是包管理器(apt-get、软件中心等)由于未满足依赖关系而拒绝安装它。

我尝试安装该软件包是否会导致依赖性问题?我如何知道问题是什么?

答案1

如果您正在安装特定的包/程序并且遇到依赖性问题,则有两个原因:

  • 你的依赖关系已经被破坏。
  • 由于您当前的设置,无法安装您想要的包。

第一种情况很容易解决。只需执行sudo apt-get check。这将报告已安装软件包的任何问题,您将知道如何解决它们。

sudo apt-get check                          
Reading package lists... Done
Building dependency tree       
Reading state information... Done
You might want to run 'apt-get -f install' to correct these.
The following packages have unmet dependencies:
 libpurple-dev : Depends: libpurple0 (>= 2.10.9) but it is not installed
                 Depends: libpurple0 (< 2.10.9+1~) but it is not installed
 pidgin : Depends: libpurple0 (>= 2.8.0) but it is not installed
 pidgin-whatsapp : Depends: libpurple0 (>= 2.8.0) but it is not installed
E: Unmet dependencies. Try using -f.

通常,如果您没有使用 手动安装任何软件包dpkg,您缺少镜像、损坏的 PPA 或混合了不同版本的存储库(例如 Debian 和 Ubuntu 或 Precise 和 Saucy),则可以使用简单的 来修复sudo apt-get -f install。如果这不能解决问题,您可能需要寻求帮助,添加您尝试的所有操作的结果以及apt-cache policy所有相关软件包的输出:

apt-cache policy pidgin-whatsapp pidgin libpurple-dev libpurple0

现在,如果结果正常,并且依赖性问题仅在您尝试安装软件包时发生,您可能需要知道为什么 apt 拒绝安装该软件包。这很累人,如果您想快速解决问题,这会成为一个障碍,每个问题都有自己的解决方案。在这种情况下建议使用aptitude。首先我们安装它:

sudo apt-get install aptitude

现在你会问 aptitude 为什么你不能使用以下命令安装该包:

aptitude why-not package

它会向您显示一个列表,告诉您无法安装该软件包的原因。可能是缺少软件包,依赖于不可用的软件包,或者有其他软件包与之发生冲突/破坏。示例:

aptitude why-not lsb-core:amd64
i   lsb-security Recommends lsb-core (>= 4.1+Debian12)
i A lsb-core     Conflicts  lsb-core:amd64

在这种情况下,我已经安装了 lsb-security 包,它安装了 lsb-core 32 位版本,并且不允许我安装 64 位版本。

相关内容