将 12.04升级到 14.04后,PostgreSQL无法重新安装

 

问题:

我运行 do-release-upgrade 来更新 Ubuntu 12.04服务器到 Ubuntu 14.04. 虽然我的升级工作很顺利,但是当我升级之后,我发现PostgreSQL的包仍然在看的精确的仓库,而不是收费的trusty库。 按照下面的说明,我将信任库添加到一个临时目录中,将包含精确仓库的.list 文件作为备份移动到一个临时目录。 之后,sudo apt-get upgrade 失败了,我无法让它再次运行,即使是在恢复了收费的精确的库。 我不是碰巧收到错误消息。 由于这是一个开发服务器,所有数据都不是必需的,所以我决定安装 PostgreSQL 。 在几次尝试清除我们在服务器上可以能有的自定义配置后,这一点反复失败。 我可以做 sudo apt-get install postgresql-common 成功了,但如果我尝试 sudo apt-get install postgresql-9.5 它将失败,如下所示:

Setting up postgresql-9.5 (9.5.5-1.pgdg14.04+1).. .
Creating new cluster 9.5/main.. .
 config/etc/postgresql/9.5/main
 data/var/lib/postgresql/9.5/main
 locale en_US.UTF-8
 socket/var/run/postgresql
 port 5432
update-alternatives: using/usr/share/postgresql/9.5/man/man1/postmaster.1.gz to provide/usr/share/man/man1/postmaster.1.gz (postmaster.1.gz) in auto mode
 * Starting PostgreSQL 9.5 database server 
 * Failed to issue method call: Unit postgresql@9.5-main.service failed to load: No such file or directory. See system logs and 'systemctl status postgresql@9.5-main.service' for details.
 [fail]
invoke-rc.d: initscript postgresql, action"start" failed.
dpkg: error processing package postgresql-9.5 (--configure):
 subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of postgresql-contrib-9.5:
 postgresql-contrib-9.5 depends on postgresql-9.5 (= 9.5.5-1.pgdg14.04+1); however:
 Package postgresql-9.5 is not configured yet.
dpkg: error processing package postgresql-contrib-9.5 (--configure):
 dependency problems - leaving unconfigured
Setting up sysstat (10.2.0-1).. .
No apport report written because the error message indicates its a followup error from a previous failure.
 update-alternatives: using/usr/bin/sar.sysstat to provide/usr/bin/sar (sar) in auto mode
Processing triggers for libc-bin (2.19-0ubuntu6.9).. .
Errors were encountered while processing:
 postgresql-9.5
 postgresql-contrib-9.5
E: Sub-process/usr/bin/dpkg returned an error code (1)
Jan 17 15:31:31 beta kernel: [ 4.029504] systemd-journald[543]: Failed to resolve 'systemd-journal' group: No such process

如果我尝试 systemctl status postgresql@9.5-main.service 我知道了

postgresql@9.5-main.service
 Loaded: error (Reason: No such file or directory)
 Active: inactive (dead)

iPhone 7 还没出来,我们已经在iPhone上获取细节 8,或者不管是想到下一步。 /var/log/postgresql/postgresql-9.5-main.log 日志文件为空,所以我不确定该在哪里检查日志。 安装失败后,我将通过这里的步骤来完成一个完全卸载。 我无法判断这是PostgreSQL还是升级后的服务器的问题。

更新:的输出:

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/Name Version Architecture Description
+++-============================-===================-===================-==============================================================
un postgresql-7.4 <none> <none> (no description available)
un postgresql-8.0 <none> <none> (no description available)
un postgresql-9.1 <none> <none> (no description available)
iF postgresql-9.5 9.5.5-1.pgdg14.04+1 amd64 object-relational SQL database, version 9.5 server
un postgresql-client <none> <none> (no description available)
ii postgresql-client-9.5 9.5.5-1.pgdg14.04+1 amd64 front-end programs for PostgreSQL 9.5
ii postgresql-client-common 178.pgdg14.04+1 all manager for multiple PostgreSQL client versions
ii postgresql-common 178.pgdg14.04+1 all PostgreSQL database-cluster manager
iU postgresql-contrib-9.5 9.5.5-1.pgdg14.04+1 amd64 additional facilities for PostgreSQL
un postgresql-doc-9.5 <none> <none> (no description available)

