J’ai réussi à compiler et installer la dernière version de PostgreSQL (17.4) sur Ubuntu ARM32.

Les commandes de cet article proviennent principalement de la documentation officielle de PostgreSQL. J’ai testé personnellement chaque commande de cet article.

Vous pouvez voir ici les systèmes sur lesquels l’installation a réussi : Ferme de construction PostgreSQL

Compiler et installer PostgreSQL 17.4

1. Créer un répertoire et y accéder

mkdir postgresql && cd postgresql
  • mkdir postgresql : crée un nouveau répertoire nommé postgresql.
  • cd postgresql : accède au répertoire postgresql qui vient d’être créé.

2. Télécharger le code source de PostgreSQL

wget https://ftp.postgresql.org/pub/source/v17.4/postgresql-17.4.tar.bz2
  • wget : télécharge un fichier à partir de l’URL spécifiée.
  • https://..../postgresql-17.4.tar.bz2 : lien de téléchargement du package de code source compressé de la version 17.4 de PostgreSQL. Si le lien n’est plus valide, vous pouvez rechercher vous-même un nouveau lien.

3. Décompresser le package de code source

tar xjf postgresql-17.4.tar.bz2
  • tar : utilisé pour traiter les fichiers compressés .tar.

  • xjf : options pour décompresser les fichiers tar :

    • x : décompresse le fichier.
    • j : utilise le format de compression bzip2 (.bz2).
    • f : spécifie le fichier à décompresser.
  • postgresql-17.4.tar.bz2 : nom du fichier à décompresser.

4. Accéder au répertoire de code source décompressé

cd postgresql-17.4
  • Accède au répertoire de code source PostgreSQL 17.4 décompressé.

5. Installer les packages de dépendances

sudo apt install libssl-dev libsystemd-dev libxml2-dev libreadline-dev
  • sudo apt install : utilise le gestionnaire de packages apt pour installer les packages.
  • libssl-dev, libsystemd-dev, libxml2-dev, libreadline-dev : installe les bibliothèques de développement nécessaires à la compilation de PostgreSQL, à savoir les bibliothèques SSL, Systemd, XML et Readline.

6. Configurer les options de compilation

./configure --prefix=/usr/local/pgsql --with-openssl --with-libxml --with-systemd
  • ./configure : prépare l’environnement de compilation de PostgreSQL.
  • --prefix=/usr/local/pgsql : spécifie le répertoire d’installation de PostgreSQL comme /usr/local/pgsql.
  • --with-openssl : active la prise en charge d’OpenSSL.
  • --with-libxml : active la prise en charge de XML.
  • --with-systemd : active la prise en charge de Systemd.

7. Compiler le code source

make -j$(nproc)
  • make : démarre le processus de compilation.
  • -j$(nproc) : utilise nproc (le nombre de cœurs de CPU du système) pour exécuter les tâches de compilation en parallèle, ce qui accélère le processus de compilation.

8. Installer PostgreSQL

sudo make install
  • sudo make install : utilise sudo pour exécuter l’installation avec les privilèges d’administrateur. make install installe les fichiers compilés dans le système, dans le répertoire /usr/local/pgsql spécifié dans la commande ./configure précédente.

9. Définir les variables d’environnement

Utilisez l’éditeur de texte 1. pour modifier le fichier /etc/profile :

sudo nano /etc/profile
  • sudo : indique que la commande est exécutée avec les privilèges de superutilisateur (administrateur). La modification du fichier /etc/profile nécessite des privilèges d’administrateur.
  • nano : il s’agit d’un éditeur de texte couramment utilisé dans les environnements de terminal pour modifier des fichiers.
  • /etc/profile : il s’agit d’un fichier de configuration global qui est utilisé pour définir les variables d’environnement à l’échelle du système et les configurations de démarrage. Tous les utilisateurs qui se connectent au système exécutent les paramètres de ce fichier.
  1. Ajouter des variables d’environnement :
export PATH=/usr/local/pgsql/bin:$PATH
  • export : utilisé pour définir une variable d’environnement afin de la rendre disponible dans le processus actuel et les sous-processus.
  • PATH : il s’agit d’une variable d’environnement qui contient la liste des répertoires de fichiers exécutables dans le système. Lorsque le système exécute une commande, il recherche la commande en fonction des répertoires répertoriés dans la variable PATH.
  • /usr/local/pgsql/bin : il s’agit du répertoire des fichiers exécutables de la base de données PostgreSQL. L’ajout de ce répertoire signifie que les fichiers exécutables de ce répertoire (tel que psql) seront reconnus par le système.
  • :$PATH : ici, $PATH représente les chemins d’accès existants. Le nouveau chemin d’accès /usr/local/pgsql/bin est ajouté au début du PATH existant. De cette façon, le système vérifie d’abord le nouveau répertoire, puis les chemins d’accès existants.

Cette commande sert à ajouter le répertoire des fichiers exécutables de PostgreSQL à la variable d’environnement PATH du système, en veillant à ce que les commandes PostgreSQL (telles que psql) puissent être exécutées directement dans la ligne de commande sans avoir à fournir le chemin d’accès complet. Les paramètres modifiés s’appliquent à tous les utilisateurs.

