我写这篇文章是因为我对在 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
这次上述命令应该可以正常工作。