回答 1:

我有同样的问题,升级的Ubuntu 12.04到 14.04. 不知道,但也使用 systemd 。 在检查 /etc/init.d/postgresql 文件时,它使用 /usr/share/postgresql-common/init.d-functions

这里文件执行/usr/bin/pg_ctlcluster 以启动和停止PostgreSQL服务器。

if ["$1" ="stop" ] || ["$1" ="restart" ]; then
 ERRMSG=$(pg_ctlcluster --force"$2""$name" $1 2>&1)
else
 ERRMSG=$(pg_ctlcluster"$2""$name" $1 2>&1)
fi

/usr/bin/pg_ctlcluster 文件接受 --skip-systemctl-redirect 选项以启动或者停止不带systectl的PostgreSQL 。

所以你需要加入 --skip-systemctl-redirect/usr/share/postgresql-common/init.d-functions 在 do_ctl_all() 函数中。因此它将如下所示。

if ["$1" ="stop" ] || ["$1" ="restart" ]; then
 ERRMSG=$(pg_ctlcluster --skip-systemctl-redirect --force"$2""$name" $1 2>&1)
else
 ERRMSG=$(pg_ctlcluster --skip-systemctl-redirect"$2""$name" $1 2>&1)
fi

或者你可以在将 $skip_systemctl_redirect 签入到 /usr/bin/pg_ctlcluster 之前添加 $skip_systemctl_redirect = 1;


回答 2:

Ubuntu上的同样问题从 12.04升级到了 14.04

通过添加直线来固定

alias pg_ctlcluster="pg_ctlcluster --skip-systemctl-redirect"

/usr/share/postgresql-common/init.d-functions

init_functions=/lib/lsb/init-functions

在 Puppet 中,它看起来像这样

 package { 'postgresql-common': ensure => 'installed' }
 file_line { 'Patch 1/usr/share/postgresql-common/init.d-functions':
 path => '/usr/share/postgresql-common/init.d-functions',
 line => 'alias pg_ctlcluster="pg_ctlcluster --skip-systemctl-redirect"',
 after =>"init_functions=/lib/lsb/init-functions",
 }

回答 3:

编辑:Ubuntu 14.04默认不在服务/init管理中使用 systemd 。 由于某些原因,安装插件是使用 systemd ( 你知道为什么)的,但是它应该使用带有一个包装器的新的sysV启动脚本的。

postgresql-9.5 包不提供systemd启动单元文件,而是提供一个sysV脚本,upstart处理精细的( 刚测试过) 。

可能的选项:


回答 4:

搜索之后,我来到这个帖子,因为我的服务器有 9.4个版本的Postgresql,9.5,9.6,得到了相同的。

sudo pg_lsclusters 9.4 main status
Ver Cluster Port Status Owner Data directory Log file
9.4 main 5432 down postgres/var/lib/postgresql/9.4/main 
/var/log/postgresql/postgresql-9.4-main.log
9.5 main 5433 down postgres/var/lib/postgresql/9.5/main 
/var/log/postgresql/postgresql-9.5-main.log
9.6 main 5434 down postgres/var/lib/postgresql/9.6/main 
/var/log/postgresql/postgresql-9.6-main.log

尝试启动PostgreSQL一直显示:

sudo pg_ctlcluster 9.4 main start
Redirecting start request to systemctl
Failed to issue method call: Unit postgresql@9.4-main.service failed to load: No such file or directory. See system logs and 'systemctl status postgresql@9.4-main.service' for details.

读完所有答案后,我更喜欢答案: 如果你想保留 14.04不完全支持的systemd,那么遵循这个黑客程序。

我们已经不需要 systemd,我在我的系统上使用了aptitude来安装 systemd 版本 204,我在我的系统中,我不需要。 删除我不再需要的任何东西,而且所有三个版本的PostgreSQL都在工作。

我觉得只是一个简单 sudo apt-get purge systemd && sudo apt-get autoremove 通过删除 systemd 软件包来解决问题。

警告:请小心,在移除任何包装之前,注意将要移除的内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值