Initialiser la base de données PostgreSQL

Ces commandes servent principalement à configurer manuellement le serveur de base de données PostgreSQL sur un serveur Linux, notamment la création d’un utilisateur système PostgreSQL, l’initialisation de la base de données, le démarrage du service de base de données et son enregistrement en tant que service systemd afin qu’il démarre automatiquement au démarrage.

1. Créer un utilisateur PostgreSQL

sudo useradd -m -U -r -d /var/lib/postgresql -s /bin/bash postgres
  • sudo : exécute la commande avec les privilèges de superutilisateur.
  • useradd : crée un nouvel utilisateur.
  • -m : crée le répertoire personnel de l’utilisateur.
  • -U : crée simultanément un groupe d’utilisateurs portant le même nom que le nom d’utilisateur.
  • -r : crée un utilisateur système (l’UID de l’utilisateur système est inférieur à 1000 et n’est pas utilisé pour se connecter).
  • -d /var/lib/postgresql : spécifie le répertoire personnel comme /var/lib/postgresql.
  • -s /bin/bash : spécifie le shell comme /bin/bash.
  • postgres : nom d’utilisateur.

Cette commande crée un utilisateur système postgres dédié à PostgreSQL.


2. Modifier le propriétaire du répertoire PostgreSQL

sudo chown postgres /usr/local/pgsql
  • chown postgres /usr/local/pgsql : remplace le propriétaire du répertoire /usr/local/pgsql par l’utilisateur postgres, ce qui lui permet de lire et d’écrire dans ce répertoire.

3. Définir le mot de passe de l’utilisateur PostgreSQL

sudo passwd postgres
  • passwd postgres : modifie le mot de passe de l’utilisateur postgres.

4. Passer à l’utilisateur PostgreSQL

su postgres
  • su postgres : passe à l’utilisateur postgres afin d’utiliser les commandes associées à PostgreSQL.

5. Initialiser la base de données

/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
  • initdb -D /usr/local/pgsql/data : initialise le stockage de la base de données dans le répertoire /usr/local/pgsql/data.

6. Démarrer la base de données PostgreSQL

/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
  • postgres -D /usr/local/pgsql/data : démarre la base de données en tant que processus postgres, avec les données stockées dans le répertoire /usr/local/pgsql/data.

7. Dans une autre session de terminal, accéder à la base de données

su postgres
/usr/local/pgsql/bin/psql
  • psql : outil d’interaction en ligne de commande de PostgreSQL, permet d’accéder au shell de la base de données.

8. Définir le mot de passe de l’utilisateur de la base de données

ALTER USER postgres WITH PASSWORD 'your_new_password';
  • Modifie le mot de passe de l’utilisateur postgres de la base de données.

9. Créer un service systemd

sudo nano /etc/systemd/system/postgresql.service
  • nano /etc/systemd/system/postgresql.service : modifie le fichier de configuration systemd afin que PostgreSQL puisse fonctionner en tant que service.

Contenu du fichier de configuration :

[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 : décrit le service comme étant un serveur PostgreSQL.
  • After=network-online.target : attend que la connexion réseau soit disponible avant de démarrer PostgreSQL.
  • User=postgres : s’exécute en tant qu’utilisateur postgres.
  • ExecStart=/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data : démarre le serveur PostgreSQL.
  • ExecReload=/bin/kill -HUP $MAINPID : envoie le signal HUP lors du rechargement.
  • KillMode=mixed : mode d’arrêt mixte.
  • KillSignal=SIGINT : signal pour arrêter le processus PostgreSQL.
  • TimeoutSec=infinity : délai d’attente défini sur infini.

10. Activer le service systemd

sudo systemctl daemon-reload
sudo systemctl start postgresql
sudo systemctl status postgresql
sudo systemctl enable postgresql
  • daemon-reload : recharge la configuration systemd pour que le nouveau postgresql.service prenne effet.
  • start postgresql : démarre le service PostgreSQL.
  • status postgresql : vérifie l’état d’exécution de PostgreSQL.
  • enable postgresql : démarre automatiquement PostgreSQL au démarrage.

L’objectif de ces commandes est :

  1. Créer un utilisateur postgres dédié à l’exécution de PostgreSQL.
  2. Initialiser le répertoire de stockage de la base de données.
  3. Démarrer la base de données PostgreSQL et accéder à la ligne de commande interactive psql.
  4. Configurer systemd pour que PostgreSQL s’exécute en tant que service système et prenne en charge le démarrage automatique au démarrage.

De cette façon, le serveur PostgreSQL peut fonctionner normalement et démarrer automatiquement au démarrage du système.

Références

PostgreSQL : Documentation : 17 : Chapitre 17. Installation à partir du code source

Autres versions de cette page

Cet article existe en plusieurs langues.

Si vous souhaitez publier un commentaire, veuillez consulter la page Web suivante :

ZH EN ZH-TW JA

Ces pages Web ne prennent en charge que la navigation, mais ne vous permettent pas de publier des commentaires ou de laisser des messages, mais offrent davantage d’options de langue et des temps de chargement plus courts :

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

Cet article a été traduit du Chinese (Simplified) vers le French par l’IA.