PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 16.2 » Administration du serveur » Procédure d'installation depuis le code source » Compilation et installation avec Meson

17.4. Compilation et installation avec Meson #

17.4.1. Version courte #

meson setup build --prefix=/usr/local/pgsql
cd build
ninja
su
ninja install
adduser postgres
mkdir -p /usr/local/pgsql/data
chown postgres /usr/local/pgsql/data
su - postgres
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start
/usr/local/pgsql/bin/createdb test
/usr/local/pgsql/bin/psql test

La version longue correspond au reste de cette section.

17.4.2. Procédure d'installation #

  1. Configuration

    La première étape de la procédure d'installation est de configurer le répertoire de compilation pour votre système et de choisir les options que vous souhaitez. Pour créer et configurer le répertoire de compilation, vous pouvez démarrer avec la commande meson setup.

    meson setup build
    

    Cette commande d'initialisation prend comme argument un builddir et un srcdir. Si aucun srcdir n'est fourni, Meson va déduire le srcdir en se basant sur le répertoire courant et la location de meson.build. Le builddir est obligatoire.

    Exécuter meson setup charge le fichier de configuration généré et initialise le répertoire de compilation. De plus, vous pouvez aussi passer de nombreuses options de compilation à Meson. Certaines les plus communément utilisées sont mentionnées dans les sections suivantes. Par exemple :

    # configure avec un préfixe d'installation différent :
    meson setup build --prefix=/home/user/pg-install
    
    # configure pour une compilation de débug :
    meson setup build --buildtype=debug
    
    # configure pour une compilation avec support OpenSSL :
    meson setup build -Dssl=openssl
    

    Initialiser le répertoire de compilation est une étape qui s'effectue une fois seulement. Pour reconfigurer une nouvelle compilation, vous pouvez simplement utiliser la commande meson configure.

    meson configure -Dcassert=true
    

    Les options en ligne de commande de meson configure les plus communément utilisées sont expliquées dans Section 17.4.3.

  2. Compilation

    Par défaut, Meson utilise l'outil de compilation Ninja. Pour compiler PostgreSQL depuis les sources en utilisant Meson, vous devez simplement utiliser la commande ninja dans le répertoire de compilation.

    ninja
    

    Ninja va automatiquement détecter le nombre de CPU dans votre ordinateur et paralléliser lui-même en conséquence. Vous pouvez surcharger le nombre de processus parallèles utilisés avec l'argument de ligne de commande -j.

    Prenez note qu'après l'étape initiale de configuration, ninja est la seule commande que vous aurez besoin de saisir pour compiler. Quelque soit la façon dont vous modifiez l'arborescence source (à moins de la déplacer vers un emplacement complètement nouveau), Meson va détecter les changements et se régénérer lui-même en conséquence. Ceci est particulièrement pratique si vous avez de multiples répertoires de compilation. Souvent, l'un d'eux est utilisé pour le développement (la compilation en mode « debug ») et les autres seulement de temps en temps (telle que la compilation en mode « analyse statique »). N'importe quelle configuration peut être compilée juste en se déplaçant via cd dans le répertoire correspondant puis en exécutant Ninja.

    Si vous souhaitez compiler avec un autre outil que ninja, vous pouvez utiliser configure avec l'option --backend pour sélectionner celui que vous voulez utiliser et compiler en utilisant meson compile. Pour en savoir plus sur ces outils et les autres arguments que vous pouvez fournir à ninja, vous pouvez vous référer à la documentation de Meson.

  3. Tests de régression

    Si vous voulez tester la nouvelle compilation du serveur avant de l'installer, vous pouvez exécuter des tests de régression à ce point. Les tests de régression sont une suite de test vérifiant que PostgreSQL s'exécute sur votre machine de la façon dont les développeurs l'attendent. Saisissez :

    meson test
    

    (Cela ne fonctionnera pas en tant que root ; exécutez-le avec un utilisateur non privilégié.) Voir Chapitre 33 pour des informations détaillées sur l'interprétation des résultats des tests. Vous pouvez répéter ce test plus tard en exécutant la même commande.

    Pour exécuter les tests pg_regress et pg_isolation_regress sur une instance postgres démarrée, préciser --setup running comme argument à meson test.

  4. Installer les fichiers

    Note

    Si vous mettez à jour un système existant, soyez sûr de lire Section 19.6, qui indique les instructions pour mettre à jour une instance.

    Une fois que PostgreSQL est compilé, vous pouvez l'installer simplement en exécutant la commande ninja install.

    ninja install
    

    Ceci installera les fichiers dans les répertoires qui ont été spécifiés dans Étape 1. Assurez-vous que vous disposez des droits appropriés pour écrire dans ces zones. Vous pourriez avoir besoin de l'exécuter sous root. Alternativement, vous pouvez créer les répertoires cibles en avance et vous assurer de l'octroi des droits appropriées. L'installation standard fournit les fichiers entête nécessaire pour le développement d'application client aussi bien que le développement de programme côté serveur, comme des fonctions personnalisées ou des types de données écrits en C.

    ninja install devrait fonctionner dans la plupart des cas, mais si vous préférez plus d'options (telles que --quiet pour supprimer les sorties supplémentaires), vous pouvez aussi utiliser à la place meson install. Vous pouvez en apprendre plus sur meson install et ces options dans la documentation Meson.

