しばらく前に、次のコマンドを使用してAWS CentosサーバーにPostgreSQLサーバー9.6.2をローカルにインストールしました。
rpm -i https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-6-x86_64/pgdg-ami201503-96-9.6-2.noarch.rpm
yum install postgresql96-server -y
数日前、yum updateを使用してサーバーをアップグレードしました。このプロセスが完了すると、私のアプリケーションが機能しないことがわかりました。アップグレードプロセスが既存のpsqlインストールと競合することを発見し、現在のpsqlサーバーを削除しました。 (幸いこれはただ開発サーバーなのに…)
私の質問は:なぜこれが起こるのですか?これはバグですか、それとも私は愚かに手動でインストールし、yum updateコマンドから除外していませんか?誰でもこの問題を説明できますか?
私が収集した詳細は次のとおりです。
uname -a 出力:
Linux 4.9.85-37.55.amzn1.x86_64
ヤムログ
Mar 11 13:49:17 Updated: postgresql96-libs-9.6.6-1.79.amzn1.x86_64
Mar 11 13:49:20 Updated: postgresql96-9.6.6-1.79.amzn1.x86_64
Mar 11 13:49:26 Updated: postgresql96-server-9.6.6-1.79.amzn1.x86_64
error in yum history info 97 warning: %postun(postgresql96-server-9.6.5-1PGDG.rhel6.x86_64) scriptlet failed, exit status 1
Updated postgresql96-9.6.5-1PGDG.rhel6.x86_64 @pgdg96
Update 9.6.6-1.79.amzn1.x86_64 @amzn-updates
Updated postgresql96-libs-9.6.5-1PGDG.rhel6.x86_64 @pgdg96
Update 9.6.6-1.79.amzn1.x86_64 @amzn-updates
Updated postgresql96-server-9.6.5-1PGDG.rhel6.x86_64 @pgdg96
Update 9.6.6-1.79.amzn1.x86_64 @amzn-updates
代替:
[user@ip alternatives]# alternatives --config psql
There is 1 program that provides 'psql'.
Selection Command
*+ 1 /usr/bin/psql96
答え1
pgdg96
リポジトリのpostgresバージョンをamzn-updates
リポジトリのpostgresバージョンに置き換えたようです。両方のパッケージが呼び出されるため、postgresql96
yum / RPMは1つを別のパッケージへの直接置換と見なします。
alternatives
さらに、以前のパッケージを使用してデフォルトのバイナリを選択することもできますが、グループ名が異なるようですpsql
。それはおそらく、pgsql-psql
新しいパッケージがこのグループを使用している場所のようなものかもしれませんpsql
。したがって、アップグレード時にシステムは、それを既存のグループのアップグレードではなく構成する必要がある新しいグループと見なします。そして、パッケージにはamzn-updates
デフォルト値が設定されていないようで、alternatives
これを設定するには明示的に実行する必要があります。
2つのリポジトリのいずれかでパッケージをブラックリストに追加しないと、これが再度発生する可能性が高くなります。無効にするリポジトリのファイルexclude=postgresql96*
に追加するだけです。/etc/yum.repos.d/