mardi, septembre 1 2009, 17:15
Changer facilement de version de PostgreSQL
Par Guillaume Lelarge - PostgreSQL - Lien permanent
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 !
2 commentaires
Comme indiqué également dans un commentaire sur le blog de Thomas, le projet Environment Modules est un peu plus complet.
Il est toutefois beaucoup moins lightweight que la solution de Thomas, qui est très utile lorsque l'on est en milieu un peu hostile.
Il est surtout utile quand on ne veut pas s'encombrer avec du Tcl. Mais merci pour l'info