问题:
我运行 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处理精细的( 刚测试过) 。
可能的选项:
- switch 返回到初始化管理系统
- 为 postgresql-9.5 插件编写自己的systemd启动脚本
-
。) 我的想法是不一样的;
回答 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
软件包来解决问题。
警告:请小心,在移除任何包装之前,注意将要移除的内容。