Kako instalirati PostgreSQL koristeći izvorni kod u Linuxu


PostgreSQL, sustav za upravljanje relacijskom bazom podataka otvorenog koda, nadaleko je poznat po svojim robusnim značajkama i mogućnostima proširenja. Iako mnoge distribucije Linuxa pružaju PostgreSQL putem svojih upravitelja paketima, njegovo instaliranje iz izvora omogućuje veću prilagodbu i kontrolu.

U ovom ćemo članku objasniti kako instalirati PostgreSQL 16 pomoću instalacije izvornog koda na Linux sustavima.

Za one koji traže jednostavniju metodu instalacije od upravitelja distribucijskih paketa, molimo slijedite upute u nastavku:

Preduvjeti

Prije nego što se upustite u proces instalacije PostgreSQL, provjerite ispunjava li vaš sustav sljedeće preduvjete:

  • Distribucija Linuxa (u ovom ćemo vodiču koristiti Debian u svrhu demonstracije).
  • Linux sustav s nekorijenskim korisnikom sa sudo privilegijama.
  • Instalirani su osnovni alati za razvoj kao što su GCC i Make.

1. Instalirajte Prerequisites na Linux

Najprije instalirajte osnovne razvojne alate kao što su GCC i Make pomoću upravitelja distribucijskih paketa kao što je prikazano.

Na distribucijama temeljenim na RHEL-u kao što su CentOS, Fedora, Rocky Linux i Alma Linux:

sudo yum groupinstall development-tools
sudo yum install zlib-devel readline-devel libicu-devel

Na distribucijama temeljenim na Debianu kao što su Ubuntu i Linux Mint.

sudo apt install gcc build-essential zlib1g-dev libreadline6-dev libicu-dev pkg-config

2. Preuzmite PostgreSQL izvorni kod

Nakon što su potrebni preduvjeti instalirani, preuzmite tar datoteku izvornog koda sa službene postgres web stranice pomoću sljedeće naredbe wget izravno na sustavu. Od pisanja, najnovija verzija je PostgreSQL 16.1.

wget https://ftp.postgresql.org/pub/source/v16.1/postgresql-16.1.tar.bz2

Zatim upotrijebite naredbu tar za izdvajanje preuzete tarball datoteke. Stvorit će se novi direktorij pod nazivom postgresql-16.1.

tar -xvf postgresql-16.1.tar.bz2
cd postgresql-16.1/
ls -l

Uzorak rezultata:

-rw-r--r--.  1 tecmint tecmint    365 Nov  7 03:34 aclocal.m4
drwxr-xr-x.  2 tecmint tecmint   4096 Nov  7 03:47 config
-rwxr-xr-x.  1 tecmint tecmint 584560 Nov  7 03:34 configure
-rw-r--r--.  1 tecmint tecmint  87292 Nov  7 03:34 configure.ac
drwxr-xr-x. 61 tecmint tecmint   4096 Nov  7 03:47 contrib
-rw-r--r--.  1 tecmint tecmint   1192 Nov  7 03:34 COPYRIGHT
drwxr-xr-x.  3 tecmint tecmint   4096 Nov  7 03:47 doc
-rw-r--r--.  1 tecmint tecmint   4288 Nov  7 03:34 GNUmakefile.in
-rw-r--r--.  1 tecmint tecmint    277 Nov  7 03:34 HISTORY
-rw-r--r--.  1 tecmint tecmint  64601 Nov  7 03:48 INSTALL
-rw-r--r--.  1 tecmint tecmint   1875 Nov  7 03:34 Makefile
-rw-r--r--.  1 tecmint tecmint 102017 Nov  7 03:47 meson.build
-rw-r--r--.  1 tecmint tecmint   6266 Nov  7 03:34 meson_options.txt
-rw-r--r--.  1 tecmint tecmint   1213 Nov  7 03:34 README
drwxr-xr-x. 16 tecmint tecmint   4096 Nov  7 03:48 src

