我正在尝试安装一个包,但是包管理器(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 位版本。