首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >升级Ubuntu12.04至14.04后,PostgreSQL无法重新安装

升级Ubuntu12.04至14.04后,PostgreSQL无法重新安装
EN

Ask Ubuntu用户
提问于 2017-01-17 22:02:57
回答 3查看 5.1K关注 0票数 7

我运行do-release-upgrade将Ubuntu12.04服务器更新为Ubuntu14.04。它似乎进展顺利,但当我在升级后做apt-get update时,我注意到PostgreSQL包仍然在关注精确的回复,而不是可靠的回复。我遵循这里的说明添加可靠的repos,并将包含精确repos的.list文件移动到临时目录作为备份。在我这样做之后,sudo apt-get upgrade失败了,即使在恢复了精确的回复之后,我也无法让它完全运行。我没有抓住错误信息。因为这是一个开发服务器,而且所有的数据都不是必需的,所以我决定重新安装PostgreSQL。在多次尝试清除服务器上可能存在的、我认为可能会干扰的自定义配置之后,这一操作一再失败。我能够成功地执行sudo apt-get install postgresql-common,但是如果我尝试sudo apt-get install postgresql-9.5,它会失败,如下所示:

代码语言:javascript
复制
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,我得到:

代码语言:javascript
复制
postgresql@9.5-main.service
   Loaded: error (Reason: No such file or directory)
   Active: inactive (dead)

/var/log/postgresql/postgresql-9.5-main.log日志文件是空的,所以我不确定还可以在哪里检查日志。安装失败后,我将通过这里的台阶完成一个完整的卸载。我不知道这是PostgreSQL还是升级服务器的问题。

dpkg -l "postgresql*"的输出:

代码语言:javascript
复制
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)
EN

回答 3

Ask Ubuntu用户

发布于 2017-02-21 13:42:10

Ubuntu的同一期从12.04升级到14.04

通过增加线来修正

代码语言:javascript
复制
alias pg_ctlcluster="pg_ctlcluster --skip-systemctl-redirect"

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

代码语言:javascript
复制
init_functions=/lib/lsb/init-functions

在木偶里,它看起来像这样

代码语言:javascript
复制
  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",
  }
票数 7
EN

Ask Ubuntu用户

发布于 2017-01-17 22:31:37

重新编辑:Ubuntu14.04在默认情况下不使用systemd进行服务/init管理。由于某些原因,您的安装使用的是systemd (您知道为什么吗?),但是它应该使用upstart和旧的sysV启动脚本的包装器。

PostgreSQL9.5包没有提供systemd启动单元文件,而是提供了一个sysV脚本,upstart处理很好(刚刚在这里进行了测试)。

可能的备选方案:

  1. 切换到新启动的init管理
  2. 为PostgreSQL9.5编写自己的systemd启动脚本

...and :我没有主意了;)

票数 1
EN

Ask Ubuntu用户

发布于 2017-04-05 03:54:04

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

代码语言:javascript
复制
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,请继续显示:

代码语言:javascript
复制
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.

在阅读完所有答案之后,我更喜欢答案:https://askubuntu.com/a/877472/130195,但是如果想要安装Ubuntu14.04不完全支持的systemd,请按照这个方法。

但是我认为我们不需要systemd,我已经用智能来知道安装systemd 204版需要什么,在我的系统上是upower,我也不需要upower。移除我不再需要的东西,所有三个版本的postgresql都重新工作了。

我认为只要一个简单的sudo apt-get purge systemd && sudo apt-get autoremove就可以通过删除systemd包来更好地解决问题。

警告:请在拆下任何包装前要小心,注意哪些东西会非常小心地移除。

票数 1
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/873091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档