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)
如果您已经安装了软件包,上面的命令只会下载缺少的依赖项。
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)
小智 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)
这似乎修复了我的程序然后安装的错误。我不确定第二个命令有多大帮助,但我把它放在那里,以防解决方案起作用。
让我与其他人分享我安装postgresql-9.3. 首先,我已经为此苦苦挣扎了大约 4/5 天,我终于设法做到了。
我在第一篇文章中分享的这些令人讨厌的错误全都出错了,因为我试图用谷歌搜索它并发现人们有更多更少的相同错误,或者正在努力解决类似的错误。
长话短说,你在这里有一个很好的答案如何解决未满足的包:
我的错误是我制作了重复的存储库,此链接中的答案解决了这个问题,此命令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)
首先,您必须找到损坏的包裹。假设您遇到以下错误,
\nThe 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\nRun Code Online (Sandbox Code Playgroud)\n您必须手动删除损坏的包的文件。
\n获取可以运行的文件列表
\nsudo ls \xe2\x80\x93l /var/lib/dpkg/info | grep -i libpython3.9-dev\nRun Code Online (Sandbox Code Playgroud)\n替换libpython3.9-dev为您自己的包名称。
输出
\nlibpython3.9-dev:amd64.list\nlibpython3.9-dev:amd64.md5sums\nRun Code Online (Sandbox Code Playgroud)\n现在,您可以丢弃这些文件。
\nsudo rm /var/lib/dpkg/info/python3.9-dev*\nRun Code Online (Sandbox Code Playgroud)\n对其余包执行相同的操作。
\n完成后就可以运行了
\nsudo apt --fix-broken install\nRun Code Online (Sandbox Code Playgroud)\n这次上面的命令应该可以正常工作了。
\n