以下软件包具有未满足的依赖关系!

以下软件包具有未满足的依赖关系!

我写这篇文章是因为我对在 Ubuntu 14.04 上安装 PostgreSQL 9.3 感到很困惑。首先我需要它来进行 Python/Django 开发,当我尝试安装它时我遇到了问题。现在我遇到了这个错误,这让我抓狂不已:

The following packages have unmet dependencies:
postgresql-9.3 : Depends: postgresql-client-9.3 but it is not going to be installed
                 Depends: postgresql-common (>= 142~) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

我在网上找到了一些解决方案(添加 PPA 后如何解决未满足的依赖关系?),并且我按照预防措施做了所有事情,因为我遇到了一些包装破损的问题,之后又再次出现了这个错误。

第二件事我按照官方的 PostgreSQL 安装教程进行安装(http://www.postgresql.org/download/linux/ubuntu/),并且我有重复的存储库,但我已删除它们并添加了一个新的,但仍然出现此错误。

答案1

您可以使用来安装该包。

确保 repo 源是最新的

sudo apt-get update

安装该包。

sudo apt-get install packagename

一旦软件包确定您缺少某些依赖项,请运行以下命令来修复损坏或缺失的依赖项。

sudo apt-get install -f

如果您已经安装了该包,上述命令将仅下载缺少的依赖项。

答案2

我知道我有点晚了,但上述解决方案对我都不起作用。真正解决我问题的是使用aptitude而不是 apt-get。aptitude将建议解决问题的方法。

只需运行这些:

sudo apt-get install aptitude

sudo aptitude install <package-name>

aptitude将为你建议依赖项解析,例如:

The following actions will resolve these dependencies:

Keep the following packages at their current version:
1)     libyaml-dev [Not Installed]                        

Accept this solution? [Y/n/q/? (n)

The following actions will resolve these dependencies:

Downgrade the following packages:                                
1)     libyaml-0-2 [0.1.4-3ubuntu3.1 (now) -> 0.1.4-3ubuntu3 (trusty)]

Accept this solution? [Y/n/q/?] (Y)

正如本文所讨论的邮政

答案3

有时需要修复的依赖项与你尝试安装的程序无关。在我的情况下,它给出了这个错误:

以下有未满足的依赖关系

shashlik :依赖:libc6-i386 但是它将不会被安装

依赖:lib32gcc1 但是它将不会被安装

依赖:lib32z1 但是它将不会被安装

原来我曾尝试安装一个名为“Shashlik”的程序,但安装失败了。所以我运行了代码:

sudo apt-get --purge remove shashlik

然后我跑了:

sudo apt install autoconf

这似乎修复了错误,因为我的程序随后就安装好了。我不确定第二条命令有多大帮助,但我把它放在那里,以防万一解决方案需要它才能起作用。

答案4

首先,你必须找到损坏的包。假设你收到以下错误,

The following packages have unmet dependencies:
 libpython3.9 : Depends: libpython3.9-stdlib (= 3.9.5-3~20.04.1) but 3.9.4-1+bionic1 is to be installed

您必须手动删除损坏的包的文件。

要获取文件列表,您可以运行

sudo ls –l /var/lib/dpkg/info | grep -i libpython3.9-dev

替换libpython3.9-dev为您自己的包名称。

输出

libpython3.9-dev:amd64.list
libpython3.9-dev:amd64.md5sums

现在,您可以丢弃这些文件。

sudo rm /var/lib/dpkg/info/python3.9-dev*

对其余包执行相同的操作。

完成后,你可以运行

sudo apt --fix-broken install

这次上述命令应该可以正常工作。

相关内容