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)
同じ問題があり、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
を追加できます。
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",
}
再編集:Ubuntu 14.04は、デフォルトではservice/init管理にsystemdを使用しません。何らかの理由で、インストールはsystemdを使用して(理由を知っていますか?).
Postgresql-9.5パッケージはsystemdスタートアップユニットファイルを提供せず、代わりにupstartが正常に処理するsysVスクリプトを提供します(ここでテスト済みです)。
可能なオプション:
...そして、私はアイデアがありません;)
私のサーバーには複数のバージョンの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
だけで問題を解決できると思います。
警告:パッケージを削除する前に注意してください。削除する内容に注意してください。