Désinstallation.  Pour annuler l'installation, vous pouvez utiliser la commande ninja uninstall.

Nettoyage.  Après l'installation, vous pouvez libérer l'espace disque en supprimant les fichiers compilés depuis le répertoire source avec la commande ninja clean.

17.4.3. Options de meson setup #

Les options de la ligne de commande meson setup sont explicitées ci-dessous. La liste n'est pas exhaustive (utiliser meson configure --help pour obtenir l'exhaustivité). Les options non couvertes ici sont destinées à des cas d'usage avancés, et sont documentées dans la documentation de Meson. Ces arguments peuvent être utilisés aussi bien avec meson setup.

17.4.3.1. Emplacements d'installation #

Ces options contrôlent où ninja install (ou meson install) vont déposer les fichiers. L'option --prefix (exemple Section 17.4.1) est suffisante pour la plupart des cas. Si vous avez des besoins particuliers, vous pouvez personnaliser les sous-répertoires d'installation avec les autres options décrites dans cette section. Attention, cependant, que tout changement relatif aux emplacements des différents sous-répertoires peut rendre l'installation non déplaçable, signifiant que vous ne pourrez plus la déplacer après l'installation. (Les emplacements man et doc ne sont pas affectés par cette restriction.) Pour des installations déplaçables, vous pouvez vouloir utiliser l'option -Drpath=false décrite plus loin.

--prefix=PREFIX #

Installe tous les fichier sous le répertoire PREFIX au lieu de /usr/local/pgsql (sur les systèmes basés sur Unix) ou lettre_lecteur_courant:/usr/local/pgsql (sur Windows). Les fichiers seront installés dans divers sous-répertoires ; aucun fichier ne sera directement installé dans le répertoire PREFIX.

--bindir=DIRECTORY #

Précise le répertoire pour des programmes exécutables. La valeur par défaut est PREFIX/bin.

--sysconfdir=DIRECTORY #

Précise le répertoire pour divers fichiers de configuration, par défaut PREFIX/etc .

--libdir=DIRECTORY #

Précise l'emplacement d'installation des bibliothèques et modules dynamiquement chargeables. Le défaut est PREFIX/lib.

--includedir=DIRECTORY #

Précise le répertoire pour installer les fichiers entêtes C et C++. Le défaut est PREFIX/include.

--datadir=DIRECTORY #

Précise le répertoire pour les fichiers de données en lecture seule utilisés par les programmes installés. Le défaut est PREFIX/share. Notez qu'il n'a rien à voir avec l'emplacement des fichiers de base de données.

--localedir=DIRECTORY #

Précise le répertoire pour installer les données des locales, en particulier les fichiers du catalogue de traduction des messages. Le défaut est DATADIR/locale.

--mandir=DIRECTORY #

Les pages man qui viennent avec PostgreSQL seront installées dans ce répertoire, dans leur sous-répertoires manx respectifs. Le défaut est DATADIR/man.

Note

