Que ce soit pour mon activité professionnelle au sein de Dalibo ou que ce soit pour les projets libres dont je m'occupe (comme pgAdmin ou pgsnap par exemple), j'ai besoin d'avoir toutes les versions stables de PostgreSQL, et même celle en cours de développement. Je les ai donc toutes compiler avec l'option --prefix pour les installer dans des répertoires différents: /opt/postgresql-7.4 pour la 7.4, /opt/postgresql-7.4 pour la 8.0, et ainsi de suite jusqu'à la version en cours de développement (/opt/postgresql-head).

Je me suis fait un script pour mettre à jour les différentes variables d'environnement importantes: PATH, MANPATH, PGDATA. Script que j'ai dû dupliqué, une copie par version en fait. Voici le script en question:

 #!/bin/sh
 
 MANPATH=/opt/postgresql-8.4/man:$MANPATH
 PATH=/opt/postgresql-8.4/bin:/opt/pgpool-II-head/bin:/opt/pgadmin-trunk/bin:$PATH
 
 PGDATA=/opt/postgresql-8.4/data
 
 LD_LIBRARY_PATH=/opt/wxgtk-2.8/lib
 
 export MANPATH PATH PGDATA LD_LIBRARY_PATH

Ce script a plusieurs défauts. Le plus gros, c'est que je dois en créer un par version. Le second, c'est qu'il faut saisir la commande

 source env84.sh

pour que le shell se rappelle des nouvelles valeurs des variables d'environnement.

Fin juillet, je suis tombé sur une information qui m'a aidé à améliorer cet outil. Je suis fréquemment le blog de free-electrons et un des billets de Thomas m'a particulièrement intéressé : « Switching between toolchains made easy! ». Dans ce billet, Thomas parle d'un script qu'il a écrit pour passer d'un toolchain à un autre. Il a ajouté quelques fonctionnalités très intéressantes qui manquent singulièrement à mon script. Bref. Je viens d'adapter ce script pour qu'il fonctionne dans mon contexte. Le résultat est en pièce jointe de ce ticket.

Maintenant, plutôt que de faire un « source env84.sh », je fais un « pgadd 8.4 ». Si je veux supprimer du PATH une version 8.3, il me suffit de faire un « pgdel 8.3 ». Et même la complétion est gérée. C'est excellent.

Un grand merci à Thomas pour son script !