Aller au contenu

Compilation et installation de PgBouncer

Instructions de compilation et d’installation de PgBouncer

Construction

PgBouncer peut être compilé avec le système de compilation basé sur Autoconf ou avec le système Meson , plus récent mais encore expérimental. Pour l’instant, Autoconf reste le choix recommandé pour les compilations de production et la création de paquets. La compilation avec Meson devrait devenir le mode par défaut et celle avec Autoconf être supprimée dans une version future ; la tester et signaler tout problème est donc très bienvenu. La compilation dépend de quelques éléments :

  • Libevent 2.0+
  • pkg-config
  • OpenSSL 1.0.1+ pour la prise en charge du TLS
  • un compilateur C compatible C11
  • (facultatif) c-ares en tant qu’alternative à evdns de Libevent
  • (facultatif) bibliothèques LDAP
  • (facultatif) bibliothèques PAM

La compilation avec Meson nécessite en outre Meson 0.58+ et Ninja ; la compilation avec Autoconf nécessite GNU Make 3.81+.

Lorsque les dépendances sont installées, compilez avec Autoconf :

$ ./configure --prefix=/usr/local
$ make
$ make install

ou avec Meson (expérimental) :

$ meson setup build --prefix=/usr/local
$ meson compile -C build
$ meson install -C build

Si vous compilez à partir de Git, ou si vous compilez pour Windows, veuillez consulter les instructions de compilation spécifiques ci-dessous.


Prise en charge des recherches DNS

PgBouncer effectue des recherches de noms d’hôte au moment de la connexion, et non une seule fois au moment du chargement de la configuration. Cela nécessite une implémentation DNS asynchrone. Le tableau suivant indique les backends pris en charge ainsi que leur ordre de sondage :

backend parallèle EDNS0 (1) /etc/hosts requête SOA (2) note
c-ares oui oui oui oui problème avec IPv6+CNAME pour les versions <= 1.10
evdns, libevent 2.x oui non oui non ne vérifie pas les mises à jour de /etc/hosts
getaddrinfo_a, glibc 2.9+ oui oui (3) oui non N/A (non disponible sur les systèmes non-glibc)
getaddrinfo, libc non oui (3) oui non nécessite pthreads
  1. EDNS0 est requis pour avoir plus de 8 adresses derrière un même nom d’hôte.
  2. Une requête SOA est nécessaire pour vérifier à nouveau les noms d’hôte en cas de changement du numéro de série de la zone.
  3. Pour activer EDNS0, ajoutez options edns0 à /etc/resolv.conf.

c-ares est l’implémentation la plus complète et est recommandée pour la plupart des utilisations et des paquetages binaires (si une version suffisamment récente est disponible). L’implémentation evdns intégrée à libevent convient également à de nombreuses utilisations, sous réserve des restrictions mentionnées. Les autres backends sont à l’heure actuelle pour l’essentiel des options héritées et ne font plus l’objet de nombreux tests.

Par défaut, c-ares est utilisé s’il est détecté. Son utilisation peut être imposée avec -Dcares=enabled (configure : --with-cares) ou désactivée avec -Dcares=disabled (configure : --without-cares). Si c-ares n’est pas utilisé (non trouvé ou désactivé), alors Libevent est utilisé. Spécifiez -Devdns=false (configure : --disable-evdns) pour désactiver l’utilisation d’evdns de Libevent et revenir à une implémentation basée sur libc.


Fonctionnalités optionnelles

Les fonctionnalités PAM, LDAP et systemd sont détectées automatiquement par meson : leurs options -Dpam, -Dldap et -Dsystemd ont la valeur par défaut auto, chacune est donc compilée lorsque ses bibliothèques sont présentes. Forcez l’activation d’une fonctionnalité avec -D<feature>=enabled ou sa désactivation avec -D<feature>=disabled. La compilation Autoconf ne les détecte pas automatiquement ; activez-les explicitement avec --with-pam, --with-ldap ou --with-systemd.


Authentification PAM

Lorsqu’il est compilé avec la prise en charge de PAM, un nouveau type d’authentification global pam devient disponible pour valider les utilisateurs via PAM.


Authentification LDAP

Lorsqu’il est compilé avec la prise en charge de LDAP, un nouveau type d’authentification global ldap devient disponible pour valider les utilisateurs via LDAP.


Intégration systemd

La prise en charge de systemd permet d’utiliser Type=notify (ou Type=notify-reload si vous utilisez systemd 253 ou une version ultérieure) ainsi que l’activation par socket. Consultez etc/pgbouncer.service et etc/pgbouncer.socket pour des exemples.


Construction à partir de Git

La compilation Autoconf nécessite de générer les fichiers d’en-tête et de configuration avant de pouvoir exécuter configure :

$ git clone --branch pgbouncer_1_26_0 https://github.com/pgbouncer/pgbouncer.git
$ cd pgbouncer
$ ./autogen.sh
$ ./configure
$ make
$ make install

Tous les fichiers seront installés sous /usr/local par défaut. Vous pouvez fournir une ou plusieurs options en ligne de commande à configure. Exécutez ./configure --help pour afficher la liste des options disponibles et des variables d’environnement qui personnalisent la configuration.

Paquets supplémentaires requis pour la compilation Autoconf à partir de Git : autoconf, automake, libtool, pandoc

Avec la compilation Meson, vous pouvez compiler directement à partir d’un checkout ; pandoc est requis pour générer les pages de manuel :

$ meson setup build
$ meson compile -C build
$ meson install -C build

Exécutez meson configure build pour afficher la liste des options -D disponibles.


Test

Consultez le fichier README.md dans le répertoire de test pour savoir comment exécuter les tests.


Construction sous Windows

Le seul environnement de compilation pris en charge sous Windows est MinGW. Cygwin et Visual $ANYTHING ne sont pas pris en charge.

Pour compiler sous MinGW, procédez à la compilation Autoconf habituelle :

$ ./configure
$ make

ou à la compilation Meson expérimentale :

$ meson setup build
$ meson compile -C build

En cas de compilation croisée depuis Unix avec Autoconf :

$ ./configure --host=i586-mingw32msvc

L’option de compilation LDAP n’est actuellement pas prise en charge sous Windows.


Exécution sous Windows

L’exécution depuis la ligne de commande se déroule comme d’habitude, à l’exception des options -d (lancement en démon) et -u (changement d’utilisateur) qui ne fonctionnent pas.

Pour exécuter PgBouncer en tant que service Windows, vous devez configurer le paramètre service_name afin de définir un nom pour le service. Ensuite :

$ pgbouncer -regservice config.ini

Pour désinstaller le service :

$ pgbouncer -unregservice config.ini

Pour utiliser le journal des événements Windows, définissez syslog = 1 dans le fichier de configuration. Mais avant cela, vous devez inscrire pgbevent.dll :

$ regsvr32 pgbevent.dll

Pour le désenregistrer, procédez comme suit :

$ regsvr32 /u pgbevent.dll