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

cop*_*ser 53 package-management aptitude apt dependencies

我写这篇文章是因为我对在我的 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.
Run Code Online (Sandbox Code Playgroud)

我在网上找到了一些解决方案(如何在添加 PPA 后解决未满足的依赖项?),并且我对预防措施部分做了所有工作,因为我遇到了一些损坏的包问题,并且在我再次向我显示此错误之后.

第二件事我遵循了官方的 PostgreSQL 安装教程(http://www.postgresql.org/download/linux/ubuntu/),我有重复的存储库,但我删除了它们,我添加了一个新的,但是还是这个错误。

小智 50

您可以使用安装包。

确保回购源是最新的

sudo apt-get update
Run Code Online (Sandbox Code Playgroud)

安装包。

sudo apt-get install packagename
Run Code Online (Sandbox Code Playgroud)

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

sudo apt-get install -f
Run Code Online (Sandbox Code Playgroud)

如果您已经安装了软件包,上面的命令只会下载缺少的依赖项。

  • 谢谢,我认为这意味着使用 `sudo apt-get install -f packagename` 并得到相同的错误。 (4认同)
  • 不起作用:`0 升级,0 新安装,0 删除,0 未升级` (4认同)
  • 这不适用于 **python2.7-minimal** 错误。 (3认同)

Gab*_*ler 30

我知道我有点晚了,但上述解决方案都不适合我。真正解决我的问题的是使用aptitude而不是 apt-get。aptitude将提出问题的解决方案。

只需运行这些:

sudo apt-get install aptitude

sudo aptitude install <package-name>
Run Code Online (Sandbox Code Playgroud)

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)
Run Code Online (Sandbox Code Playgroud)

正如这篇文章中所讨论

  • 这对我有用,而其他答案则没有。谢谢! (3认同)
  • 对我来说最重要的是“aptitude”愿意建议“降级”软件包,而“apt”则不然。这为我提供了从 PPA 中删除第三方软件包并将其重置为现有 Ubuntu 版本的解决方案,这解决了我所有的依赖问题。 (3认同)

小智 13

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

以下具有未满足的依赖项

shashlik : 取决于: libc6-i386 但它不会被安装

取决于:lib32gcc1 但它不会被安装

取决于:lib32z1 但它不会被安装

结果是我试图安装一个名为“Shashlik”的程序,但安装失败。所以我运行了代码:

sudo apt-get --purge remove shashlik
Run Code Online (Sandbox Code Playgroud)

然后我跑了:

sudo apt install autoconf
Run Code Online (Sandbox Code Playgroud)

这似乎修复了我的程序然后安装的错误。我不确定第二个命令有多大帮助,但我把它放在那里,以防解决方案起作用。


cop*_*ser 6

让我与其他人分享我安装postgresql-9.3. 首先,我已经为此苦苦挣扎了大约 4/5 天,我终于设法做到了。

我在第一篇文章中分享的这些令人讨厌的错误全都出错了,因为我试图用谷歌搜索它并发现人们有更多更少的相同错误,或者正在努力解决类似的错误。

长话短说,你在这里有一个很好的答案如何解决未满足的包:

添加 PPA 后如何解决未满足的依赖项?

我的错误是我制作了重复的存储库,此链接中的答案解决了这个问题,此命令sudo apt-get install -f又犯了另一个错误,您必须手动执行此操作,至少我做到了(请阅读预防措施部分,但您可以阅读最后,它是一个imba帖子)。

其次,我设法从官方 PostgreSQL 页面 http://www.postgresql.org/message-id/20140327084212.GA12703@msgid.df7cb.de(这是人们在安装 postgresql 时经常遇到的错误) ),这让我找到了
https://wiki.postgresql.org/wiki/Apt,这是将 PostgreSQL 包添加到您的系统的正确方法,只需阅读并逐步执行即可。

第三步是@vembutech 帖子中提供的一系列命令:

sudo apt-get update && sudo apt-get upgrade
sudo apt-get install postgresql-9.3 postgresql-contrib-9.3
Run Code Online (Sandbox Code Playgroud)


Bal*_*Jha 6

首先,您必须找到损坏的包裹。假设您遇到以下错误,

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

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

\n

获取可以运行的文件列表

\n
sudo ls \xe2\x80\x93l /var/lib/dpkg/info | grep -i libpython3.9-dev\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

输出

\n
libpython3.9-dev:amd64.list\nlibpython3.9-dev:amd64.md5sums\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n
sudo rm /var/lib/dpkg/info/python3.9-dev*\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

完成后就可以运行了

\n
sudo apt --fix-broken install\n
Run Code Online (Sandbox Code Playgroud)\n

这次上面的命令应该可以正常工作了。

\n