Des précautions ont été prises pour rendre possible l'installation de PostgreSQL dans des emplacements d'installation partagés (tels que /usr/local/include) sans interférer avec l'espace de noms du reste du système. D'abord la chaîne « /postgresql » est automatiquement concaténée à datadir, sysconfdir, et docdir, à moins que le nom de répertoire pleinement étendu contienne déjà la chaîne « postgres » ou « pgsql ». Par exemple, si vous choisissez /usr/local comme préfixe, la documentation sera installée dans /usr/local/doc/postgresql, mais si le préfixe est /opt/postgres, alors cela sera dans /opt/postgres/doc. Les fichiers entêtes C publiques des interfaces clientes seront installés dans includedir et sont propres à l'espace de noms. Les fichiers d'entête internes et les fichiers d'entête serveur sont installés dans des répertoires privés sous includedir. Voir la documentation pour chaque interface pour les informations d'accès aux fichiers entêtes. Enfin, un sous-répertoire privé sera aussi créé, si cela est approprié, sous libdir pour les modules dynamiquement chargeables.

17.4.3.2. fonctionnalités de PostgreSQL #

Les options décrites dans cette section permettent la compilation de diverses fonctionnalités obsolètes de PostgreSQL. La plupart requièrent des logiciels additionnels, comme décrit dans Section 17.1, et seront automatiquement activées si le logiciel requis est trouvé. Vous pouvez changer ce comportement en mettant manuellement ces fonctionnalités à enabled pour les demander ou disabled pour ne pas les intégrer à la compilation.

Pour préciser les options spécifiques de PostgreSQL, le nom de l'option doit être préfixée par -D.

-Dnls={ auto | enabled | disabled } #

Active ou désactive le support de language natif (Native Language Support NLS), qui est la possibilité d'afficher les messages d'un programme dans une langue autre que l'anglais. Le défaut est auto et sera activé automatiquement si une implémentation de l'API Gettext est trouvée.

-Dplperl={ auto | enabled | disabled } #

Compile le langage serveur PL/Perl. Le défaut est auto.

-Dplpython={ auto | enabled | disabled } #

Compile le langage serveur PL/Python. Le défaut est auto.

-Dpltcl={ auto | enabled | disabled } #

Compile le langage serveur PL/Tcl. Le défaut est auto.

-Dtcl_version=TCL_VERSION #

Définit la version Tcl à utiliser lors de la compilation de PL/Tcl.

-Dicu={ auto | enabled | disabled } #

Compile le support pour la bibliothèque ICU, activant l'utilisation des fonctionnalités des collations ICU. (voir Section 24.2). Le défaut est auto et demande que le paquet ICU4C soit installé. La version minimale requise de ICU4C est actuellement 4.2.

-Dllvm={ auto | enabled | disabled } #

Compile avec le support pour LLVM basé sur la compilation JIT (voir Chapitre 32). Cela nécessite d'installer la bibliothèque LLVM. La version minimale de LLVM est actuellement 3.9. Désactivé par défaut.

llvm-config sera utilisée pour trouver les options de compilations requises. llvm-config, et ensuite, pour toutes les versions supportées, llvm-config-$version seront recherchées dans votre PATH. Si cela ne donne pas le programme souahité, utilisez LLVM_CONFIG pour définir un chemin vers le llvm-config correct.

-Dlz4={ auto | enabled | disabled } #

Compile avec le support de compression LZ4. Le défaut est auto.

-Dzstd={ auto | enabled | disabled } #

Compile avec le support de compression Zstandard. Le défault est auto.

-Dssl={ auto | LIBRARY } #

Compile avec le support pour les connexions (chiffrées) SSL. La seule LIBRARY supportée est openssl. Ceci nécessite que le paquet OpenSSL soit installé. Compiler avec cette option implique de vérifier les fichiers d'entête et bibliothèques requises pour être sûr que votre installation OpenSSL soit suffisante avant exécution. Le défaut pour cette option est auto.

-Dgssapi={ auto | enabled | disabled } #

Compile avec le support de l'authentification GSSAPI. Il est nécessaire que MIT Kerberos soit installé pour GSSAPI. Sur de nombreux systèmes, le système GSSAPI (un sous-ensemble de l'installation MIT Kerberos) n'est pas installé dans un emplacement recherché par défaut (i.e. /usr/include, /usr/lib). Dans ces cas, PostgreSQL va interroger pkg-config pour détecter le compilateur requis et les options de lien. Le défaut est auto. meson configure va vérifier pour les fichiers d'entête et bibliothèques pour être sûr que votre installation GSSAPI est suffisante avant exécution.

