Ce document décrit l'installation de PostgreSQL à partir de la présente distribution du code source.
Si vous construisez PostgreSQL pour Microsoft Windows, continuez la lecture de ce chapitre si vous avez pour but d'utiliser MinGW ou Cygwin ; par contre, si vous voulez utiliser Visual C++ de Microsoft, voir la documentation principale à la place.
./configure make su make install adduser postgres mkdir /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
Le reste du chapitre est la version longue.
En général, les plateformes style unix modernes sont capables d'exécuter PostgreSQL. Les plateformes sur lesquelles des tests ont été effectués sont décrites dans la la section intitulée « Plateformes supportées » ci-après.
Les logiciels suivants sont nécessaires pour compiler PostgreSQL :
GNU make version 3.80 (ou une version plus récente) est nécessaire ; les autres programmes make ou les versions plus anciennes de GNU make *ne* fonctionnent *pas*. (GNU make est parfois installé sous le nom « gmake »). Pour connaître la version utilisée, saisir
make --version
Il est nécessaire d'avoir un compilateur C ISO/ANSI (au minimum compatible avec C99). Une version récente de GCC est recommandée, mais PostgreSQL est connu pour être compilable avec de nombreux compilateurs de divers vendeurs.
tar est requis pour déballer la distribution des sources, associé à gzip ou bzip2.
La bibliothèque GNU Readline est
utilisée par défaut. Elle permet à psql
(l'interpréteur de ligne de commandes SQL de PostgreSQL) de se souvenir de
chaque commande saisie, et permet d'utiliser les touches
de flèches pour rappeler et éditer les commandes précédentes. C'est très
pratique et fortement recommandé. Pour ne pas l'utiliser, il
faut préciser « --without-readline » au moment de l'exécution
de la commande « configure ». Une alternative possible est
l'utilisation de la bibliothèque « libedit » sous licence
BSD, développée au début sur NetBSD. La
bibliothèque « libedit » est compatible
GNU Readline et est utilisée si cette dernière
n'est pas trouvée ou si « --with-libedit-preferred » est utilisé
sur la ligne de commande de « configure ». Lorsqu'une
distribution Linux à base de paquets est utilisée, si les paquets
readline
et readline-devel
sont
séparés, il faut impérativement installer les deux.
La bibliothèque de compression zlib est utilisée par défaut. Pour ne pas l'utiliser, il faut préciser « --without-zlib » à « configure ». Cela a pour conséquence de désactiver le support des archives compressées dans pg_dump et pg_restore.
Les paquets suivants sont optionnels. S'ils ne sont pas obligatoires lors d'une compilation par défaut de PostgreSQL, ils le deviennent lorsque certaines options sont utilisées, comme cela est expliqué par la suite.
Pour installer le langage procédural PL/Perl, une installation complète de Perl, comprenant la bibliothèque « libperl » et les fichiers d'en-tête est nécessaire. La version minimale requise est Perl 5.8.3.
Comme PL/Perl est une bibliothèque partagée, la bibliothèque « libperl » doit aussi être partagée sur la plupart des plateformes. C'est désormais le choix par défaut dans les versions récentes de Perl, mais ce n'était pas le cas dans les versions plus anciennes. Dans tous les cas, c'est du ressort de celui qui installe Perl. « configure » échouera si la construction de PL/Perl est sélectionnée mais qu'il ne trouve pas une bibliothèque partagée « libperl ». Dans ce cas, vous devrez reconstruire et installer Perl manuellement pour être capable de construire PL/Perl. Lors du processus de configuration pour Perl, demandez une bibliothèque partagée.
Si vous avez l'intention d'avoir plus qu'une utilisation occasionnelle
de PL/Perl, vous devez vous assurer que
l'installation de Perl a été faite avec
l'option usemultiplicity
activée (perl
-V
vous indiquera si c'est le cas).
Pour compiler le langage de programmation serveur PL/Python, il faut que Python soit installé avec les fichiers d'en-tête et le module distutils. La version minimum requise est Python 2.7. Python 3 est supporté s'il s'agit d'une version 3.2 ou ultérieure ; voir la the PL/Python documentation lors de l'utilisation de Python 3.
Puisque PL/Python doit être une bibliothèque
partagée, la bibliothèque
« libpython » doit l'être aussi sur la plupart des
plateformes. Ce n'est pas le cas des installations par défaut de
Python construits à partir des sources mais,
une bibliothèque partagée est disponible dans de nombreuses
distributions de systèmes d'exploitation. « configure »
échouera si la construction de PL/Python est
sélectionnée et qu'il ne peut pas trouver une bibliothèque partagée
« libpython ». Cela pourrait signifier que vous avez
soit besoin d'installer des packages supplémentaires soit reconstruire
(une partie de) l'installation Python pour
fournir cette bibliothèque partagée. Lors de la construction à partir
des sources, exécutez le configure de Python
avec l'option --enable-shared
.
Pour construire le langage procédural PL/Tcl, Tcl doit être installé. La version minimale requise de Tcl est la 8.4.
Pour activer le support de langage natif (NLS), qui permet d'afficher les messages d'un programme dans une langue autre que l'anglais, une implantation de l'API Gettext est nécessaire. Certains systèmes d'exploitation l'intègrent (par exemple, Linux, NetBSD, Solaris). Pour les autres systèmes, un paquet additionnel peut être téléchargé sur http://www.gnu.org/software/gettext/. Pour utiliser l'implantation Gettext des bibliothèques C GNU, certains utilitaires nécessitent le paquet GNU Gettext. Il n'est pas nécessaire dans les autres implantations.
Vous aurez besoin de OpenSSL, si vous voulez utiliser du chiffrement pour vos connexions clientes. OpenSSL est aussi requis pour la génération de nombres aléatoires sur les plateformes qui n'ont pas « /dev/urandom » (sauf Windows). La version minimale requise est la 0.9.8.
Vous avez besoin de Kerberos, OpenLDAP ou PAM pour bénéficier de l'authentification ou du chiffrement en utilisant ces services.
Pour construire la documentation PostgreSQL, il existe un ensemble de prérequis séparé ; voir the main documentation's appendix on documentation.
En cas de compilation à partir d'une arborescence Git et non d'un paquet de sources publié, ou pour faire du développement au niveau serveur, les paquets suivants seront également nécessaires :
GNU Flex et Bison sont nécessaires pour compiler à partir d'un export du Git ou lorsque les fichiers de définition de l'analyseur ou du « scanner » sont modifiés. Les versions nécessaires sont Flex 2.5.31 ou ultérieure et Bison 1.875 ou ultérieure. Les autres programmes lex et yacc ne peuvent pas être utilisés.
Perl 5.8.3 ou ultérieur est aussi nécessaire pour construire les sources du Git, ou lorsque les fichiers en entrée pour n'importe laquelle des étapes de construction qui utilisent des scripts Perl ont été modifiés. Sous Windows, Perl est nécessaire dans tous les cas. Perl est aussi requis pour exécuter certains tests unitaires.
Si d'autres paquets GNU sont nécessaires, ils peuvent être récupérés sur un site miroir de GNU (voir https://www.gnu.org/order/ftp.html pour la liste) ou sur ftp://ftp.gnu.org/gnu/.
Il est important de vérifier qu'il y a suffisamment d'espace disque disponible. 100 Mo sont nécessaires pour la compilation et 20 Mo pour le répertoire d'installation. Un groupe de bases de données vide nécessite 35 Mo ; les fichiers des bases prennent cinq fois plus d'espace que des fichiers texte contenant les mêmes données. Si des tests de régression sont prévus, 150 Mo supplémentaires sont temporairement nécessaires. On peut utiliser la commande « df » pour vérifier l'espace disque disponible.
Configuration
La première étape de la procédure d'installation est de configurer l'arborescence système et de choisir les options intéressantes. Ce qui est fait en exécutant le script « configure ». Pour une installation par défaut, entrer simplement
./configure
Ce script exécutera de nombreux tests afin de déterminer les valeurs de certaines variables dépendantes du système et de détecter certains aléas relatifs au système d'exploitation. Il créera divers fichiers dans l'arborescence de compilation pour enregistrer ce qui a été trouvé. « configure » peut aussi être exécuté à partir d'un répertoire hors de l'arborescence des sources pour conserver l'arborescence de compilation séparée. Cette procédure est aussi appelée une construction de type VPATH. Voici comment la faire :
mkdir build_dir
cd build_dir
/path/to/source/tree/configure [les options vont ici]
make
La configuration par défaut compilera le serveur et les utilitaires, aussi bien que toutes les applications clientes et interfaces qui requièrent seulement un compilateur C. Tous les fichiers seront installés par défaut sous « /usr/local/pgsql ».
Les processus de compilation et d'installation peuvent être personnalisés par l'utilisation d'une ou plusieurs options sur la ligne de commande après « configure » :
--prefix=PREFIX
Installe tous les fichiers dans le répertoire « PREFIX » au lieu du répertoire « /usr/local/pgsql ». Les fichiers actuels seront installés dans divers sous-répertoires ; aucun fichier ne sera directement installé sous « PREFIX ».
Pour satisfaire des besoins spécifiques, les sous-répertoires peuvent
être personnalisés à l'aide des options qui suivent.
Toutefois, en laissant les options par défaut, l'installation est
déplaçable, ce qui signifie que le répertoire peut être déplacé après
installation. (Cela n'affecte pas les emplacements de
man
et doc
.)
Pour les installations déplaçables, on peut utiliser
l'option --disable-rpath
de « configure ».
De plus, il faut indiquer au système d'exploitation
comment trouver les bibliothèques partagées.
--exec-prefix=EXEC-PREFIX
Les fichiers qui dépendent de l'architecture peuvent être installés dans un répertoire différent, « EXEC-PREFIX », de celui donné par « PREFIX ». Cela peut être utile pour partager les fichiers indépendant de l'architecture entre plusieurs machines. S'il est omis, « EXEC-PREFIX » est égal à « PREFIX » et les fichiers dépendants seront installés sous la même arborescence que les fichiers indépendants de l'architecture, ce qui est probablement le but recherché.
--bindir=REPERTOIRE
Précise le répertoire des exécutables. Par défaut, il s'agit de « EXEC-PREFIX/bin », ce qui signifie « /usr/local/pgsql/bin ».
--sysconfdir=REPERTOIRE
Précise le répertoire de divers fichiers de configuration. Par défaut, il s'agit de « PREFIX/etc ».
--libdir=REPERTOIRE
Précise le répertoire d'installation des bibliothèques et des modules chargeables dynamiquement. Par défaut, il s'agit de « EXEC-PREFIX/lib ».
--includedir=REPERTOIRE
Précise le répertoire d'installation des en-têtes C et C++. Par défaut, il s'agit de « PREFIX/include ».
--datarootdir=REPERTOIRE
Indique le répertoire racine de différents types de fichiers de données en lecture seule. Cela ne sert qu'à paramétrer des valeurs par défaut pour certaines des options suivantes. La valeur par défaut est « PREFIX/share ».
--datadir=REPERTOIRE
Indique le répertoire pour les fichiers de données en lecture seule utilisés par les programmes installés. La valeur par défaut est « DATAROOTDIR ». Cela n'a aucun rapport avec l'endroit où les fichiers de base de données seront placés.
--localedir=REPERTOIRE
Indique le répertoire pour installer les données locales, en particulier les fichiers catalogues de traductions de messages. La valeur par défaut est « DATAROOTDIR/locale ».
--mandir=REPERTOIRE
Les pages man fournies avec PostgreSQL seront installées sous ce répertoire, dans leur sous-répertoire « manx » respectif. Par défaut, il s'agit de « DATAROOTDIR/man ».
--docdir=RÉPERTOIRE
Configure le répertoire racine pour installer les fichiers de documentation, sauf les pages « man ». Ceci ne positionne la valeur par défaut que pour les options suivantes. La valeur par défaut pour cette option est « DATAROOTDIR/doc/postgresql ».
--htmldir=RÉPERTOIRE
La documentation formatée en HTML pour PostgreSQL sera installée dans ce répertoire. La valeur par défaut est « DATAROOTDIR ».
Note:
Une attention toute particulière a été prise afin de rendre possible
l'installation de PostgreSQL dans des répertoires
partagés (comme « /usr/local/include ») sans
interférer avec des noms de fichiers relatifs au reste du système.
En premier lieu, le mot « /postgresql
»
est automatiquement ajouté aux répertoires datadir
,
sysconfdir
et docdir
,
à moins que le nom du répertoire à partir de la racine ne contienne déjà
le mot « postgres
» ou
« pgsql
». Par exemple, si
« /usr/local » est choisi comme préfixe,
la documentation sera installée dans
« /usr/local/doc/postgresql », mais si le
préfixe est « /opt/postgres », alors il sera dans
« /opt/postgres/doc ». Les fichiers d'en-tête
publiques C de l'interface cliente seront installés sous
includedir
et sont indépendants des noms de
fichiers relatifs au reste du système. Les fichiers d'en-tête privés et
les fichiers d'en-tête du serveur sont installés dans des répertoires
privés sous includedir
.
Voir la documentation de chaque interface pour savoir comment obtenir
ces fichiers d'en-tête.
Enfin, un répertoire privé sera aussi créé si nécessaire sous
libdir
pour les modules chargeables dynamiquement.
--with-extra-version=STRING
Ajoute « STRING » au numéro de version de PostgreSQL. Cela peut être utilisé, par exemple, pour marquer des binaires compilés depuis des instantanés Git ne faisant pas encore partie d'une version officielle ou contenant des patchs particuliers avec une chaîne de texte supplémentaire telle qu'un identifiant « git describe » ou un numéro de version d'un paquet d'une distribution.
--with-includes=REPERTOIRES
« REPERTOIRES » est une liste de répertoires séparés par
le caractère deux points (:
) qui sera ajoutée à la liste de recherche
des fichiers d'en-tête du compilateur. Si vous avez des paquetages optionnels (tels
que Readline GNU) installés dans des répertoires non
conventionnels, vous devez utiliser cette option et probablement aussi
l'option « --with-libraries » correspondante.
Exemple :
--with-includes=/opt/gnu/include:/usr/sup/include
.
--with-libraries=REPERTOIRES
« REPERTOIRES » est une liste de recherche de répertoires
de bibliothèques séparés par le caractère deux points (:
).
Si des paquets sont installés dans des répertoires non conventionnels,
il peut s'avérer nécessaire d'utiliser cette option (ainsi que l'option correspondante
« --with-includes »).
Exemple : --with-libraries=/opt/gnu/lib:/usr/sup/lib
.
--enable-nls[=LANGUES
]
Permet de mettre en place le support des langues natives
(NLS). C'est la capacité d'afficher les messages
d'un programme dans une langue autre que l'anglais.
« LANGUES » est une liste optionnelle des codes
de langue que vous voulez supporter séparés par un espace. Par
exemple, --enable-nls='de fr'
(l'intersection entre la
liste et l'ensemble des langues traduites actuellement sera calculée
automatiquement). En l'absence de liste, toutes les
traductions disponibles seront installées.
Pour utiliser cette option, une implantation de l'API Gettext est nécessaire ; voir ci-dessous.
--with-pgport=NUMERO
Positionne « NUMERO » comme numéro de port par défaut pour le serveur et les clients. La valeur par défaut est 5432. Le port peut toujours être modifié ultérieurement mais, s'il est précisé ici, les exécutables du serveur et des clients auront la même valeur par défaut, ce qui est vraiment très pratique. Habituellement, la seule bonne raison de choisir une autre valeur que celle par défaut est l'exécution de plusieurs serveurs PostgreSQL sur la même machine.
--with-perl
Permet l'utilisation du langage de procédures PL/Perl côté serveur.
--with-python
Permet la compilation du langage de procédures PL/Python.
--with-tcl
Permet la compilation du langage de procédures PL/Tcl.
--with-tclconfig=REPERTOIRE
Tcl installe les fichiers « tclConfig.sh », contenant certaines informations de configuration nécessaires pour compiler le module d'interfaçage avec Tcl. Ce fichier est trouvé automatiquement mais pour utiliser une version différente de Tcl, il faut indiquer le répertoire dans lequel il se trouve.
--with-gssapi
Permet la compilation avec le support de l'authentification GSSAPI. Sur de nombreux systèmes, GSSAPI (qui fait habituellement partie d'une installation Kerberos) n'est pas installé dans un emplacement recherché par défaut (c'est-à-dire « /usr/include », « /usr/lib »), donc vous devez utiliser les options « --with-includes » et « --with-libraries » en plus de cette option. « configure » vérifiera les fichiers d'en-tête et les bibliothèques nécessaires pour s'assurer que votre installation GSSAPI est suffisante avant de continuer.
--with-krb-srvnam=NOM
Le nom par défaut du service principal de Kerberos utilisé.
postgres
est pris par défaut. Il n'y a
habituellement pas de raison de le changer sauf dans le cas d'un
environnement Windows, auquel cas il doit être mis en majuscule,
POSTGRES
.
--with-llvm
Permet la compilation avec le support de JIT basée sur LLVM. Ceci nécessite l'installation de la bibliothèque LLVM. La version minimale requise de LLVM est actuellement la 3.9.
« llvm-config »
sera utilisé pour trouver les options de compilation requises.
« llvm-config », puis
« llvm-config-$major-$minor » pour toutes les versions
supportées, seront recherché dans PATH
. Dans le cas où
les bons binaires ne sont pas trouvés, il faut utiliser la variable
LLVM_CONFIG
afin de spécifier le chemin à
« llvm-config ». Par exemple :
./configure ... --with-llvm LLVM_CONFIG='/path/to/llvm/bin/llvm-config'
Le support de LLVM nécessite un compilateur
« clang » compatible (qui peut être spécifié, si
nécessaire, en utilisant la variable d'environnement
CLANG
, et un compilateur C++ fonctionnel (qui peut être
spécifié, si nécessaire, en utilisant la variable d'environnement
CXX
).
--with-icu
Installer PostgreSQL avec la bibliothèque ICU L'installation des paquets ICU4C et pkg-config sont un pré-requis. La version minimale requise de ICU4C est actuellement la 4.2.
Par défaut,
pkg-config
sera utilisé pour trouver les options requises de compilation. C'est
supporté par les versions 4.6 et ultérieures de
ICU4C. Pour les versions plus anciennes ou
si pkg-config n'est pas disponible, les
variables ICU_CFLAGS
et ICU_LIBS
peuvent
être données à « configure », comme dans cet
exemple :
./configure ... --with-icu ICU_CFLAGS='-I/some/where/include' ICU_LIBS='-L/some/where/lib -licui18n -licuuc -licudata'
(Si ICU4C est dans le chemin de recherche
par défaut du compilateur, alors vous aurez besoin d'indiquer une
chaîne non vide pour éviter l'utilisation de pkg-
config, par exemple ICU_CFLAGS=' '
.)
--with-openssl
Compile le support de connexion SSL (chiffrement). Le paquetage OpenSSL doit être installé. « configure » vérifiera que les fichiers d'en-tête et les bibliothèques soient installés pour s'assurer que votre installation d'OpenSSL est suffisante avant de continuer.
--with-pam
Compile le support PAM (Modules d'Authentification Pluggable).
--with-bsd-auth
Compile le support de l'authentification BSD (l'environnement d'authentification BSD est uniquement disponible sur OpenBSD actuellement.)
--with-ldap
Demande l'ajout du support de LDAP pour l'authentification et la recherche des paramètres de connexion . Sur Unix, cela requiert l'installation du paquet OpenLDAP. Sur Windows, la bibliothèque WinLDAP est utilisée par défaut. « configure » vérifiera l'existence des fichiers d'en-tête et des bibliothèques requis pour s'assurer que votre installation d'OpenLDAP est suffisante avant de continuer.
--with-systemd
Compile le support des notifications du service systemd . Ceci améliore l'intégration si le binaire du serveur est lancé par systemd mais n'a pas d'impact dans le cas contraire. libsystemd et les fichiers en-têtes associés doivent être installés pour pouvoir utiliser cette option.
--without-readline
Évite l'utilisation de la bibliothèque Readline (et de celle de libedit). Cela désactive l'édition de la ligne de commande et l'historique dans psql, ce n'est donc pas recommandé.
--with-libedit-preferred
Favorise l'utilisation de la bibliothèque libedit (sous licence BSD) plutôt que Readline (GPL). Cette option a seulement un sens si vous avez installé les deux bibliothèques ; dans ce cas, par défaut, Readline est utilisé.
--with-bonjour
Compile le support de Bonjour. Ceci requiert le support de Bonjour dans votre système d'exploitation. Recommandé sur macOS.
--with-uuid=LIBRARY
Compile le module uuid-ossp (qui fournit les fonctions pour générer les UUID), en utilisant la bibliothèque UUID spécifiée. « LIBRARY » doit correspondre à une de ces valeurs :
« bsd » pour utiliser les fonctions UUID trouvées dans FreeBSD et quelques autres 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 et sur macOS, et peut
être obtenu sur d'autres plateformes également
« ossp » pour utiliser la bibliothèque OSSP UUID
--with-ossp-uuid
Équivalent obsolète de --with-uuid=ossp
.
--with-libxml
Construit avec libxml2, activant ainsi le support de SQL/XML. Une version 2.6.23 ou ultérieure de libxml2 est requise pour cette fonctionnalité.
Pour détecter les options requises pour le compilateur et l'éditeur de liens, PostgreSQL va demander à « pkg-config », s'il est installé et s'il connaît libxml2. Sinon, le programme « xml2-config », qui est installé par libxml2, sera utilisé s'il est trouvé. L'utilisation de « pkg-config » est préférée, parce qu'elle gère mieux les installations multiarchitectures.
Pour utiliser une installation libxml2 se trouvant dans un emplacement
inhabituel, vous pouvez configurer les variables d'environnement
relatives à « pkg-config » (voir sa documentation), ou
configurer la variable d'environnement XML2_CONFIG
pour
qu'elle pointe sur le programme « xml2-config »
appartenant à l'installation libxml2, ou configurer les variables
XML2_CFLAGS
et XML2_LIBS
. (Si
« pkg-config » est installé, alors pour surcharger son
idée de l'emplacement de libxml2 vous devez soit configurer
XML2_CONFIG
soit XML2_CFLAGS
et
XML2_LIBS
avec des chaînes non vides.)
--with-libxslt
Utilise libxslt pour construire le module xml2. Le module « contrib/xml2 » se base sur cette bibliothèque pour réaliser les transformations XSL du XML.
--disable-float4-byval
Désactive le passage « par valeur » des valeurs float4, entraînant leur passage « par référence » à la place. Cette option a un coût en performance, mais peut être nécessaire pour maintenir la compatibilité avec des anciennes fonctions créées par l'utilisateur qui sont écrites en C et utilisent la convention d'appel « version 0 ». Une meilleure solution à long terme est de mettre à jour toutes ces fonctions pour utiliser la convention d'appel « version 1 ».
--disable-float8-byval
Désactive le passage « par valeur » des valeurs float8, entraînant leur passage « par référence » à la place. Cette option a un coût en performance, mais peut être nécessaire pour maintenir la compatibilité avec des anciennes fonctions créées par l'utilisateur qui sont écrites en C et utilisent la convention d'appel « version 0 ». Une meilleure solution à long terme est de mettre à jour toutes ces fonctions pour utiliser la convention d'appel « version 1 ». Notez que cette option n'affecte pas que float8, mais aussi int8 et quelques types apparentés comme timestamp. Sur les plateformes 32 bits, « --disable-float8-byval » est la valeur par défaut, et il n'est pas permis de sélectionner « --enable-float8-byval ».
--with-segsize=TAILLESEG
Indique la taille d'un segment, en gigaoctets. La valeur par défaut est de 1 gigaoctet, valeur considérée comme sûre pour toutes les plateformes prises en charge. Les grandes tables sont divisées en plusieurs fichiers du système d'exploitation, chacun de taille égale à la taille de segment. Cela évite les problèmes avec les limites de tailles de fichiers qui existent sur de nombreuses plateformes. Si votre système d'exploitation supporte les fichiers de grande taille (« largefile »), ce qui est le cas de la plupart d'entre eux de nos jours, vous pouvez utiliser une plus grande taille de segment. Cela peut être utile pour réduire le nombre de descripteurs de fichiers qui peuvent être utilisés lors de travail sur des très grandes tables. Attention à ne pas sélectionner une valeur plus grande que ce qui est supporté par votre plateforme et le(s) système(s) de fichiers que vous prévoyez d'utiliser. D'autres outils que vous pourriez vouloir utiliser, tels que tar, pourraient aussi limiter la taille maximum utilisable pour un fichier. Il est recommandé, même si pas vraiment nécessaire, que cette valeur soit une puissance de 2. Notez que changer cette valeur impose de faire un initdb.
--with-blocksize=TAILLEBLOC
Indique la taille d'un bloc, en kilooctets. C'est l'unité de stockage et d'entrée/sortie dans les tables. La valeur par défaut, 8 kilooctets, est appropriée pour la plupart des cas ; mais d'autres valeurs peuvent être utilisées dans des cas particuliers. Cette valeur doit être une puissance de 2 entre 1 et 32 (kilooctets). Notez que changer cette valeur impose de faire un initdb.
--with-wal-blocksize=TAILLEBLOC
Indique la taille d'un bloc WAL, en kilooctets. C'est l'unité de stockage et d'entrée/sortie dans le journal des transactions. La valeur par défaut, 8 kilooctets, est appropriée pour la plupart des cas ; mais d'autres valeurs peuvent être utilises dans des cas particuliers. La valeur doit être une puissance de 2 comprise entre 1 et 64 (kilooctets).
--disable-spinlocks
Autorise le succès de la construction y compris lorsque PostgreSQL n'a pas le support spinlock du CPU pour la plateforme. Ce manque de support résultera en des performances faibles ; du coup, cette option devra seulement être utilisée si la construction échoue et vous informe du manque de support de spinlock sur votre plateforme. Si cette option est requise pour construire PostgreSQL sur votre plateforme, merci de rapporter le problème aux développeurs de PostgreSQL.
--disable-thread-safety
Désactive la sécurité des threads pour les bibliothèques clients. Ceci empêche les threads concurrents dans les programmes libpq et ECPG de contrôler en toute sécurité leurs pointeurs de connexion privés.
--with-system-tzdata=RÉPERTOIRE
PostgreSQL inclut sa propre base de données des fuseaux horaires, nécessaire pour les opérations sur les dates et les heures. Cette base de données est en fait compatible avec la base de fuseaux horaires IANA fournie par de nombreux systèmes d'exploitation comme FreeBSD, Linux et Solaris, donc ce serait redondant de l'installer une nouvelle fois. Quand cette option est utilisée, la base des fuseaux horaires, fournie par le système, dans « RÉPERTOIRE » est utilisée à la place de celle incluse dans la distribution des sources de PostgreSQL. « RÉPERTOIRE » doit être indiqué avec un chemin absolu. « /usr/share/zoneinfo » est un répertoire très probable sur certains systèmes d'exploitation. Notez que la routine d'installation ne détectera pas les données de fuseau horaire différentes ou erronées. Si vous utilisez cette option, il vous est conseillé de lancer les tests de régression pour vérifier que les données de fuseau horaire que vous pointez fonctionnent correctement avec PostgreSQL.
Cette option a pour cible les distributeurs de paquets binaires qui connaissent leur système d'exploitation. Le principal avantage d'utiliser cette option est que le package PostgreSQL n'aura pas besoin d'être mis à jour à chaque fois que les règles des fuseaux horaires changent. Un autre avantage est que PostgreSQL peut être cross-compilé plus simplement si les fichiers des fuseaux horaires n'ont pas besoin d'être construits lors de l'installation.
--without-zlib
Évite l'utilisation de la bibliothèque Zlib. Cela désactive le support des archives compressées dans pg_dump et pg_restore. Cette option est seulement là pour les rares systèmes qui ne disposent pas de cette bibliothèque.
--enable-debug
Compile tous les programmes et bibliothèques en mode de débogage. Cela signifie que vous pouvez exécuter les programmes via un débogueur pour analyser les problèmes. Cela grossit considérablement la taille des exécutables et, avec des compilateurs autres que GCC, habituellement, cela désactive les optimisations du compilateur, provoquant des ralentissements. Cependant, mettre ce mode en place est extrêmement utile pour repérer les problèmes. Actuellement, cette option est recommandée pour les installations en production seulement si vous utilisez GCC. Néanmoins, vous devriez l'utiliser si vous développez ou si vous utilisez une version béta.
--enable-coverage
Si vous utilisez GCC, les programmes et bibliothèques sont compilés avec de l'instrumentation de test de couverture de code. Quand ils sont exécutés, ils génèrent des fichiers dans le répertoire de compilation avec des métriques de couverture de code. Cette option ne doit être utilisée qu'avec GCC et uniquement en phase de développement.
--enable-profiling
En cas d'utilisation de GCC, tous les programmes et bibliothèques sont compilés pour qu'elles puissent être profilées. À la sortie du processus serveur, un sous-répertoire sera créé pour contenir le fichier « gmon.out » à utiliser pour le profilage. Cette option est à utiliser uniquement avec GCC lors d'un développement.
--enable-cassert
Permet la vérification des assertions par le serveur qui teste de nombreux cas de conditions « impossibles ». Ce qui est inestimable dans le cas de développement, mais les tests peuvent ralentir sensiblement le système. Activer cette option n'influe pas sur la stabilité de votre serveur ! Les assertions vérifiées ne sont pas classées par ordre de sévérité et il se peut qu'un bogue anodin fasse redémarrer le serveur s'il y a un échec de vérification. Cette option n'est pas recommandée dans un environnement de production mais vous devriez l'utiliser lors de développement ou pour les versions béta.
--enable-depend
Active la recherche automatique des dépendances. Avec cette option, les fichiers makefile sont appelés pour recompiler les fichiers objet dès qu'un fichier d'en-tête est modifié. C'est pratique si vous faites du développement, mais inutile si vous ne voulez que compiler une fois et installer. Pour le moment, cette option ne fonctionne qu'avec GCC.
--enable-dtrace
Compile PostgreSQL avec le support de l'outil de trace dynamique, DTrace. Voir the documentation pour plus d'informations.
Pour pointer vers le programme « dtrace », la variable
d'environnement DTRACE
doit être configurée. Ceci sera
souvent nécessaire car « dtrace » est typiquement
installé sous « /usr/sbin », qui pourrait ne pas être
dans le chemin.
Des options supplémentaires en ligne de commande
peuvent être indiquées dans la variable d'environnement
DTRACEFLAGS
pour le programme « dtrace ».
Sur Solaris, pour inclure le support de DTrace dans un exécutable 64-bit, ajoutez
l'option DTRACEFLAGS="-64"
pour configure. Par
exemple, en utilisant le compilateur GCC :
./configure CC='gcc -m64' --enable-dtrace DTRACEFLAGS='-64' ...
En utilisant le compilateur de Sun :
./configure CC='/opt/SUNWspro/bin/cc -xtarget=native64' --enable-dtrace DTRACEFLAGS='-64' ...
--enable-tap-tests
Active les tests utilisant les outils TAP de Perl. Cela nécessite une
installation de Perl et de son module IPC::Run
.
Si vous préférez utiliser un compilateur C différent de ceux listés par
« configure », positionnez la variable
d'environnement CC
pour qu'elle pointe sur le compilateur de
votre choix.
Par défaut, « configure » pointe sur
« gcc » s'il est disponible, sinon il utilise celui par
défaut de la plateforme (habituellement « cc »).
De façon similaire, vous pouvez repositionner les options par défaut du
compilateur à l'aide de la variable CFLAGS
.
Les variables d'environnement peuvent être indiquées sur la ligne de commande « configure », par exemple :
./configure CC=/opt/bin/gcc CFLAGS='-O2 -pipe'
Voici une liste des variables importantes qui sont configurables de cette façon :
BISON
programme Bison
CC
compilateur C
CFLAGS
options à passer au compilateur C
CLANG
chemin vers le programme « clang » utilisé pour
l'optimisation inline du code source lors de la compilation avec
--with-llvm
CPP
préprocesseur C
CPPFLAGS
options à passer au préprocesseur C
CXX
compilateur C++
CXXFLAGS
options à passer au compilateur C++
DTRACE
emplacement du programme « dtrace »
DTRACEFLAGS
options à passer au programme « dtrace »
FLEX
programme Flex
LDFLAGS
options à utiliser lors de l'édition des liens des exécutables et des bibliothèques partagées
LDFLAGS_EX
options supplémentaires valables uniquement lors de l'édition des liens des exécutables
LDFLAGS_SL
options supplémentaires valables uniquement lors de l'édition des liens des bibliothèques partagées
LLVM_CONFIG
programme « llvm-config » à utiliser pour localiser l'installation LLVM.
MSGFMT
programme « msgfmt » pour le support des langues
PERL
programme interpréteur Perl. Il sera utilisé pour déterminer les dépendances pour la construction de PL/Perl. La valeur par défaut est « perl ».
PYTHON
chemin complet vers l'interpréteur Python. Il sera utilisé pour déterminer les dépendances pour la construction de PL/Python. De plus, si Python 2 ou 3 est spécifié ici (ou implicitement choisi), il détermine la variante de PL/Python qui devient disponible.
Si vous préférez utiliser un compilateur C différent de ceux listés par
« configure », positionnez la variable
d'environnement CC
pour qu'elle pointe sur le compilateur de
votre choix.
Par défaut, « configure » pointe sur
« gcc » s'il est disponible, sinon il utilise celui par
défaut de la plateforme (habituellement « cc »).
De façon similaire, vous pouvez repositionner les options par défaut du
compilateur à l'aide de la variable CFLAGS
.
Les variables d'environnement peuvent être indiquées sur la ligne de commande « configure », par exemple :
./configure CC=/opt/bin/gcc CFLAGS='-O2 -pipe'
Voici une liste des variables importantes qui sont configurables de cette façon :
BISON
programme Bison
CC
compilateur C
CFLAGS
options à passer au compilateur C
CPP
préprocesseur C
CPPFLAGS
options à passer au préprocesseur C
DTRACE
emplacement du programme « dtrace »
DTRACEFLAGS
options à passer au programme « dtrace »
FLEX
programme Flex
LDFLAGS
options à utiliser lors de l'édition des liens des exécutables et des bibliothèques partagées
LDFLAGS_EX
options supplémentaires valables uniquement lors de l'édition des liens des exécutables
LDFLAGS_SL
options supplémentaires valables uniquement lors de l'édition des liens des bibliothèques partagées
MSGFMT
programme « msgfmt » pour le support des langues
PERL
chemin complet vers l'interpréteur Perl. Il sera utilisé pour déterminer les dépendances pour la construction de PL/Perl.
PYTHON
programme interpréteur Python. Il sera utilisé pour
déterminer les dépendances pour la construction de PL/Python. De
plus, si Python 2 ou 3 est spécifié ici (ou implicitement choisi), il
détermine la variante de PL/Python qui devient disponible. Voir
the PL/Python documentation pour plus
d'informations. Si cette variable n'est pas configurée, les suivantes
sont testées dans cet ordre : python python3
python2
.
TCLSH
programme interpréteur Tcl. Il sera utilisé pour déterminer les dépendances pour la construction de PL/Tcl, et il sera substitué dans des scripts Tcl.
XML2_CONFIG
programme « xml2-config » utilisé pour localiser l'installation de libxml2.
Il est parfois utile d'ajouter des options de compilation à l'ensemble
choisi par « configure » après coup. Un exemple parlant
concerne l'option « -Werror » de
gcc qui ne peut pas être incluse dans la
variable CFLAGS
passée à « configure »,
car il cassera un grand nombre de tests internes de
« configure ». Pour ajouter de telles options, incluez-
les dans la variable d'environnement COPT
lors de
l'exécution de « gmake ». Le contenu de
COPT
est ajouté aux variables CFLAGS
et
LDFLAGS
configurées par « configure ».
Par exemple, vous pouvez faire :
gmake COPT='-Werror'
ou
export COPT='-Werror'
gmake
Note:
Lors de l'écriture de code à l'intérieur du serveur, il est recommandé d'utiliser les options « --enable-cassert » (qui active un grand nombre de vérifications d'erreur à l'exécution) et « --enable-debug » (qui améliore l'utilité des outils de débogage) de configure.
Si vous utilisez GCC, il est préférable de construire avec un niveau d'optimisation d'au moins « -O1 » parce que désactiver toute optimisation (« -O0 ») désactive aussi certains messages importants du compilateur (comme l'utilisation de variables non initialisées). Néanmoins, les niveaux d'optimisations peuvent compliquer le débuggage parce que faire du pas-à-pas sur le code compilé ne correspondra pas forcément aux lignes de code une-à-une. Si vous avez du mal à débugger du code optimisé, recompilez les fichiers intéressants avec « -O0 ». Une façon simple de le faire est de passer une option à make: « make PROFILE=-O0 file.o ».
Les variables d'environnement COPT
et
PROFILE
sont gérées de façon identique par les fichiers
makefile de PostgreSQL. Laquelle utiliser est
une affaire de préférence, mais un usage commun parmi les développeurs
est d'utiliser PROFILE
pour les ajustements inhabituels
alors que COPT
servirait aux variables à configurer à
chaque fois.
Compilation
Pour démarrer la compilation, saisissez soit
make
make all
(Rappelez-vous d'utiliser GNU make). La compilation prendra quelques minutes, selon votre matériel. La dernière ligne affichée devrait être
All of PostgreSQL successfully made. Ready to install.
Si vous voulez lancer la construction à partir d'un autre fichier
makefile, vous devez configurer MAKELEVEL
ou
l'initialiser à zéro, par exemple ainsi :
build-postgresql: $(MAKE) -C postgresql MAKELEVEL=0 all
Ne pas le faire amène des messages d'erreur étranges, typiquement sur des fichiers d'en-tête manquants.
Si vous voulez construire tout ce qui peut être construit, ceci incluant la documentation (HTML et pages man) et les modules supplémentaires (« contrib »), saisissez à la place :
make world
La dernière ligne affichée doit être :
PostgreSQL, contrib, and documentation successfully made. Ready to install.
Si vous voulez compiler tout ce qui peut être compilé, en incluant les modules supplémentaires (« contrib »), mais sans la documentation, saisissez à la place :
make world-bin
Tests de régression
Si vous souhaitez tester le serveur nouvellement compilé avant de l'installer, vous pouvez exécuter les tests de régression à ce moment. Les tests de régression sont une suite de tests qui vérifient que PostgreSQL fonctionne sur votre machine tel que les développeurs l'espèrent. Saisissez
make check
(cela ne fonctionne pas en tant que root ; faites-le en tant qu'utilisateur sans droits). Le the file « src/test/regress/README » and the documentation contient des détails sur l'interprétation des résultats de ces tests. Vous pouvez les répéter autant de fois que vous le voulez en utilisant la même commande.
Installer les fichiers
Note:
Si vous mettez à jour une version existante, assurez-vous d'avoir bien lu the documentation qui donne les instructions sur la mise à jour d'un cluster.
Pour installer PostgreSQL, saisissez
make install
Cela installera les fichiers dans les répertoires spécifiés dans l'Étape 1. Assurez-vous d'avoir les droits appropriés pour écrire dans ces répertoires. Normalement, vous avez besoin d'être superutilisateur pour cette étape. Une alternative consiste à créer les répertoires cibles à l'avance et à leur donner les droits appropriés.
Pour installer la documentation (HTML et pages man), saisissez :
make install-docs
Si vous construisez tout, saisissez ceci à la place :
make install-world
Cela installe aussi la documentation.
Si vous voulez tout construire, sauf la documentation, saisissez à la place :
make install-world-bin
Vous pouvez utiliser make install-strip
en lieu et
place de make install
pour dépouiller l'installation
des exécutables et des bibliothèques. Cela économise un peu d'espace disque.
Si vous avez effectué la compilation en mode de débogage, ce dépouillage
l'enlèvera, donc ce n'est à faire seulement si ce mode n'est plus
nécessaire. install-strip
essaie d'être raisonnable
en sauvegardant de l'espace disque mais il n'a pas une connaissance
parfaite de la façon de dépouiller un exécutable de tous les octets
inutiles. Ainsi, si vous voulez sauvegarder le maximum d'espace disque, vous
devrez faire le travail à la main.
L'installation standard fournit seulement les fichiers en-têtes nécessaires
pour le développement d'applications clientes ainsi que pour le développement
de programmes côté serveur comme des fonctions personnelles ou des
types de données écrits en C (avant PostgreSQL 8.0, une
commande make install-all-headers
séparée était nécessaire pour
ce dernier point, mais cette étape a été intégrée à l'installation standard).
Installation du client uniquement : Si vous voulez uniquement installer les applications clientes et les bibliothèques d'interface, alors vous pouvez utilisez ces commandes :
make -C src/bin install
make -C src/include install
make -C src/interfaces install
make -C doc install
« src/bin » comprend quelques exécutables utilisés seulement par le serveur mais ils sont petits.
Désinstallation : Pour désinstaller, utilisez la commande « make uninstall ». Cependant, cela ne supprimera pas les répertoires créés.
Nettoyage : Après l'installation, vous pouvez libérer de l'espace en supprimant les fichiers issus de la compilation des répertoires sources à l'aide de la commande « make clean ». Cela conservera les fichiers créés par la commande « configure », ainsi vous pourrez tout recompiler ultérieurement avec « make ». Pour remettre l'arborescence source dans l'état initial, utilisez « make distclean ». Si vous voulez effectuer la compilation pour diverses plateformes à partir des mêmes sources vous devrez d'abord refaire la configuration à chaque fois (autrement, utilisez un répertoire de construction séparé pour chaque plateforme, de façon à ce que le répertoire des sources reste inchangé).
Si vous avez compilé et que vous vous êtes rendu compte que les options de « configure » sont fausses ou si vous changez quoi que ce soit que « configure » prenne en compte (par exemple, la mise à jour d'applications), alors faire un « make distclean » avant de reconfigurer et recompiler est une bonne idée. Sans ça, vos changements dans la configuration ne seront pas répercutés partout où il faut.
Sur certains systèmes qui utilisent les bibliothèques partagées (ce que font de nombreux systèmes), vous avez besoin de leurs spécifier comment trouver les nouvelles bibliothèques partagées. Les systèmes sur lesquels ce *n'est* pas nécessaire comprennent FreeBSD, HP-UX, Linux, NetBSD, OpenBSD et Solaris.
La méthode pour le faire varie selon la plateforme, mais la méthode la plus
répandue consiste à positionner des variables d'environnement comme
LD_LIBRARY_PATH
: avec les shells Bourne
(« sh », « ksh », « bash », « zsh ») :
LD_LIBRARY_PATH=/usr/local/pgsql/lib export LD_LIBRARY_PATH
ou en « csh » ou « tcsh » :
setenv LD_LIBRARY_PATH /usr/local/pgsql/lib
Remplacez /usr/local/pgsql/lib
par la valeur donnée à
« --libdir
» dans l'Étape 1.
Vous pouvez mettre ces commandes dans un script de démarrage tel
que « /etc/profile » ou « ~/.bash_profile ». Certaines
informations pertinentes au sujet de mises en garde associées à cette
méthode peuvent être trouvées sur
http://xahlee.info/UnixResource_dir/_/ldpath.html.
Sur certains systèmes, il peut être préférable de renseigner la
variable d'environnement
LD_RUN_PATH
*avant*
la compilation.
Avec Cygwin, placez le répertoire
des bibliothèques dans la variable PATH
ou déplacez les
fichiers « .dll » dans le répertoire
« bin ».
En cas de doute, référez-vous aux pages de man de votre système (peut-être « ld.so » ou « rld »). Si vous avez ultérieurement un message tel que
psql: error in loading shared libraries libpq.so.2.1: cannot open shared object file: No such file or directory
alors cette étape est vraiment nécessaire. Faites-y attention.
Si votre système d'exploitation est Linux et que vous avez les accès de superutilisateur, vous pouvez exécuter :
/sbin/ldconfig /usr/local/pgsql/lib
(ou le répertoire équivalent) après l'installation pour permettre à l'éditeur de liens de trouver les bibliothèques partagées plus rapidement. Référez-vous aux pages man portant sur « ldconfig » pour plus d'informations. Pour les systèmes d'exploitation FreeBSD, NetBSD et OpenBSD, la commande est :
/sbin/ldconfig -m /usr/local/pgsql/lib
Les autres systèmes d'exploitation ne sont pas connus pour avoir de commande équivalente.
Si l'installation a été réalisée dans
« /usr/local/pgsql » ou à un autre endroit qui n'est pas dans les
répertoires contenant les exécutables par défaut, vous devez ajouter
« /usr/local/pgsql/bin » (ou le répertoire fourni à
« --bindir
» au moment de l'Étape 1)
dans votre PATH
. Techniquement, ce n'est pas une obligation mais
cela rendra l'utilisation de PostgreSQL plus confortable.
Pour ce faire, ajoutez ce qui suit dans le fichier d'initialisation de votre shell, par exemple « ~/.bash_profile » (ou « /etc/profile », si vous voulez que tous les utilisateurs l'aient) :
PATH=/usr/local/pgsql/bin:$PATH export PATH
Si vous utilisez le « csh » ou le « tcsh », alors utilisez la commande :
set path = ( /usr/local/pgsql/bin $path )
Pour que votre système trouve la documentation man, il vous faut ajouter des lignes telles que celles qui suivent à votre fichier d'initialisation du shell, à moins que vous installiez ces pages dans un répertoire où elles sont mises normalement :
MANPATH=/usr/local/pgsql/share/man:$MANPATH export MANPATH
Les variables d'environnement PGHOST
et PGPORT
indiquent aux applications clientes l'hôte et le port du serveur de base.
Elles surchargent les valeurs utilisées lors de la compilation. Si vous
exécutez des applications clientes à distance, alors c'est plus pratique si
tous les utilisateurs peuvent paramétrer PGHOST
. Ce n'est pas une
obligation, cependant, la configuration peut être communiquée via les
options de lignes de commande à la plupart des programmes clients.
Ce qui suit est un résumé rapide de comment mettre en place PostgreSQL et de le faire tourner une fois installé. La documentation principale contient plus d'informations.
Créez un compte utilisateur pour le serveur PostgreSQL. C'est l'utilisateur sous lequel le serveur tournera. Pour un usage en production, vous devez créer un compte séparé, non privilégié (« postgres » est généralement utilisé). Si vous n'avez pas d'accès root ou voulez juste expérimenter, votre propre compte utilisateur suffit ; par contre exécuter le serveur en tant que root est un risque pour la sécurité et ne fonctionnera pas.
adduser postgres
Créez une installation de base de données avec la commande « initdb ». Pour lancer « initdb », vous devez être connecté à votre compte utilisateur PostgreSQL. En tant que root, cela ne fonctionnera pas.
root#mkdir /usr/local/pgsql/data
root#chown postgres /usr/local/pgsql/data
root#su - postgres
postgres$/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
L'option « -D » spécifie l'endroit où les données seront stockées. Vous pouvez utiliser n'importe quel chemin de votre choix, il n'a pas besoin d'être sous le répertoire d'installation. Soyez juste sûr que le compte serveur peut écrire sous ce répertoire d'installation (ou créez-le s'il n'existe pas déjà) avant de démarrer « initdb », comme illustré ici.
À ce point, si vous n'avez pas utilisé « initdb » avec
l'option -A
, vous voudrez modifier
« pg_hba.conf » pour contrôler les accès au serveur
en local avant de le démarrer. Le défaut est de faire confiance à tous
les utilisateurs locaux.
À l'étape précédente, « initdb » a dû vous dire de démarrer le serveur de base de données. Faites-le maintenant. La commande devrait ressembler à quelque chose comme :
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data start
Pour arrêter un serveur qui tourne en arrière-plan, vous pouvez taper :
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data stop
Créez une base de données :
/usr/local/pgsql/bin/createdb testdb
Puis entrez :
/usr/local/pgsql/bin/psql testdb
pour vous connecter à cette base de données. Quand apparaît le prompt, vous pouvez entrer des commandes SQL et commencer à expérimenter.
La distribution de PostgreSQL contient une documentation complète que vous devriez lire un jour. Après installation, la documentation est accessible en pointant votre navigateur vers « /usr/local/pgsql/doc/html/index.html », si vous n'avez pas changé les répertoires d'installation.
Les premiers chapitres de la documentation principale sont le tutoriel, et devraient être votre première lecture si vous êtes complètement novice en matière de base de données SQL. Si vous êtes familier avec les concepts de base de données, vous continuerez alors sur la partie sur l'administration d'un serveur, qui contient des informations sur comment mettre en place le serveur, les utilisateurs et l'authentification.
Généralement, vous voudrez modifier le système pour qu'il démarre le serveur de base de données dès son démarrage. Des suggestions pour cela figurent dans la documentation.
Lancez les tests de régression sur le serveur que vous venez d'installer (avec « make installcheck »). Si vous ne l'avez pas fait avant l'installation, vous devriez vraiment le faire maintenant. Ceci aussi est expliqué dans la documentation.
Par défaut PostgreSQL est configuré pour
tourner sur un matériel minimaliste. Cela permet de le démarrer avec
n'importe quelle configuration matérielle. Cependant, la configuration par
défaut n'est pas conçue pour des performances optimales. Pour atteindre
les meilleures performances, plusieurs paramètres du serveur doivent être
ajustés, les deux principaux étant shared_buffers
et
work_mem
.
D'autres paramètres mentionnés dans la documentation affectent aussi les
performances.
Une plateforme (c'est-à-dire une combinaison d'un processeur et d'un système d'exploitation) est considérée supportée par la communauté de développeur de PostgreSQL si le code permet le fonctionnement sur cette plateforme et que la construction et les tests de régression ont été récemment vérifiés sur cette plateforme. Actuellement, la plupart des tests de compatibilité de plateforme se font automatiquement par des machines de tests dans la ferme de construction de PostgreSQL. Si vous êtes intéressés par l'utilisation de PostgreSQL sur une plateforme qui n'est pas représentée dans la ferme de construction, mais pour laquelle le code fonctionne ou peut fonctionner, nous vous suggérons fortement de construire une machine qui sera membre de la ferme pour que la compatibilité puisse être assurée dans la durée.
En général, PostgreSQL doit fonctionner sur les architectures processeur suivantes : x86, x86_64, IA64, PowerPC, PowerPC 64, S/390, S/390x, Sparc, Sparc 64, ARM, MIPS, MIPSEL et PA-RISC. Un support du code existe pour M68K, M32R et VAX, mais ces architectures n'ont pas été testées récemment à notre connaissance. Il est souvent possible de construire PostgreSQL sur un type de processeur non supporté en précisant « --disable-spinlocks ». Cependant, les performances en souffriront.
PostgreSQL doit fonctionner sur les systèmes d'exploitation suivants : Linux (toutes les distributions récentes), Windows (Win2000 SP4 et ultérieures), FreeBSD, OpenBSD, NetBSD, macOS, AIX, HP/UX et Solaris. D'autres systèmes style Unix peuvent aussi fonctionner mais n'ont pas été récemment testés. Dans la plupart des cas, toutes les architectures processeurs supportées par un système d'exploitation donné fonctionneront. Cherchez dans le répertoire la section intitulée « Notes spécifiques à des plateformes » ci-dessous pour voir s'il y a des informations spécifiques à votre système d'exploitation, tout particulièrement dans le cas d'un vieux système.
Si vous avez des problèmes d'installation sur une plateforme qui est connue
comme étant supportée d'après les récents résultats de la ferme de
construction, merci de rapporter cette information à
<pgsql-bugs@lists.postgresql.org>
. Si vous êtes intéressé pour porter
PostgreSQL sur une nouvelle plateforme,
<pgsql-hackers@lists.postgresql.org>
est l'endroit approprié pour en
discuter.
Cette section documente des problèmes spécifiques additionnels liés à des plateformes, en ce qui concerne l'installation et le paramétrage de PostgreSQL. Assurez-vous de lire aussi les instructions d'installation, et en particulier la section intitulée « Prérequis ». Par ailleurs, consultez the file « src/test/regress/README » and the documentation à propos de l'interprétation des tests de régression.
Les plateformes qui ne sont pas traitées ici n'ont pas de problèmes d'installation spécifiques connus.
PostgreSQL fonctionne sur AIX, mais les versions avant la 6.1 ont différents problèmes et ne sont pas recommandées. Vous pouvez utiliser soit GCC, soit le compilateur natif IBM « xlc ».
AIX est particulier dans la façon dont il gère la mémoire. Vous pouvez avoir un serveur avec des gigaoctets de mémoire libre, et malgré tout avoir des erreurs de mémoire insuffisante ou des erreurs d'espace d'adressage quand vous lancez des applications. Un exemple est le chargement d'extensions qui échoue avec des erreurs inhabituelles. Par exemple, en exécutant en tant que propriétaire de l'installation PostgreSQL :
=# CREATE EXTENSION plperl; ERROR: could not load library "/opt/dbs/pgsql/lib/plperl.so": A memory address is not in the address space for the process.
En l'exécutant en tant que non-propriétaire, mais dans le groupe propriétaire de l'installation PostgreSQL :
=# CREATE EXTENSION plperl; ERROR: could not load library "/opt/dbs/pgsql/lib/plperl.so": Bad address
On a un autre exemple avec les erreurs out of memory dans les traces du serveur PostgreSQL, avec toutes les allocations de mémoire vers 256 Mo ou plus qui échouent.
La cause générale de ces problèmes est le nombre de bits et le modèle mémoire utilisés par le processus serveur. Par défaut, tous les binaires compilés sur AIX sont 32 bits. Cela ne dépend pas du matériel ou du noyau en cours d'utilisation. Ces processus 32 bits sont limités à 4 Go de mémoire, présentée en segments de 256 Mo utilisant un modèle parmi quelques-uns. Le modèle par défaut permet moins de 256 Mo dans le tas, comme il partage un seul segment avec la pile.
Dans le cas de l'exemple plperl
ci-dessus, vérifiez
votre umask et les droits des binaires de l'installation PostgreSQL.
Les binaires de l'exemple étaient 32-bits et installés en mode 750 au lieu
de 755. En raison des droits, seul le propriétaire ou un membre
du groupe propriétaire peut charger la bibliothèque. Puisqu'il n'est pas
lisible par tout le mode, le chargeur place l'objet dans le tas du
processus au lieu d'un segment de mémoire de bibliothèque où il aurait
été sinon placé.
La solution « idéale » pour ceci est d'utiliser une version 64-bits de PostgreSQL, mais ce n'est pas toujours pratique, parce que les systèmes équipés de processeurs 32-bits peuvent compiler mais ne peuvent pas exécuter de binaires 64-bits.
Si un binaire 32-bits est souhaité, positionnez LDR_CNTRL
à MAXDATA=0x
,
où 1<=n <= 8 avant de démarrer le serveur PostgreSQL, et essayez
différentes valeurs et paramètres de « postgresql.conf »
pour trouver une configuration qui fonctionne de façon satisfaisante.
Cette utilisation de n
0000000LDR_CNTRL
notifie à AIX que vous voulez
que le serveur réserve MAXDATA
octets pour le tas, alloués
en segments de 256 Mo. Quand vous avez trouvé une configuration utilisable,
« ldedit » peut être utilisé pour modifier les binaires pour
qu'ils utilisent par défaut la taille de tas désirée. PostgreSQL peut aussi
être recompilé, en passant à configure
LDFLAGS="-Wl,-bmaxdata:0x
pour obtenir le même résultat.
n
0000000"
Pour une compilation 64-bits, positionnez OBJECT_MODE
à
64 et passez CC="gcc -maix64"
et
LDFLAGS="-Wl,-bbigtoc"
à « configure ».
(Les options pour « xlc » pourraient différer.) Si vous omettez
les exports de OBJECT_MODE
, votre compilation échouera avec
des erreurs de l'éditeur de liens. Lorsque OBJECT_MODE
est
positionné, il indique aux outils de compilation d'AIX comme
« ar », « as » et
« ld » quel type de fichiers à manipuler par défaut.
Par défaut, de la surallocation d'espace de pagination peut se produire. Bien que nous ne l'ayons jamais constaté, AIX tuera des processus quand il se trouvera à court de mémoire et que la zone surallouée sera accédée. Le comportement le plus proche de ceci que nous ayons constaté est l'échec d'un fork, parce que le système avait décidé qu'il n'y avait plus de suffisamment de mémoire disponible pour un nouveau processus. Comme beaucoup d'autres parties d'AIX, la méthode d'allocation de l'espace de pagination et le « out-of-memory kill » sont configurables soit pour le système soit pour un processus, si cela devient un problème.
PostgreSQL peut être construit avec Cygwin, un environnement similaire à Linux pour Windows, mais cette méthode est inférieure à la version native Windows (voir the documentation) et faire tourner un serveur sur Cygwin n'est plus recommandé.
Quand vous compilez à partir des sources, suivant la procédure style Unix
d'installation (c'est-à-dire ./configure;
make
; etc...), notez les différences suivantes spécifiques à
Cygwin :
Positionnez le path pour utiliser le répertoire binaire Cygwin avant celui des utilitaires Windows. Cela permettra d'éviter des problèmes avec la compilation.
La commande « adduser » n'est pas supportée ; utilisez les outils appropriés de gestion d'utilisateurs sous Windows NT, 2000 ou XP. Sinon, sautez cette étape.
La commande « su » n'est pas supportée ; utilisez ssh pour simuler la commande « su » sous Windows NT, 2000 ou XP. Sinon, sautez cette étape.
OpenSSL n'est pas supporté.
Démarrez « cygserver » pour le support de la mémoire
partagée.
Pour cela, entrez la commande /usr/sbin/cygserver
&
. Ce programme doit fonctionner à chaque fois que
vous démarrez le serveur PostgreSQL ou que vous initialisez un cluster
de bases de données (« initdb »). La configuration par
défaut de « cygserver » pourrait nécessiter des changements
(par exemple, augmenter SEMMNS
) pour éviter à PostgreSQL
d'échouer en raison d'un manque de ressources système.
Il se peut que la construction échoue sur certains système quand une locale autre que C est utilisée. Pour résoudre ce problème, positionnez la locale à C avec la commande « export LANG=C.utf8 » avant de lancer la construction, et ensuite, une fois que vous avez installé PostgreSQL, repositionnez-là à son ancienne valeur.
Les tests de régression en parallèle (make check
)
peuvent générer des échecs de tests de régression aléatoires en raison
d'un dépassement de capacité de la file d'attente de listen()
qui cause des erreurs de connexion refusée ou des blocages. Vous pouvez
limiter le nombre de connexions en utilisant la variable de make
MAX_CONNECTIONS
comme ceci :
make MAX_CONNECTIONS=5 check
(Sur certains systèmes, vous pouvez avoir jusqu'à 10 connexions simultanées).
Il est possible d'installer « cygserver » et le serveur PostgreSQL en tant que services Windows NT. Pour plus d'informations sur comment le faire, veuillez vous référer au document « README » inclus avec le package binaire PostgreSQL sur Cygwin. Il est installé dans le répertoire « /usr/share/doc/Cygwin ».
Pour construire PostgreSQL à partir des sources sur macOS, vous aurez besoin d'installer les outils développeur en ligne de commande d'Apple, ce qui se fait en exécutant
xcode-select --install
(notez que cela affichera une fenêtre graphique pour confirmation). Vous pouvez aussi installer Xcode.
Sur les versions récentes de macOS, il est
nécessaire d'embarquer le chemin « sysroot » dans les options
d'inclusion utilisées pour trouver les fichiers d'en-tête système. Ceci a
pour résultat la génération d'un script
configure variant suivant la version du SDK
utilisée durant configure. Ceci ne devrait pas
poser de problèmes dans les scénarios simples mais si vous essayez de
faire quelque chose comme la construction d'une extension sur une machine
différente que celle sur laquelle le code serveur a été construit, vous
pourriez avoir besoin de forcer l'utilisation d'un chemin sysroot
différent. Pour cela, configurez PG_SYSROOT
ainsi par
exemple
make PG_SYSROOT=/desired/path
all
Pour trouver le chemin approprié sur votre machine, lancez
xcrun --show-sdk-path
Notez que compiler une extension en utilisant une version sysroot différente de celle utilisée pour compiler le serveur n'est pas vraiment recommandée ; dans le pire des cas, cela peut entraîner des incohérences d'ABI difficiles à débugger.
Vous pouvez aussi sélectionner un chemin sysroot différent de celui par
défaut lors du configure en indiquant PG_SYSROOT
à
configure :
./configure ... PG_SYSROOT=/desired/path
Ceci sera principalement utile pour faire de la cross-compilation pour d'autres versions de macOS. Il n'y a pas de garantie que les exécutables qui vont en résulter fonctionneront sur l'hôte actuel.
Pour supprimer les options « -isysroot », utilisez
./configure ... PG_SYSROOT=none
(tout nom de chemin non existant fonctionnera). Ceci pourrait être utile si vous souhaitez compiler avec un compilateur autre que celui d'Apple, mais attention au fait que ce cas n'est ni testé ni supporté par les développeurs PostgreSQL.
La fonctionnalité « System Integrity Protection » (SIP) de
macOS casse make check
parce
qu'elle empêche de passer la configuration nécessaire de
DYLD_LIBRARY_PATH
vers les exécutables en cours de
tests. Vous pouvez contourner cela en exécutant make
install
avant make check
. Ceci étant dit, la
plupart des développeurs Postgres désactivent SIP.
PostgreSQL pour Windows peut être compilé en utilisant MinGW, un environnement de compilation similaire à celui disponible sous Unix pour les systèmes d'exploitation Microsoft, ou en utilisant la suite de compilation Visual C++ de Microsoft. La variante de compilation MinGW utilise le système de compilation normal décrit dans ce chapitre ; la compilation via Visual C++ fonctionne de façon totalement différente et est décrite dans the documentation.
Le port natif Windows requiert une version 32 ou 64 bits de Windows 2000 ou ultérieurs. Les systèmes d'exploitation antérieurs n'ont pas l'infrastructure nécessaire (mais Cygwin peut être utilisé pour ceux-ci). MinGW, le système de compilation similaire à Unix, et MSYS, une suite d'outils Unix nécessaires pour exécuter des scripts shell tels que « configure », peuvent être téléchargés à partir de http://www.mingw.org/. Aucun de ces outils n'est nécessaire pour exécuter les binaires générés ; ils ne sont nécessaires que pour créer les binaires.
Pour construire les binaires 64 bits avec MinGW, installez l'ensemble d'outils 64 bits à
partir de https://mingw-w64.org/, ajoutez le répertoire des binaires de MinGW dans
la variable d'environnement PATH
, et lancez la commande
« configure » avec l'option
« --host=x86_64-w64-mingw32 ».
Après que vous ayez tout installé, il vous est conseillé de lancer psql dans « CMD.EXE », car la console MSYS a des problèmes de tampons.
Si PostgreSQL sous Windows plante, il peut générer des minidumps qui peuvent être utilisés pour dépister la cause du plantage ; ils sont semblables aux core dumps d'Unix. Vous pouvez lire ces dumps avec Windows Debugger Tools ou avec Visual Studio. Pour permettre la génération des dumps sous Windows, créez un sous-répertoire nommé « crashdumps » dans le répertoire des données du cluster. Ainsi les dumps seront écrits dans ce répertoire avec un nom unique généré à partir de l'identifiant du processus planté et du moment du plantage.
PostgreSQL est bien supporté sous Solaris. Plus le système d'exploitation est à jour, moins de problèmes vous aurez.
Vous pouvez compiler soit avec GCC, soit avec le compilateur de Sun. Pour une meilleure optimisation du code, le compilateur de Sun est fortement recommandé sur l'architecture SPARC. Si vous utilisez le compilateur de Sun, attention à ne pas sélectionner « /usr/ucb/cc » ; utilisez « /opt/SUNWspro/bin/cc ».
Vous pouvez télécharger Sun Studio sur https://www.oracle.com/technetwork/server-storage/solarisstudio/downloads/. De nombreux outils GNU sont intégrés dans Solaris 10, ou sont présents sur le Solaris companion CD. Si vous avez besoin des packages pour des versions plus anciennes de Solaris, vous pouvez trouver ces outils sur http://www.sunfreeware.com. Si vous préférez les sources, allez sur https://www.gnu.org/order/ftp.html.
Si « configure » se plaint d'un programme de test en échec,
c'est probablement un cas de l'éditeur de lien à l'exécution qui ne trouve
pas une bibliothèque, probablement libz, libreadline ou une autre bibliothèque
non standard telle que libssl. Pour l'amener au bon endroit, positionnez
la variable d'environnement LDFLAGS
sur la ligne de commande
de « configure », par exemple,
configure ... LDFLAGS="-R /usr/sfw/lib:/opt/sfw/lib:/usr/local/lib"
Voir la man page de ld pour plus d'informations.
Sur l'architecture SPARC, Sun Studio est fortement recommandé pour
la compilation. Essayez d'utiliser l'option d'optimisation
« -xO5 » pour générer des binaires sensiblement
plus rapides. N'utilisez pas d'options qui modifient le comportement
des opérations à virgule flottante et le traitement de
errno
(par exemple, « -fast »).
Si vous n'avez pas de raison d'utiliser des binaires 64 bits sur SPARC, préférez la version 32 bits. Les opérations et les binaires 64 bits sont plus lents que les variantes 32 bits. D'un autre côté, le code 32 bits sur un processeur de la famille AMD64 n'est pas natif, donc le code 32 bits est significativement plus lent sur cette famille de processeurs.
Oui, l'utilisation de DTrace est possible. Voir the documentation pour davantage d'informations.
Si vous voyez l'édition de liens de l'exécutable « postgres » échouer avec un message d'erreur similaire à :
Undefined first referenced symbol in file AbortTransaction utils/probes.o CommitTransaction utils/probes.o ld: fatal: Symbol referencing errors. No output written to postgres collect2: ld returned 1 exit status make: *** [postgres] Error 1
l'installation DTrace est trop ancienne pour gérer les sondes dans les fonctions statiques. Solaris 10u4 ou plus récent est nécessaire pour utiliser DTrace.