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épertoirepostgresql
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 fichierstar
: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 packagesapt
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)
: utilisenproc
(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
: utilisesudo
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.
- 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 variablePATH
./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 quepsql
) 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 duPATH
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’utilisateurpostgres
, 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’utilisateurpostgres
.
4. Passer à l’utilisateur PostgreSQL
su postgres
su postgres
: passe à l’utilisateurpostgres
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 processuspostgres
, 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 configurationsystemd
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’utilisateurpostgres
.ExecStart=/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
: démarre le serveur PostgreSQL.ExecReload=/bin/kill -HUP $MAINPID
: envoie le signalHUP
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 configurationsystemd
pour que le nouveaupostgresql.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 :
- Créer un utilisateur
postgres
dédié à l’exécution de PostgreSQL. - Initialiser le répertoire de stockage de la base de données.
- Démarrer la base de données PostgreSQL et accéder à la ligne de commande interactive
psql
. - 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 :
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.