Domyślne repozytorium pakietów systemu operacyjnego dostarcza zazwyczaj tylko jednej wersji danego oprogramowania i to najczęściej nie jest ta, której potrzebujemy. Na szczęście w przypadku PostgreSQL można sobie z tym poradzić w dość prosty sposób dodając po prostu oficjalne repozytorium. W niniejszym przykładzie będziemy instalować PostgreSQL 13 na Rocky Linux oraz PostgreSQL 12 na Ubuntu.
Rocky/Centos 8
Dzięki tej metodzie dostępne będą dla nas następujące wydania PostgreSQL:
96 - PostgreSQL 9.6 for RHEL/CentOS 8 - x86_64
10 - PostgreSQL 10 for RHEL/CentOS 8 - x86_64
11 - PostgreSQL 11 for RHEL/CentOS 8 - x86_64
12 - PostgreSQL 12 for RHEL/CentOS 8 - x86_64
13 - PostgreSQL 13 for RHEL/CentOS 8 - x86_64
14 - PostgreSQL 14 for RHEL/CentOS 8 - x86_64
Zaczynamy od odinstalowania starej wersji i wyczyszczenia repozytorium z odniesień do domyślnego pakietu.
systemctl stop postgresql
dnf -y module disable postgresql
dnf remove postgres\*
rm -rf /var/lib/pgsql
Dodajemy oficjalne repozytorium PostgreSQL
dnf -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
Sprawdzamy, jakie mamy teraz dostępne wydania PostgreSQL sprytnie grepując output z dnf
dnf search postgresql | grep "^postgresql[0-9][0-9]-" | sort
Pamiętaj tylko, że postgresql96 to wersja 9.6 a nie 96 😉
Możemy instalować wymaganą wersję.
dnf -y install postgresql13-contrib postgresql13-server libpq
Programy klienckie takie jak psql
czy pg_dump
zostaną zainstalowane automatycznie. Ostatni etap to inicjalizacja bazy w systemie operacyjnym
postgresql-13-setup initdb
systemctl start postgresql-13
systemctl enable postgresql-13
Konfiguracja oraz pliki danych znajdują się w katalogu /var/lib/pgsql/13/
to znaczy wewnątrz katalogu domowego użytkownika postgres
. Z tego powodu dobrą praktyką jest edytowanie konfiguracji będąc w kontekście tego użytkownika
su - postgres
ls -la 13/data/*conf
-rw-------. 1 postgres postgres 4548 Mar 9 20:13 13/data/pg_hba.conf
-rw-------. 1 postgres postgres 1636 Mar 9 20:13 13/data/pg_ident.conf
-rw-------. 1 postgres postgres 88 Mar 9 20:13 13/data/postgresql.auto.conf
-rw-------. 1 postgres postgres 28100 Mar 9 20:13 13/data/postgresql.conf
Ubuntu 20.04
Na Ubuntu najstarszą wersją dostępną dzięki tej metodzie jest 10.
Pierwszym zadaniem jest wyczyszczenie systemu ze starego PostgreSQL’a. W tym celu zaczynamy od ustalenia, jakie pakiety są obecnie zainstalowane
dpkg -l | grep -i postgres
Zatrzymujemy bazę i usuwamy elementy otrzymane powyżej
sudo systemctl stop postgresql
sudo apt -y purge postgresql-13 postgresql-client-13 postgresql-client-common postgresql-common libpq-dev libpq5
sudo rm -rf /usr/share/postgresql-common
sudo rm -rf /var/log/postgresql
sudo rm -rf /var/lib/postgresql
sudo rm -rf /etc/postgresql
Jeżeli wszystko poszło dobrze, to poniższa komenda nic nie zwróci
sudo find / -name "postgres*"
Dodajemy nowe repozytorium
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" |sudo tee /etc/apt/sources.list.d/pgdg.list
sudo apt -y update
Instalujemy PostgreSQL w wersji 12
sudo apt -y install postgresql-12 postgresql-client-12 libpq-dev
W Ubuntu zaraz po instalacji PostgreSQL mamy od razu zainicjowaną bazę danych oraz uruchomiony i enable’owany serwis. Konfiguracja znajduje się tradycyjnie w katalogu /etc
ls -la /etc/postgresql/12/main/*
-rw-r--r-- 1 postgres postgres 315 Mar 9 19:58 /etc/postgresql/12/main/environment
-rw-r--r-- 1 postgres postgres 143 Mar 9 19:58 /etc/postgresql/12/main/pg_ctl.conf
-rw-r----- 1 postgres postgres 4933 Mar 9 19:58 /etc/postgresql/12/main/pg_hba.conf
-rw-r----- 1 postgres postgres 1636 Mar 9 19:58 /etc/postgresql/12/main/pg_ident.conf
-rw-r--r-- 1 postgres postgres 27007 Mar 9 19:58 /etc/postgresql/12/main/postgresql.conf
-rw-r--r-- 1 postgres postgres 317 Mar 9 19:58 /etc/postgresql/12/main/start.conf