-Dldap={ auto | enabled | disabled } #

Compile avec le support pour l'authentification LDAP et la recherche de paramètre de connexion (voir Section 34.18 et Section 21.10 pour plus d'information). Sous Unix, ceci nécessite d'installer le paquet OpenLDAP. Sous Windows, la bibliothèque WinLDAP est utilisée par défaut. Le défaut est auto. meson configure va vérifier les fichiers d'entête et bibliothèques requises pour s'assurer que votre installation OpenLDAP est suffisante avant exécution.

-Dpam={ auto | enabled | disabled } #

Compile avec le support PAM. Le défaut est auto.

-Dbsd_auth={ auto | enabled | disabled } #

Compile avec le support de l'authentification BSD. (Le système d'authentification BSD n'est actuellement disponible que sur OpenBSD.) Le défaut est auto.

-Dsystemd={ auto | enabled | disabled } #

Compile avec le support de service de notifications systemd. Ceci améliore l'intégration si le serveur est démarré sous systemd mais n'a aucun impact autrement ; voir Section 19.3 pour plus d'information. Le défaut est auto. libsystemd et les fichiers d'entête associés doivent être installés pour utiliser cette option.

-Dbonjour={ auto | enabled | disabled } #

Compile avec le support pour le service de découverte automatique Bonjour. Le défaut est auto et nécessite le support de Bonjour sur votre système d'exploitation. Recommandé sur macOS.

-Duuid=LIBRARY #

Compile le module uuid-ossp (qui fournit les fonctions de génération des UUID), utilisant la bibliothèque UUID spécifiée. LIBRARY peut valoir :

  • none pour ne pas compiler le module. C'est le défaut.

  • bsd pour utiliser les fonctions UUID trouvées dans FreeBSD, et dans certains systèmes dérivés de BSD.

  • e2fs pour utiliser la bibliothèque UUID créée par le projet e2fsprogs ; cette bibliothèque est présente sur la plupart des systèmes Linux comme sur macOS, et peut aussi bien être obtenue pour d'autres plateformes.

  • ossp pour utiliser la bibliothèque OSSP UUID

-Dlibxml={ auto | enabled | disabled } #

Compile avec libxml2, activant le support de SQL/XML. Le défaut est auto. La version 2.6.23 de libxml2 ou supérieure est nécessaire pour cette fonctionnalité.

Pour utiliser une installation libxml2 dans un emplacement inhabituel, vous pouvez définir les variables d'environnement pkg-config associées (voir sa documentation).

-Dlibxslt={ auto | enabled | disabled } #

Compile avec lbxslt, activant le xml2module de transformation XSL du XML. L'option -Dlibxml doit aussi être définiée. Le défaut est auto.

17.4.3.3. Anti-Fonctionnalités #

-Dreadline={ auto | enabled | disabled } #

Permet l'utilisation de la bibliothèque Readline (et aussi libedit). Le défaut de l'option est auto et active l'édition et historique de la ligne de commande avec psql et est fortement recommandée.

-Dlibedit_preferred={ true | false } #

Mettre ces options à true favorise l'utilisation de la bibliothèque en license BSD libedit plutôt que la bibliothèque en license GPL Readline. Cette option est pertinente seulement si vous avez les deux bibliothèque installées ; le défaut est false, ce qui fait utiliser Readline.

-Dzlib={ auto | enabled | disabled } #

Active l'utilisation de la bibliothèque Zlib. Le défaut est auto et active le support des archives compressées dans pg_dump, pg_restore et pg_basebackup, ce qui est recommandée.

-Dspinlocks={ true | false } #

Cette option vaut true par défaut ; l'affecter à false va permettre de compiler avec succès même si PostgreSQL n'a pas de support spinlock CPU pour la plateforme. L'absence de support spinlock va donner de mauvaises performances ; par conséquent, cette option ne devrait être changée que si la compilation échoue et vous informe que la plateforme n'a pas de support spinlock. S'il faut affecter cette option pour compiler PostgreSQL sur votre plateforme, merci d'indiquer le problème aux développeurs PostgreSQL.

-Datomics={ true | false } #

