Introduction Cet article présente une manière élégante d'installer vos logiciels à partir des sources. Il est, bien sûr, plus pratique d'utiliser directement les packages précompilés pour sa distribution de Linux. Malheureusement, ces packages correspondent rarement a la dernière version du logiciel. 1 Installation à partir des sources (façon brutale) Le fichier de sources se présente sous la forme d'une archive compressée .tar.gz. La méthode usuelle pour installer le logiciel est la suivante: 1. decompression des sources dans le répertoire temporaire: tar zxvf CHEMIN_VERS/archive.tar.gz -C /tmp 2. déplacement dans le répertoire contenant les sources: cd /tmp/archive 3. vérifiez qu'un fichier "configure" est présent dans ce répertoire ([footnote] s'il est absent, lisez le fichier INSTALL ou README pour savoir quelle est la méthode d'installation.) ls ./configure 4. préparation de la compilation([footnote] l'option --prefix fixe le répertoire d'installation (également appelé répertoire cible) pour la phase de compilation.) ./configure --prefix=/usr/local 5. compilation make 6. installation([footnote] l'option prefix= fixe le répertoire d'installation (également appelé répertoire cible) pour la phase d'installation.) make 'prefix=/usr/local' install Cette suite de commandes installe le logiciel dans /usr/local (répertoire cible). Les exécutables sont stockés dans le sous-répertoire bin du répertoire cible, les librairies dans le sous-répertoire lib du répertoire cible, etc. Limites de cette méthode Cette méthode fonctionne parfaitement, mais pose des problèmes de mise à jour ou de suppression d'un logiciel. Il est en effet impossible de situer tous les fichiers installés lors du processus de compilation/installation. On se retrouve très vite avec des centaine de fichiers, d'origines diverses, dans le répertoire /usr/local. Et la lumière fut... Cet état de fait n'a pas échappé aux hackers d'Internet. Ceux-ci se sont attelés à trouver un moyen de ranger cette pagaille que devenait leur répertoire /usr/local. Cet article présente la solution proposée par Bob Glickstein: le logiciel STOW. Stow est un petit script (500 lignes de PERL) disponible sous licence GPL. Il est livré en standard sur la Debian, et dans les contribs de la RedHat. 2 Installation à partir des sources (façon fine) Le principe est d'effectuer la phase d'installation avec un répertoire cible différent de /usr/local, et spécifique pour chaque logiciel. L'exemple que nous choisissons est d'installer la librairie glib 1.2.3. Plutôt que de l'installer dans /usr/local, l'installation sera faite dans le répertoire cible "/stow/glib_1.2.3". Pour cela, il est nécessaire de modifier la phase 6: * installation mkdir /stow/glib_1.2.3 make 'prefix=/stow/glib_1.2.3' install Les librairies glib se trouveront alors dans le sous-répertoire lib de /stow/glib_1.2.3. Les fichiers include se trouveront eux dans le sous-répertoire include de /stow/glib_1.2.3. Et ainsi de suite pour tous les répertoires habituels, tels que bin, man, share, etc, sbin, doc ... Pour le moment, ça ne marche guère Une fois le logiciel installé avec cette petite astuce, vous allez utiliser Stow. La syntaxe d'utilisation est la suivante: stow -d /stow/glib_1.2.3 -t /usr/local([footnote] \begin{array}{lll} /usr/local & : & nouveau\\ /stow/glib_{1.2.3} & : & ancien \end{array}prefixprefix) Le script va mettre en place des liens symboliques pour que chaque fichier de /stow/glib_1.2.3 soit egalement visible dans /usr/local, à la même place. Les fichiers et répertoires de /stow/glib_1.2.3/lib sont ainsi visibles dans /usr/local/lib. Et de même pour les répertoires bin, man, share, etc, sbin, doc \ldots{} On obtient donc un logiciel configuré pour fonctionner dans /usr/local (phase 4), installé dans un répertoire spécifique (phase 6bis). Et le tout fonctionne correctement, grâce aux liens symboliques générés par Stow. Bien mais peut mieux faire Là où Stow devient plus indispensable, c'est pour désinstaller le logiciel. Eh oui! Stow est capable de défaire les liens qu'il a lui-même créé. Pour cela, utilisez la commande suivante: stow -d /stow/glib_1.2.3 -D Stow va alors défaire les liens dans /usr/local qui pointent vers /stow/glib_1.2.3. L'exemple qui tue Cette technique est particulièrement intéressante pour tester une nouvelle version d'un logiciel tout en gardant en réserve une version stable. Rien ne vous empeche d'installer les versions 1.2.1, 1.2.2 et 1.2.3 de glib dans divers répertoires, et d'utiliser Stow pour choisir la version visible depuis /usr/local. 3 Notes diverses et variées Si vous installez des librairies en utilisant cette méthode, vérifiez surtout que le fichier /etc/ld.so.conf contient une entrée pointant sur /usr/local/lib. Ensuite effectuez l'étape 7: * mise a jour des bases de données ldconfig Votre répertoire stow va vite contenir beaucoup de sous-répertoires, certains correspondant même à différentes versions d'un même logiciel. Pour vous y retrouver, je vous conseille de rajouter un caractère '+' en début de tous les noms de répertoires qui sont actuellement "stowés" (: dont le contenu est répliqué dans /usr/local via des liens). Conclusion Stow se révèle vite indispensable lorsqu'on a à gérer un nombre important de logiciels dans /usr/local. C'est un outil petit, stable et qui a fait ses preuves. Une lecture de la documentation fournie peut se révéler un plus pour utiliser certaines options de ce (fantastique) logiciel.