#This file was created by Mon Sep 13 17:26:01 1999 #LyX 1.0 (C) 1995-1999 Matthias Ettrich and the LyX Team \lyxformat 2.15 \textclass article \language default \inputencoding default \fontscheme default \graphics default \paperfontsize default \spacing single \papersize Default \paperpackage a4 \use_geometry 0 \use_amsmath 0 \paperorientation portrait \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \layout Section* Introduction \layout Standard Cet article présente une manière élégante d'installer vos logiciels à partir des sources. \layout Standard Il est souvent pratique d'utiliser directement les packages précompilés pour sa distribution de Linux. Mais l'installation à partir des sources est indispensable si vous souhaitez bénéficier de la toute dernière version d'un logiciel. \layout Standard Dans un premier temps, nous allons rappeler la marche à suivre pour compiler et installer un logiciel à partir des sources. \layout Standard Ensuite, nous détaillerons les problèmes liés à la mise à jour et la désinstalla tion de tels logiciles. \layout Standard Enfin, nous présenterons la solution qu'offre le logiciel STOW. \layout Section* Installation à partir des sources (façon brutale) \layout Standard Le fichier de sources se présente sous la forme d'une archive compressée .tar.gz. \layout Standard La méthode usuelle pour installer le logiciel est la suivante: \layout Enumerate Les sources sont distribuées sous formes d'archives compressées (: extension .tar.gz ou .tgz). Avant tout, il est nécessaire de les décompresser. L'exemple suivant effectue la decompression dans le répertoire temporaire /tmp. \begin_deeper \layout LyX-Code tar zxvf CHEMIN_VERS/archive.tar.gz -C /tmp \end_deeper \layout Enumerate La phase de décompression a créé un sous-répertoire qui contient toutes les sources. Faites-en le répertoire courant avec la commande suivante. \begin_deeper \layout LyX-Code cd /tmp/archive \end_deeper \layout Enumerate Une fois dans le répertoire adéquat, il faut vérifier que le fichier \begin_inset Quotes eld \end_inset configure \begin_inset Quotes erd \end_inset existe. C'est un exécutable qui prépare automatiquent les fichiers nécessaires à la compilation. S'il est absent, il vous faudra lire le README ou le INSTALL pour connaître la procédure à suivre pour la compilation. Pour vérifier la présence du fichier: \begin_deeper \layout LyX-Code ls ./configure \end_deeper \layout Enumerate Nous supposerons que configure peut être lancé dans le répertoire courant. Vous allez le lancer avec l'option --prefix pour indiquer le répertoire cible de la compilation. Les fichiers générés seront donc configurés pour fonctionner dans le sous-réper toires de ce prefix ($prefix/bin, $prefix/lib ...). Sous Linux, ce répertoire est /usr/local (ou parfois /opt). La commande est donc la suivante. (Notez que le fichier configure accepte souvent d'autres options. Elles sont décrites dans le fichier README ou INSTALL). \begin_deeper \layout LyX-Code ./configure --prefix=/usr/local \end_deeper \layout Enumerate L'outil utilisé pour automatiser la compilation est make. Si la phase précédente s'est déroulée correctement, il n'est pas nécessaire de rajouter d'otions sur la ligne de commande. \begin_deeper \layout LyX-Code make \end_deeper \layout Enumerate L'outil make permet également d'automatiser la phase d'installation. De même que précedemment, aucune option n'est normalement nécessaire. \begin_deeper \layout LyX-Code make install \end_deeper \layout Standard 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. \layout Subsection* Limites de cette méthode \layout Standard 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. \layout Subsection* Et la lumière fut... \layout Standard 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 \emph on STOW \emph default . \layout Standard Stow est un petit script (500 lignes) écrit en langage PERL, sous licence GPL. Debian le fournit en standard, et la RedHat dans le répertoire Contribs. \layout Section* Installation à partir des sources (façon fine) \layout Standard 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. \layout Standard L'exemple que nous choisissons est d'installer la librairie glib 1.2.3. Plutôt que de l'installer dans /usr/local et ses sous-répertoires, l'installati on sera faite dans "/usr/local/stow/glib_1.2.3" et ses sous-répertoires. \layout Standard Cela ne change rien aux étapes 1 à 5. Seule la phase 6 est différente. \layout Itemize Dans cette phase, on force l'outil make à faire l'installation du logiciel avec le prefix donné. \layout LyX-Code make 'prefix=/usr/local/stow/glib_1.2.3' install \layout Standard Les librairies glib se trouveront alors dans le sous-répertoire lib de /usr/loca l/stow/glib_1.2.3. Les fichiers include se trouveront eux dans le sous-répertoire include. Et ainsi de suite pour tous les répertoires habituels (bin, man, share, etc, sbin, doc ...) \layout Subsection* Pour le moment, ça ne marche guère \layout Standard Une fois le logiciel installé avec cette petite astuce, vous allez utiliser Stow. La commande suivante est à lancer dans le répertoire \emph on /usr/local/stow \emph default : \layout LyX-Code stow glib_1.2.3 \layout Standard Le script va alors mettre en place des liens symboliques pour que chaque fichier de /usr/local/stow/glib_1.2.3 soit egalement visible dans /usr/local, à la même place. Les fichiers et répertoires de /usr/local/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 \SpecialChar \ldots{} \layout Standard On obtient donc un logiciel configuré pour fonctionner dans /usr/local (phase 4), installé dans un répertoire spécifique (phase 6). Et le tout fonctionne de façon transparente, grâce aux liens symboliques générés par Stow. \layout Section* Bien mais peut mieux faire \layout Standard De même que Stow sait répliquer une arborescense dans /usr/local, Stow sait aussi la faire disparaitre. Pour reprendre notre exemple, Stow est capable de défaire les liens qu'il a créé dans /usr/local. \layout Standard Pour cela, utilisez la commande suivante depuis le répertoire \emph on /usr/local/stow \emph default : \layout LyX-Code stow -D glib_1.2.3 \layout Standard On se retrouve alors avec un /usr/local \begin_inset Quotes eld \end_inset propre \begin_inset Quotes erd \end_inset , dans lequel ne subsiste plus aucun lien pointant vers le répertoire /usr/local /stow/glib_1.2.3. \layout Standard On vient donc d'effectuer une désinstallation de la librairie glib, et ceci en douceur. \layout Section* Un exemple d'application \layout Standard 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. \layout Part* Conclusion \layout Standard 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 cet utilitaire. \the_end