Cette option est mise à true par défaut ; l'affecter à false va désactiver l'utilisation d'opérations atomiques CPU. Cette option ne fait rien sur les plateformes qui n'ont pas ce genre d'opérations. Sur les plateformes qui les ont, désactiver les opérations atomiques donnera de mauvaises performances. Modifier cette option n'est seulement utile que pour du debug ou pour faire des comparaisons de performances.

17.4.3.4. Détails du processus de compilation #

--auto_features={ auto | enabled | disabled } #

Affecter cette option permet d'écraser les valeurs de toutes les fonctionnalités « auto » (les fonctionnalités qui sont activées automatiquement si le logiciel requis est trouvé). Ceci peut être utile quand vous souhaitez désactiver ou activer les fonctionnalités « optionnelles » d'un coup sans le faire pour chacune d'elle manuellement. La valeur par défaut pour ce paramètre est auto.

--backend=BACKEND #

L'outil que Meson utilise par défaut est ninja et il devrait suffire pour la plupart des cas. Cependant, si vous souhaitez complètement vous intégrer avec Visual Studio, vous pouvez mettre BACKEND à vs.

-Dc_args=OPTIONS #

Cette option est utilisée pour passer des options supplémentaires pour le compilateur C.

Cette option est utilisée pour passer des options complémentaires à l'éditeur de liens C.

-Dextra_include_dirs=DIRECTORIES #

DIRECTORIES est une liste de répertoires séparés par des virgules qui seront ajoutés dans la liste de recherche du compilateur pour les fichiers d'entête. Si vous avez des paquets optionnels (tels que GNU Readline) installés dans des emplacements non standard, vous devez utiliser cette option et probablement aussi l'option correspondante -Dextra_lib_dirs.

Exemple : -Dextra_include_dirs=/opt/gnu/include,/usr/sup/include.

-Dextra_lib_dirs=DIRECTORIES #