3. Konfigurirajte PostgreSQL iz izvora

Budući da je postgres baza podataka otvorenog koda, može se izraditi iz izvornog koda prema nečijim potrebama/zahtjevima. možemo prilagoditi proces izrade i instalacije pružanjem jedne ili više opcija naredbenog retka za razne dodatne značajke.

Koristite sljedeću naredbu za pomoć s različitim opcijama i upotrebom konfiguracije, kao što je prikazano.

./configure --help

Sada pokrenite skriptu za konfiguriranje, koja će provjeriti ima li u vašem sustavu ovisnosti i prema tome konfigurirati izgradnju.

./configure

4. Instalirajte PostgreSQL iz izvora

Nakon konfiguracije, koristite sljedeće naredbe za izgradnju i instalaciju PostgreSQL-a iz izvora.

make
sudo make install

5. Stvaranje Postgres korisnika

Sada stvorite postgres korisnika i direktorij koji će se koristiti kao data direktorij za inicijalizaciju klastera baze podataka. Vlasnik ovog direktorija podataka trebao bi biti korisnik postgresa i dopuštenja bi trebala biti 700 također postaviti putanju za postgresql binarne datoteke radi lakšeg snalaženja.

sudo useradd postgres
sudo passwd postgres
sudo mkdir -p /pgdatabase/data
sudo chown -R postgres: /pgdatabase/data
sudo sh -c "echo 'export PATH=$PATH:/opt/PostgreSQL/bin' > /etc/profile.d/postgres.sh"
source /etc/profile.d/postgres.sh 

6. Inicijalizacija Postgres baze podataka

Sada inicijalizirajte bazu podataka pomoću sljedeće naredbe kao postgres korisnik prije korištenja bilo koje postgres naredbe.

su postgres
initdb -D /pgdatabase/data/ -U postgres -W

Gdje je -D lokacija za ovaj klaster baze podataka ili možemo reći da je to direktorij podataka u kojem želimo inicijalizirati klaster baze podataka, -U za ime superkorisnika baze podataka i -W za upit za lozinku za db superkorisnika.

Za više informacija i opcija možemo pogledati initdb --help.

7. Pokrenite PostgreSQL uslugu

Nakon inicijalizacije baze podataka, pokrenite klaster baze podataka ili ako trebate promijeniti port ili slušati adresu za poslužitelj, uredite datoteku /pgdatabase/data/postgresql.conf u direktoriju podataka poslužitelj baze podataka.

nano /pgdatabase/data/postgresql.conf

Sada pokrenite uslugu PostgreSQL.

pg_ctl -D /pgdatabase/data/ start

Nakon pokretanja baze podataka, provjerite status procesa poslužitelja postgres koristeći sljedeće naredbe ps i netstat.

ps -ef |grep -i postgres
netstat -apn |grep -i 51751

Vidimo da klaster baze podataka radi dobro, a zapisnici pokretanja mogu se pronaći na mjestu navedenom s opcijom -l tijekom pokretanja klastera baze podataka.

pg_ctl -D /pgdatabase/data/ -l logfile start

8. Spojite se na PostgreSQL

Sada se povežite s klasterom baze podataka i stvorite bazu pomoću sljedećih naredbi.

psql -p 5432
postgres=# create database test;
postgres=# \l to list all databases in cluster
postgres=# \q to quit form postgres console

Ako tražite grafički alat koji se zove pgAdmin za upravljanje vašim PostgreSQL-om, slijedite ove vodiče da instalirate pgAdmin na svoju distribuciju Linuxa.

Zaključak

Uspješno ste instalirali PostgreSQL iz izvora na vašem Linux sustavu. Ovaj proces pruža fleksibilnost i kontrolu nad vašom instalacijom PostgreSQL, omogućujući vam da je prilagodite svojim specifičnim zahtjevima.