Centos

伺服器升級(yum update)去掉psql本地安裝

  • March 18, 2018

不久前,我使用以下命令在 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

這看起來你最終用來自pgdg96repo 的 postgres 版本替換了 repo中的 postgres 版本amzn-updates。這兩個包都被稱為postgresql96,所以 yum/RPM 認為一個可以直接替代另一個。

最重要的是,雖然舊包可能也用於alternatives選擇預設psql二進製文件,但我懷疑該組的名稱不同。也許諸如pgsql-psql,您的新包在哪裡使用該組psql。因此,在升級時,您的系統將此視為您需要配置的新組,而不是對現有組的升級。而且似乎該amzn-updates包沒有設置預設值,並且需要您顯式執行alternatives來設置它。

除非您將來自 2 個儲存庫之一的包列入黑名單,否則這種情況很可能再次發生。只需添加exclude=postgresql96*/etc/yum.repos.d/要禁用它的 repo 文件中即可。

引用自:https://unix.stackexchange.com/questions/430049