DIRECTORIES est une liste de répertoires séparés par des virgules pour rechercher les bibliothèques. Vous devrez probablement utiliser cette option (et l'option correspondante -Dextra_include_dirs) si vous avez des paquets installés dans des emplacements non standard.

Exemple : -Dextra_lib_dirs=/opt/gnu/lib,/usr/sup/lib.

-Dsystem_tzdata=DIRECTORY #

PostgreSQL inclut sa propre base de données de fuseaux horaires, qui est requise pour les opérations sur les dates et heures. Cette base de données de fuseaux horaires est en fait compatible avec la base de données de fuseaux horaires IANA fournie par de nombreux systèmes d'exploitation tel que FreeBSD, Linux et Solaris. Il serait ainsi redondant de l'installer à nouveau. Quand cette option est utilisée, la base de données de fuseaux horaires fournie par le système dans DIRECTORY est utilisée au lieu de celle incluse dans la distribution source PostgreSQL. DIRECTORY doit être spécifiée sous forme de chemin absolu. /usr/share/zoneinfo est un répertoire approprié sur certains systèmes d'exploitation. Notez que la routine d'installation ne détectera pas les données de fuseaux horaires non compatibles ou erronées. Si vous utilisez cette option, soyez avisé d'exécuter des tests de régression pour vérifier que les données de fuseaux horaires que vous indiquez fonctionnent correctement avec PostgreSQL.

Cette option vise principalement les distributeurs de paquets binaires qui connaissent bien le système d'exploitation cible. Le principal avantage d'utiliser cette option est que les paquets PostgreSQL n'ont pas besoin d'être mis à jour dès qu'une des nombreuses règles locales d'heure d'été change. Un autre avantage est que PostgreSQL peut être compilé de manière croisée plus simplement si les fichiers de fuseaux horaires n'ont pas à être compilés pour l'installation.

-Dextra_version=STRING #

Ajoute STRING au numéro de version PostgreSQL. Vous pouvez avec cela, par exemple, marquer les binaires compilés d'un instantané Git inédit ou contenant des patchs personnalisés avec une chaîne supplémentaire de version, telle qu'un identifiant git describe ou un numéro de livraison de paquets de distribution.

-Drpath={ true | false } #

Cette option vaut true par défaut. Si mise à false, les exécutables PostgreSQL ne sont pas marqués pour indiquer qu'ils doivent chercher les bibliothèques partagées dans le répertoire de bibliothèques de l'installation (voir --libdir). Sur la plupart des plateformes, ce marquage utilise un chemin absolu vers les répertoires de bibliothèques, de sorte que cela ne sera d'aucune utilité si vous déplacez l'installation plus tard. Dans ce cas, vous devrez alors fournir une autre façon aux exécutables de trouver les bibliothèques partagées. Habituellement, cela demande de configurer l'éditeur de liens dynamique du système d'exploitation pour pointer le répertoire de bibliothèques ; voir Section 17.5.1 pour plus de détails.

-DBINARY_NAME=PATH #

Si un programme requis pour compiler PostgreSQL (avec ou sans drapeaux optionnels) est stocké sur un chemin non standard, vous pouvez le spécifier manuellement à meson configure. La liste complète des programmes pour lesquels ceci est supporté peut être trouvé en exécutant meson configure. Exemple :

meson configure -DBISON=PATH_TO_BISON

17.4.3.5. Documentation #

Voir Section J.2 pour les outils nécessaires pour compiler la documentation.

-Ddocs={ auto | enabled | disabled } #

Active la compilation de la documentation en format HTML et man. Son défaut est auto.

-Ddocs_pdf={ auto | enabled | disabled } #

Active la compilation de la documentation en format PDF. Son défaut est auto.

-Ddocs_html_style={ simple | website } #

Contrôle quelle feuille de style CSS est utilisée. Le défaut est simple. Si mis à website, la documentation HTML va référencer la feuille de style pour postgresql.org.

17.4.3.6. Divers #

-Dpgport=NUMBER #

Affecte NUMBER comme numéro de port par défaut pour le serveur et les clients. Le défaut est 5432. Le port peut toujours être changé après, mais si vous le spécifiez ici alors le serveur et les clients auront la même valeur compilée par défaut, ce qui peut être très pratique. Habituellement la seule bonne raison de choisir une valeur différente du défaut est si vous prévoyez d'exécuter plusieurs serveurs PostgreSQL sur la même machine.

-Dkrb_srvnam=NAME #

Le nom par défaut du compte de service Kerberos utilisé par GSSAPI. postgres est la valeur par défaut. Il n'y a, habituellement, pas de raison de changer ceci sauf si vous compilez sur un environnement Windows, et dans ce cas, il doit être en casse haute POSTGRES.

-Dsegsize=SEGSIZE #

Affecte la taille du segment en giga-octets. Les tables volumineuses sont divisées en plusieurs fichiers sur le système d'exploitation, chacune ayant la taille d'un segment. Ceci permet d'éviter des problèmes dûs aux limites de taille de fichier qui existent sur de nombreuses plateformes. La taille par défaut du segment, 1 giga-octet, est sûre sur toutes les plateformes supportées. Si votre système d'exploitation a le support « largefile » (ce qui est le cas pour la plupart, de nos jours), vous pouvez utiliser une taille de segment plus large. Ceci peut être utile pour réduire le nombre de descripteurs de fichiers utilisés lorsque vous travaillez sur des tables volumineuses. Mais soyez prudent de ne pas choisir une valeur plus large que ne peut supporter votre plateforme et le système de fichiers que vous prévoyez d'utiliser. D'autres outils que vous pourriez utiliser, tel que tar, pourrait aussi limiter la taille utilisable d'un fichier. Il est recommandé, mais pas absolument nécessaire, que cette value soit une puissance de 2.

-Dblocksize=BLOCKSIZE #

Affecte la taille de bloc, en kilo-octets. Ceci est l'unité de stockage et d'I/O à l'intérieur des tables. Le défaut, 8 kilo-octets, est approprié pour la majorité des situations ; mais d'autres valeurs peuvent être utiles dans des cas spéciaux. Cette valeur doit être une puissance de 2 entre 1 et 32 (kilo-octets).

-Dwal_blocksize=BLOCKSIZE #

Affecte la taille de bloc d'un journal de transactions, en kilo-octets. C'est l'unité de stockage et d'I/O à l'intérieur des journaux WAL. Le défaut, 8 kilo-octets, est approprié pour la majorité des situations ; mais d'autres valeurs peuvent être utiles dans des cas spéciaux. Cette valeur doit être une puissance de 2 entre 1 et 64 (kilo-octets).

17.4.3.7. Options développeur #

La plupart des options dans cette section sont seulement intéressantes pour le développement ou le debug de PostgreSQL. Elles ne sont pas recommandées pour les compilations de production, sauf pour --debug, qui peut être utile pour activer les rapports de bug détaillés si vous avez l'infortune de rencontrer un bug. Sur les plateformes supportant DTrace, l'option -Ddtrace pourrait aussi être raisonnablement utilisée en production.

Lorsque vous compilez une installation qui sera utilisé pour développer du code serveur, il est recommandé d'utiliser au moins les options --buildtype=debug et -Dcassert.

--buildtype=BUILDTYPE #

Cette option peut être utilisée pour indiquer le type de compilation à utiliser ; le défaut est debugoptimized. Si vous préférez un contrôle plus fin sur les symboles de debug et les niveaux d'optimisation que cette option peut fournir, vous pouvez vous référer aux drapeaux --debug et --optimization.

Les types de compilation suivants sont principalement utilisés : plain, debug, debugoptimized et release. Plus d'information à leur sujet peut être trouvé dans la documentation Meson.

--debug #

Compile tous les programmes et bibliothèques avec les symboles de debug. Cela signifie que vous pouvez exécuter les programmes dans une debugger pour analyser les problèmes. Ceci augmente fortement la taille des exécutables installés, et sur les compilateurs non GCC, désactive habituellement aussi les optimisations compilateur, entrainant des ralentissements. Cependant, avoir les symboles disponibles peut s'avérer extrêmement utile pour gérer tous les problèmes qui peuvent survenir. Actuellement, cette option est recommandée sur des installations de production uniquement si vous utilisez GCC. Mais vous devrez toujours l'avoir si vous effectuez des travaux de développement ou exécutez une version bêta.

--optimization=LEVEL #

Indique le niveau d'optimisation. LEVEL peut être affecté à n'importe quelle valeur de {0,g,1,2,3,s}.

--werror #

Activer cette option indique au compilateur de traiter les avertissements comme des erreurs. Cela peut être utile pour du développement.

-Dcassert={ true | false } #

Active les vérifications d'assertion sur le serveur, qui testent de nombreuses conditions qui « ne peuvent se produire ». Ceci est très appréciable dans le but de développer du code, mais les tests ralentissent notablement le serveur. De plus, avoir les tests activés ne va pas nécessairement améliorer la stabilité de votre serveur ! Les vérifications d'assertion ne sont pas catégorisées par sévérité, ainsi ce qui pourrait être un bug relativement inoffensif peut entrainer un redémarrage de serveur s'il déclenche un échec d'assertion. Cette option n'est pas recommandée pour une utilisation en production, mais vous pouvez l'activer lors de travaux de développement ou en testant une version bêta.

-Dtap_tests={ auto | enabled | disabled } #

Active les tests utilisant les outils Perl TAP. Le défaut est auto et nécessite une installation de Perl et du module Perl IPC::Run. voir Section 33.4 pour plus d'information.

-DPG_TEST_EXTRA=TEST_SUITES #

Active les suites de tests qui nécessitent un logiciel particulier pour s'exécuter. Cette option accepte les arguments via une liste de valeurs séparées par des espaces. Voir Section 33.1.3 pour plus de détails.

-Db_coverage={ true | false } #

Si vous utilisez GCC, tous les programmes et bibliothèques seront compilées avec une instrumentation de test de couverture de code. Exécutés, ils généreront des fichiers dans le répertoire de debug avec des mesures de couverture de code. Voir Section 33.5 pour plus d'information. Cette option n'est utilisable qu'avec GCC et pour effectuer des travaux de développement.

-Ddtrace={ auto | enabled | disabled } #

Activée, cette option compile PostgreSQL avec le support pour l'outil de profilage dynamique DTrace. voir Section 28.5 pour plus d'information.

Pour pointer le programme dtrace, l'option DTRACE peut être valuée. Ceci est souvent nécessaire parce que dtrace est habituellement installé sous /usr/sbin, qui pourrait ne pas être dans votre PATH.

-Dsegsize_blocks=SEGSIZE_BLOCKS #

Cette option est destinée aux développeurs pour tester le code en lien aux segments. Indique la taille de segment d'une relation en blocs. Si l'option -Dsegsize et celle ci sont affectées, cette option l'emporte.