我不久前使用以下命令在 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 认为其中一个可以直接替换另一个。
最重要的是,虽然旧包可能也用于alternatives
选择默认psql
二进制文件,但我怀疑该组的名称不同。也许诸如pgsql-psql
您的新包在哪里使用该组之类的内容psql
。因此,在升级时,您的系统将其视为需要配置的新组,而不是现有组的升级。而且该包似乎amzn-updates
也没有设置默认值,并且需要您显式运行alternatives
来设置它。
除非您将 2 个存储库之一的软件包列入黑名单,否则这种情况很可能会再次发生。只需添加exclude=postgresql96*
到/etc/yum.repos.d/
您想要禁用它的存储库的文件中即可。