Centos
伺服器升級(yum update)去掉psql本地安裝
不久前,我使用以下命令在 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
這看起來你最終用來自
pgdg96
repo 的 postgres 版本替換了 repo中的 postgres 版本amzn-updates
。這兩個包都被稱為postgresql96
,所以 yum/RPM 認為一個可以直接替代另一個。最重要的是,雖然舊包可能也用於
alternatives
選擇預設psql
二進製文件,但我懷疑該組的名稱不同。也許諸如pgsql-psql
,您的新包在哪裡使用該組psql
。因此,在升級時,您的系統將此視為您需要配置的新組,而不是對現有組的升級。而且似乎該amzn-updates
包沒有設置預設值,並且需要您顯式執行alternatives
來設置它。除非您將來自 2 個儲存庫之一的包列入黑名單,否則這種情況很可能再次發生。只需添加
exclude=postgresql96*
到/etc/yum.repos.d/
要禁用它的 repo 文件中即可。