web-dev-qa-db-ja.com

Ubuntu 12.04から14.04にアップグレードした後、PostgreSQLが再インストールに失敗する

do-release-upgradeを実行して、Ubuntu 12.04サーバーをUbuntu 14.04に更新しました。スムーズに行くように見えましたが、アップグレード後にapt-get updateを実行したときに、PostgreSQLパッケージがまだpreciseリポジトリではなくtrustyリポジトリ 手順はこちら に従って信頼できるリポジトリを追加し、正確なリポジトリを含む.listファイルをバックアップとして一時ディレクトリに移動しました。それを行った後、Sudo apt-get upgradeが失敗し、preciseリポジトリを復元した後でも、完全に再度実行することができませんでした。エラーメッセージを取得しませんでした。これは開発サーバーであり、すべてのデータは必須ではないため、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 [email protected] failed to load: No such file or directory. See system logs and 'systemctl status [email protected]' 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 [email protected]を試してみると:

[email protected]
   Loaded: error (Reason: No such file or directory)
   Active: inactive (dead)

/var/log/postgresql/postgresql-9.5-main.logログファイルは空なので、他にどこでログをチェックするかわかりません。インストールに失敗した後、 ここの手順 を実行して、完全なアンインストールを実行します。これがPostgreSQLの問題なのか、アップグレードされたサーバーの問題なのかわかりません。

UPDATE:dpkg -l "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)
6
Shaun

同じ問題があり、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ファイルは、systectlなしでpostgresqlを開始または停止する--skip-systemctl-redirectオプションを受け入れます。

そのため、do_ctl_all()関数で--skip-systemctl-redirect/usr/share/postgresql-common/init.d-functionsを追加する必要があります。したがって、このようになります。

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 = 1;$skip_systemctl_redirectがチェックされる前に/usr/bin/pg_ctlclusterを追加できます。

9
Shivaditya

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

人形では、このように見えます

  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
Sergey Gals

再編集:Ubuntu 14.04は、デフォルトではservice/init管理にsystemdを使用しません。何らかの理由で、インストールはsystemdを使用して(理由を知っていますか?).

Postgresql-9.5パッケージはsystemdスタートアップユニットファイルを提供せず、代わりにupstartが正常に処理するsysVスクリプトを提供します(ここでテスト済みです)。

可能なオプション:

  1. init管理のためにupstartに戻る
  2. postgresql-9.5用の独自のsystemd起動スクリプトを作成

...そして、私はアイデアがありません;)

1
cleary

私のサーバーには複数のバージョンのPostgresql 9.4、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 [email protected] failed to load: No such file or directory. See system logs and 'systemctl status [email protected]' for details.

すべての答えを読んだ後、私はもっと答えが好きです: https://askubuntu.com/a/877472/130195 しかし、Ubuntu 14.04で完全にサポートされていないsystemdをインストールしたままにしたい場合は、そのハックに従ってください。

しかし、私たちはsystemdを必要としないと思うし、ap_titudeを使用してsystemdバージョン204をインストールするために何が必要かを知りました。私のシステムではupowerでしたが、upowerも必要ありません不要になったものをすべて削除すると、postgresqlの3つのバージョンすべてが再び機能します。

systemdパッケージを削除することで、単純なSudo apt-get purge systemd && Sudo apt-get autoremoveだけで問題を解決できると思います。

警告:パッケージを削除する前に注意してください。削除する内容に注意してください。

1
Rui Andrada