얼마 전에 다음 명령을 사용하여 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/