apt-get upgrade 卡在 postgresql 依赖项上

apt-get upgrade 卡在 postgresql 依赖项上

我在我的 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 updatehttp://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 的包。它们在这里,所以你知道你不必把它们拿出来:

  1. 软件包:libpq-dev
  2. 软件包:libreoffice-core
  3. 软件包:rsyslog

相关内容