我在我的 12.04 服务器上运行sudo apt-get upgrade
,并且陷入了对 PostgreSQL 的依赖。
控制台输出sudo apt-get -f install
如下:
dpkg: dependency problems prevent configuration of postgresql-9.1:
postgresql-client-9.1 (9.1.7-0ubuntu12.04) breaks postgresql-9.1 (<< 9.1.7-0ubuntu12.04) and is installed.
Version of postgresql-9.1 to be configured is 9.1.6-1~precise2.
dpkg: error processing postgresql-9.1 (--configure):
dependency problems - leaving unconfigured
No apport report written because the error message indicates its a followup error from a previous failure.
Errors were encountered while processing:
postgresql-9.1
E: Sub-process /usr/bin/dpkg returned an error code (1)
我该如何解决这个问题?
注意:我在此服务器上运行生产数据库,因此清除/重新安装 postgres 是最后手段。
编辑:
根据要求,输出apt-get update
:http://paste.ubuntu.com/1469631/
答案1
我在这次 postgresql 更新中也遇到了同样的问题。
postgres 的最新版本是 9.1.7,由于某种原因 9.1.6 不在存储库中,因此我按照以下方法降级到 9.1.5:
sudo apt-get -V install postgresql-client-9.1=9.1.5-0ubuntu12.04
sudo apt-get -V install postgresql-9.1=9.1.5-0ubuntu12.04
请注意,我首先降级为客户端。最新更新中似乎存在错误,导致客户端和服务器之间出现依赖性错误。
编辑:如果您想防止 postgresql 将来升级,请参见此页面: https://help.ubuntu.com/community/PinningHowto。务必将此方法应用于客户端和服务器。
答案2
这是另一种解决方案(AgDude 的解决方案在我的系统上不起作用,尽管我相信我有同样的问题。我也安装了 plpython。我相信这使事情变得复杂。)
从 /var/lib/dpkg/status 中删除 postgres 软件包信息(当然,首先要备份该文件)。我相信这意味着它apt
不会意识到 postgres 已安装,因此当它在存储库中找不到 9.1.6 时不会卡住。
此解决方案将允许您照常更新系统的其余部分,并再次安装/删除软件。当然,它不会再更新 postgres。
我确实留下了一些引用 postgres 的包。它们在这里,所以你知道你不必把它们拿出来:
- 软件包:libpq-dev
- 软件包:libreoffice-core
- 软件包:rsyslog