Bra*_*iam 0 apt software-installation
我正在尝试安装一个软件包,但apt-get由于未满足的依赖关系,软件包管理器(、软件中心等)拒绝安装它。
我尝试安装软件包是否会导致依赖关系问题?我怎么知道是什么问题?
如果您正在安装特定的包/程序并且遇到依赖性问题,则有两个原因:
第一种情况很容易弄清楚。只需执行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.
Run Code Online (Sandbox Code Playgroud)
通常,如果您没有使用 手动安装任何软件包dpkg、缺少镜像、损坏的 PPA 或不同版本存储库的混合(如 Debian 和 Ubuntu 或 Precise 和 Saucy),这可以通过一个简单的sudo apt-get -f install. 如果这不能解决它,您可能需要寻求帮助,添加您尝试的所有操作结果以及apt-cache policy所有相关包的输出:
apt-cache policy pidgin-whatsapp pidgin libpurple-dev libpurple0
Run Code Online (Sandbox Code Playgroud)
现在,如果结果是干净的并且依赖问题仅在您尝试安装软件包时发生,您可能需要知道为什么 apt 拒绝安装软件包。如果您想快速解决问题,这样做很累,并且会造成障碍,并且每个问题都有自己的解决方案。建议在这种情况下使用aptitude. 首先我们安装它:
sudo apt-get install aptitude
Run Code Online (Sandbox Code Playgroud)
现在您将询问 aptitude 为什么您不能使用以下方法安装该软件包:
aptitude why-not package
Run Code Online (Sandbox Code Playgroud)
它会向您显示一个不错的列表,告诉您无法安装该软件包的原因。它可能是一个丢失的包,这取决于一个不可用的包,或者其他一些有冲突/破坏它的包。例子:
aptitude why-not lsb-core:amd64
i lsb-security Recommends lsb-core (>= 4.1+Debian12)
i A lsb-core Conflicts lsb-core:amd64
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我安装了 lsb-security 包,它安装了 lsb-core 32 位版本,但不允许我安装 64 位版本。