Instalacja PostgreSQL w zadanej wersji


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
, , , ,

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *