Sono riuscito a compilare e installare l’ultima versione di PostgreSQL (17.4) su Ubuntu ARM32.

I comandi in questo articolo provengono principalmente dalla documentazione ufficiale di PostgreSQL. Ho testato personalmente ogni comando in questo articolo.

Puoi vedere qui il sistema in cui è possibile installare con successo PostgreSQL Build Farm

Compilazione e installazione di PostgreSQL 17.4

1. Crea la directory e accedi alla directory

mkdir postgresql && cd postgresql
  • mkdir postgresql: crea una nuova directory chiamata postgresql.
  • cd postgresql: accede alla directory postgresql appena creata.

2. Scarica il codice sorgente di PostgreSQL

wget https://ftp.postgresql.org/pub/source/v17.4/postgresql-17.4.tar.bz2
  • wget: scarica il file dall’URL specificato.
  • https://..../postgresql-17.4.tar.bz2: link per scaricare il pacchetto sorgente compresso della versione 17.4 di PostgreSQL. Se il link non funziona, puoi trovare un nuovo link da solo.

3. Decomprimi il pacchetto del codice sorgente

tar xjf postgresql-17.4.tar.bz2
  • tar: utilizzato per gestire i file compressi .tar.

  • xjf: opzioni per decomprimere il file tar:

    • x: decomprime il file.
    • j: utilizza il formato di compressione bzip2 (.bz2).
    • f: specifica il file da decomprimere.
  • postgresql-17.4.tar.bz2: il nome del file da decomprimere.

4. Accedi alla directory del codice sorgente decompresso

cd postgresql-17.4
  • Accede alla directory del codice sorgente decompresso di PostgreSQL 17.4.

5. Installa i pacchetti dipendenti

sudo apt install libssl-dev libsystemd-dev libxml2-dev libreadline-dev
  • sudo apt install: utilizza il gestore di pacchetti apt per installare i pacchetti.
  • libssl-dev, libsystemd-dev, libxml2-dev, libreadline-dev: installa le librerie di sviluppo necessarie per la compilazione di PostgreSQL, ovvero la libreria SSL, la libreria Systemd, la libreria XML e la libreria Readline.

6. Configura le opzioni di compilazione

./configure --prefix=/usr/local/pgsql --with-openssl --with-libxml --with-systemd
  • ./configure: prepara l’ambiente di compilazione di PostgreSQL.
  • --prefix=/usr/local/pgsql: specifica la directory di installazione di PostgreSQL come /usr/local/pgsql.
  • --with-openssl: abilita il supporto OpenSSL.
  • --with-libxml: abilita il supporto XML.
  • --with-systemd: abilita il supporto Systemd.

7. Compila il codice sorgente

make -j$(nproc)
  • make: avvia il processo di compilazione.
  • -j$(nproc): utilizza nproc (il numero di core della CPU del sistema) per eseguire attività di compilazione in parallelo, accelerando il processo di compilazione.

8. Installa PostgreSQL

sudo make install
  • sudo make install: utilizza sudo per eseguire l’installazione con i privilegi di amministratore, make install installerà i file compilati nel sistema, installandoli nella directory /usr/local/pgsql specificata nel comando ./configure precedente.

9. Imposta le variabili d’ambiente

Utilizzare un editor di testo 1. Modifica il file /etc/profile:

sudo nano /etc/profile
  • sudo: indica l’esecuzione del comando con i privilegi di superutente (amministratore), poiché la modifica del file /etc/profile richiede i privilegi di amministratore.
  • nano: è un editor di testo, comunemente usato in ambienti terminale per modificare i file.
  • /etc/profile: questo è un file di configurazione globale, utilizzato per impostare variabili d’ambiente e configurazioni di avvio a livello di sistema. Tutti gli utenti eseguono le impostazioni in questo file quando accedono al sistema.
  1. Aggiungi variabili d’ambiente:
export PATH=/usr/local/pgsql/bin:$PATH
  • export: utilizzato per impostare una variabile d’ambiente in modo che sia disponibile nel processo corrente e nei processi figlio.
  • PATH: questa è una variabile d’ambiente che contiene l’elenco delle directory dei file eseguibili nel sistema. Quando si esegue un comando, il sistema cerca il comando in base alle directory elencate nella variabile PATH.
  • /usr/local/pgsql/bin: questa è la directory dei file eseguibili del database PostgreSQL, aggiungerla significa che i file eseguibili in questa directory (come psql) verranno riconosciuti dal sistema.
  • :$PATH: qui $PATH rappresenta il percorso esistente, aggiungendo il nuovo percorso /usr/local/pgsql/bin all’inizio del PATH originale. In questo modo, il sistema controllerà prima la nuova directory, quindi controllerà il percorso originale.

Lo scopo di questo comando è aggiungere la directory dei file eseguibili di PostgreSQL alla variabile d’ambiente PATH del sistema, assicurando che i comandi di PostgreSQL (come psql) possano essere eseguiti direttamente nella riga di comando senza fornire il percorso completo. Le impostazioni modificate avranno effetto su tutti gli utenti.

Inizializza il database PostgreSQL

Questi comandi vengono utilizzati principalmente per configurare manualmente il server di database PostgreSQL su un server Linux, inclusa la creazione di un utente di sistema PostgreSQL, l’inizializzazione del database, l’avvio del servizio di database e la sua registrazione come servizio systemd per l’avvio automatico all’avvio.

1. Crea un utente PostgreSQL

sudo useradd -m -U -r -d /var/lib/postgresql -s /bin/bash postgres
  • sudo: esegue il comando con i privilegi di superutente.
  • useradd: crea un nuovo utente.
  • -m: crea la directory home dell’utente.
  • -U: crea contemporaneamente un gruppo di utenti con lo stesso nome dell’utente.
  • -r: crea un utente di sistema (l’UID dell’utente di sistema è inferiore a 1000, non utilizzato per l’accesso).
  • -d /var/lib/postgresql: specifica la directory home come /var/lib/postgresql.
  • -s /bin/bash: specifica la shell come /bin/bash.
  • postgres: nome utente.

Questo comando crea un utente di sistema dedicato postgres per PostgreSQL.


2. Modifica il proprietario della directory PostgreSQL

sudo chown postgres /usr/local/pgsql
  • chown postgres /usr/local/pgsql: cambia il proprietario della directory /usr/local/pgsql all’utente postgres, consentendogli di leggere e scrivere nella directory.

3. Imposta la password dell’utente PostgreSQL

sudo passwd postgres
  • passwd postgres: modifica la password dell’utente postgres.

4. Passa all’utente PostgreSQL

su postgres
  • su postgres: passa all’utente postgres per utilizzare i comandi relativi a PostgreSQL.

5. Inizializza il database

/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
  • initdb -D /usr/local/pgsql/data: inizializza l’archiviazione del database nella directory /usr/local/pgsql/data.

6. Avvia il database PostgreSQL

/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
  • postgres -D /usr/local/pgsql/data: avvia il database come processo postgres, i dati vengono archiviati nella directory /usr/local/pgsql/data.

7. In un’altra sessione del terminale, accedi al database

su postgres
/usr/local/pgsql/bin/psql
  • psql: strumento interattivo da riga di comando di PostgreSQL, accede alla shell del database.

8. Imposta la password per l’utente del database

ALTER USER postgres WITH PASSWORD 'your_new_password';
  • Modifica la password dell’utente del database postgres.

9. Crea un servizio systemd

sudo nano /etc/systemd/system/postgresql.service
  • nano /etc/systemd/system/postgresql.service: modifica il file di configurazione systemd, consentendo a PostgreSQL di essere eseguito come servizio.

Contenuto del file di configurazione:

[Unit]
Description=PostgreSQL server
#Documentation=man:postgres(1)
After=network-online.target
Wants=network-online.target

[Service]
Type=notify
User=postgres
ExecStart=/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
KillSignal=SIGINT
TimeoutSec=infinity

[Install]
WantedBy=multi-user.target
  • Description=PostgreSQL server: descrive che il servizio è il server PostgreSQL.
  • After=network-online.target: attende che la connessione di rete sia disponibile prima di avviare PostgreSQL.
  • User=postgres: eseguito come utente postgres.
  • ExecStart=/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data: avvia il server PostgreSQL.
  • ExecReload=/bin/kill -HUP $MAINPID: invia il segnale HUP durante il ricaricamento.
  • KillMode=mixed: modalità di terminazione mista.
  • KillSignal=SIGINT: segnale per terminare il processo PostgreSQL.
  • TimeoutSec=infinity: timeout impostato su infinito.

10. Abilita il servizio systemd

sudo systemctl daemon-reload
sudo systemctl start postgresql
sudo systemctl status postgresql
sudo systemctl enable postgresql
  • daemon-reload: ricarica la configurazione systemd, rendendo effettivo il nuovo postgresql.service.
  • start postgresql: avvia il servizio PostgreSQL.
  • status postgresql: controlla lo stato di esecuzione di PostgreSQL.
  • enable postgresql: avvia automaticamente PostgreSQL all’avvio.

Lo scopo di questi comandi è:

  1. Crea un utente postgres dedicato per eseguire PostgreSQL.
  2. Inizializza la directory di archiviazione del database.
  3. Avvia il database PostgreSQL e accedi alla riga di comando interattiva psql.
  4. Configura systemd per eseguire PostgreSQL come servizio di sistema e supporta l’avvio automatico all’avvio.

In questo modo, il server PostgreSQL può essere eseguito normalmente e può essere avviato automaticamente all’avvio del sistema.

Riferimenti

PostgreSQL: Documentazione: 17: Capitolo 17. Installazione dal codice sorgente

Altre versioni di questa pagina web

Questo articolo ha versioni in più lingue.

Se desideri pubblicare un commento, visita la seguente pagina web:

ZH EN ZH-TW JA

Queste pagine web supportano solo la navigazione, non la pubblicazione di commenti o messaggi, ma offrono più opzioni di lingua e tempi di caricamento più brevi:

ZH EN ZH-TW JA RU KO CS ES AR FR PT DE TR IT NL SV DA FI PL UK HE RO HU EL HR TH HI BN ID SW VI NO

Questo articolo è stato tradotto da Chinese (Simplified) a Italian da AI.