PostgreSQL은 왜인지 모르겠지만, APT에서 구 마이너 버전 다운로드를 지원하지 않는다. 예를 들어 12.10이 최신 버전이면, 12.9~12.0 버전은 Official Apt Repository에서는 다운로드 받을 수 없는 것이다. 그런데 이상하게도 Official Yum Repository에서는 된다. 차별하는건가?
사실 12.6 버전이 필요해서, 그 때마다 빌드해서 설치했다. 정말 엄청난 수고였다. 빌드를 위해서 실제 서버에 불필요한 프로그램까지 설치하고 그랬는데, 그런데 Official Archive Repository를 사용하면 구버전도 설치할 수 있는 것을 알게되었다. 구세주가 강림하신 것 같았다. 그래서 공유해보고자 한다.
일단, 구버전 Repository 정보를 등록해야 APT에서 정보를 찾기 때문에 등록해보고자 한다.
첫번째로 아래 명령어로 PostgreSQL의 인증 키를 설치한다.
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
이후 아래 명령어를 입력한다.
sudo vi /etc/apt/sources.list.d/pgarchive.list
그리고, 아래 내용을 추가하고 저장한다.
# Ubuntu 18.04의 경우
deb https://apt-archive.postgresql.org/pub/repos/apt bionic-pgdg-archive main
deb-src https://apt-archive.postgresql.org/pub/repos/apt bionic-pgdg-archive main
# Ubuntu 20.04의 경우
deb https://apt-archive.postgresql.org/pub/repos/apt focal-pgdg-archive main
deb-src https://apt-archive.postgresql.org/pub/repos/apt focal-pgdg-archive main
만일 다른 OS라면 bionic, focal 부분에 맞는 DIST 버전을 넣는다.
이후, 아래 명령어로 저장소 정보를 받아온다.
sudo apt-get update
자신이 다른 OS를 써서 DIST을 변경했는데 찾을 수 없다고 나오면 여기에 자신이 찾는 버전이 있는지 찾아봐야한다.
이제 설치할 수 있는 버전을 찾아야한다. 아래 명령어로 찾는다.
sudo apt-cache policy postgresql-(메이저 버전)
그럼 위와 같이 여러 버전이 나오게 되는데 이를 복사한다.
이제 설치할 때다. 아래 명령어를 이용해 설치한다.
sudo apt install postgresql-(메이저 버전)=(세부 버전) postgresql-client-(메이저 버전)=(세부 버전) -y
예를 들어 나 같은 경우에 12.6 버전을 설치하기 위해 아래 명령어를 사용했다.
sudo apt install postgresql-12=12.6-1.pgdg18.04+1 postgresql-client-12=12.6-1.pgdg18.04+1 -y
중요한건 client와 server는 따로기 때문에 postgresql-12만 설치하게 되면 client는 자동으로 최신 버전으로 설치한다. 이 경우에는 server가 12.6인데, client가 12.10인 경우가 생긴다. 뭐 호환은 되겠지만, 버전을 일치시키는게 제일 안심이기 때문에 위 명령을 추천한다.
Contrib 등 다른 Extension의 경우에도 동일하게 apt-cache policy
명령어로 찾아서 다운로드 할 수 있다. 하지만, 버전 정책이 다르기 때문에 주의를 요한다.