<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Configuration</title><meta name="generator" content="DocBook XSL Stylesheets V1.64.0"><link rel="home" href="index.html" title="Manuel de référence"><link rel="up" href="install-free-software-chapter.html" title="Chapitre 12. Installation d'un logiciel libre"><link rel="previous" href="decompression.html" title="Décompactage"><link rel="next" href="install-free-compilation.html" title="Compilation"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Configuration</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="decompression.html">Précédent</a> </td><th width="60%" align="center">Chapitre 12. Installation d'un logiciel libre</th><td width="20%" align="right"> <a accesskey="n" href="install-free-compilation.html">Suivant</a></td></tr></table><hr></div><div class="sect1" lang="fr"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-free-config"></a>Configuration</h2></div></div><div></div></div><p><a name="BId-install-free-software-chapter-pa64"></a>Un intérêt purement technique du fait de disposer des sources est le <i class="glossterm"><a name="BId-install-free-software-chapter-gt8"></a>portage</i> du logiciel. Un logiciel libre développé pour un <span class="application">UNIX</span> est utilisable sur tous les <span class="application">UNIX</span> existants (libres ou propriétaires), avec quelques modifications voire aucune. Ceci implique une configuration du logiciel juste avant la compilation.</p><p><a name="BId-install-free-software-chapter-pa65"></a>Il existe plusieurs systèmes de configuration, il va falloir utiliser celui que l'auteur du logiciel a prévu (parfois, plusieurs sont au programme). Généralement, vous pouvez :</p><div class="itemizedlist"><ul type="disc"><li><p><a name="BId-install-free-software-chapter-pa66"></a>utiliser <span class="application">AutoConf</span> (voir <a href="install-free-config.html#autoconf" title="Autoconf">la section intitulée « Autoconf »</a>) au cas où un fichier nommé <tt class="filename">configure</tt> existe dans le répertoire parent de la distribution;</p></li><li><p><a name="BId-install-free-software-chapter-pa67"></a>utiliser <span class="application">imake</span> (voir <a href="install-free-config.html#imake" title="Imake">la section intitulée « Imake »</a>) dans le cas où un fichier nommé <tt class="filename">Imakefile</tt> existe dans le répertoire parent de la distribution;</p></li><li><p><a name="BId-install-free-software-chapter-pa68"></a>exécuter un <i class="glossterm"><a name="BId-install-free-software-chapter-gt9"></a>script</i> <span class="foreignphrase"><i class="foreignphrase">shell</i></span> (par exemple <tt class="filename">install.sh</tt>) selon ce que dit le fichier <tt class="filename">INSTALL</tt> (ou le fichier <tt class="filename">README</tt>).</p></li></ul></div><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="autoconf"></a>Autoconf</h3></div></div><div></div></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="id2561699"></a>Principe</h4></div></div><div></div></div><p><a name="BId-install-free-software-chapter-pa69"></a><span class="application">AutoConf</span> permet de configurer correctement un logiciel. Il crée les fichiers nécessaires à la compilation (par exemple, <tt class="filename">Makefile</tt>), et modifie parfois directement les sources (comme par le biais d'un fichier <tt class="filename">config.h.in</tt>).</p><p><a name="BId-install-free-software-chapter-pa70"></a>Le principe d'<span class="application">AutoConf</span> est simple :</p><div class="itemizedlist"><ul type="disc"><li><p><a name="BId-install-free-software-chapter-pa71"></a>l'auteur du logiciel sait quels tests sont nécessaires pour configurer son logiciel (ex : « <span class="quote">quelle version de cette <i class="glossterm"><a name="BId-install-free-software-chapter-gt10"></a>bibliothèque</i> est utilisée ?</span> »). Il les écrit dans un fichier nommé <tt class="filename">configure.in</tt>, en suivant une syntaxe précise;</p></li><li><p><a name="BId-install-free-software-chapter-pa72"></a>il exécute <span class="application">AutoConf</span>. Ce dernier génère, à partir du fichier <tt class="filename">configure.in</tt>, un script de configuration appelé <tt class="filename">configure</tt>. Ce script est celui qui effectuera les tests nécessaires à la configuration du programme;</p></li><li><p><a name="BId-install-free-software-chapter-pa73"></a>l'utilisateur final exécute ce script, et <span class="application">AutoConf</span> se charge de configurer tout ce qui est nécessaire à la compilation. <a class="indexterm" name="BId-install-free-software-chapter-it4"></a> </p></li></ul></div></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="id2561874"></a>Exemple</h4></div></div><div></div></div><p><a name="BId-install-free-software-chapter-pa74"></a>Un exemple d'utilisation d'<span class="application">AutoConf</span> :</p><a name="BId-install-free-software-chapter-sc6"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="screen"> $ ./configure loading cache ./config.cache checking for gcc... gcc checking whether the C compiler (gcc ) works... yes checking whether the C compiler (gcc ) is a cross-compiler... no checking whether we are using GNU C... yes checking whether gcc accepts -g... yes checking for main in -lX11... yes checking for main in -lXpm... yes checking for main in -lguile... yes checking for main in -lm... yes checking for main in -lncurses... yes checking how to run the C preprocessor... gcc -E checking for X... libraries /usr/X11R6/lib, headers /usr/X11R6/include checking for ANSI C header files... yes checking for unistd.h... yes checking for working const... yes updating cache ./config.cache creating ./config.status creating lib/Makefile creating src/Makefile creating Makefile </pre></td></tr></table><p><a name="BId-install-free-software-chapter-pa75"></a> Dans le cas où on désirerait avoir un peu plus de contrôle sur ce qu'engendre la commande <span><b class="command">configure</b></span>, on peut lui passer des options via la ligne de commande ou des variables d'environnement. Exemple :</p><a name="BId-install-free-software-chapter-sc7"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="screen">$ ./configure --with-gcc --prefix=/opt/GNU</pre></td></tr></table><p><a name="BId-install-free-software-chapter-pa76"></a>ou encore (sous <span class="application">bash</span>) :</p><a name="BId-install-free-software-chapter-sc8"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="screen"> $ export CC=`which gcc` $ export CFLAGS=-O2 $ ./configure --with-gcc </pre></td></tr></table><p><a name="BId-install-free-software-chapter-pa77"></a>ou :</p><a name="BId-install-free-software-chapter-sc9"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="screen">$ CC=gcc CFLAGS=-O2 ./configure</pre></td></tr></table></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="id2562002"></a>Et si... cela ne fonctionne pas ?</h4></div></div><div></div></div><p><a name="BId-install-free-software-chapter-pa78"></a> Typiquement, il s'agit d'une erreur du style <tt class="literal">configure: error: Cannot find library guile</tt> (<span class="foreignphrase"><i class="foreignphrase">configure: erreur: je n'arrive pas à trouver la bibliothèque <tt class="filename">guile</tt></i></span>) (la plupart des erreurs de <tt class="filename">configure</tt> ressemblent à cela).</p><p><a name="BId-install-free-software-chapter-pa79"></a> Cela indique que le script <tt class="filename">configure</tt> n'a pas réussi à trouver une bibliothèque (dans notre exemple, la bibliothèque <tt class="filename">guile</tt>). Le principe est que le script <tt class="filename">configure</tt> compile un petit programme de test qui utilise cette bibliothèque. S'il n'arrive pas à le compiler, c'est qu'il n'arrivera pas à compiler le logiciel. D'où l'erreur !</p><div class="itemizedlist"><ul type="disc"><li><p><a name="BId-install-free-software-chapter-pa80"></a>Regardez d'où vient l'erreur rencontrée en examinant la fin du fichier <tt class="filename">config.log</tt>, qui contient une trace de toutes les étapes de la configuration. Le compilateur de langage <tt class="systemitem">C</tt> est généralement assez explicite dans ses messages d'erreur. Cela vous aidera à résoudre le problème.</p></li><li><p><a name="BId-install-free-software-chapter-pa81"></a>Vérifiez que la bibliothèque en question est bien installée. Si ce n'est pas le cas, installez-la (à partir des sources ou d'un binaire précompilé) et exécutez à nouveau le script <tt class="filename">configure</tt>. Une méthode efficace pour vérifier l'installation est de rechercher le fichier matérialisant la bibliothèque, qui porte invariablement le nom <tt class="filename">lib<nom>.so</tt>. Par exemple, <a name="BId-install-free-software-chapter-sc10"></a></p><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="screen">$ find / -name 'libguile*'</pre></td></tr></table><p> ou encore : <a name="BId-install-free-software-chapter-sc11"></a></p><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="screen">$ locate libguile</pre></td></tr></table><p> </p></li><li><p><a name="BId-install-free-software-chapter-pa82"></a> Vérifiez que la bibliothèque est accessible au compilateur. Cela veut dire qu'elle se trouve dans un répertoire parmi : <tt class="filename">/usr/lib</tt>, <tt class="filename">/lib</tt>, <tt class="filename">/usr/X11R6/lib</tt>; ou parmi ceux spécifiés par la variable d'environnement <tt class="varname">LD_LIBRARY_PATH</tt> (expliquée dans <a href="install-free-compilation.html#it-does-not-work" title="Et si ça ne fonctionne pas ?">la section intitulée « Et si ça ne fonctionne pas ? »</a>, partie <a href="install-free-compilation.html#LD-LIBRARY-PATH">b</a>). Vérifiez que ce fichier est bien une bibliothèque en tapant <span><b class="command">file libguile.so</b></span>.</p></li><li><p><a name="BId-install-free-software-chapter-pa83"></a>Vérifiez que les fichiers d'en-têtes correspondant à la bibliothèque sont bien installés à la bonne place (généralement, <tt class="filename">/usr/include</tt>, <tt class="filename">/usr/local/include</tt>, ou <tt class="filename">/usr/X11R6/include</tt>). Si vous ne savez pas de quels fichiers d'en-têtes vous avez besoin, vérifiez que vous avez bien installé la version de développement de la bibliothèque nécessaire (par exemple, <tt class="filename">gtk+2.0-devel</tt> au lieu de <tt class="filename">libgtk2.0</tt>). La version de développement de la bibliothèque est livrée avec les fichiers de type <tt class="filename">include</tt> (<span class="foreignphrase"><i class="foreignphrase">à inclure</i></span>) nécessaires à la compilation d'un logiciel utilisant cette bibliothèque.</p></li><li><p><a name="BId-install-free-software-chapter-pa84"></a>Vérifiez que vous avez assez de place disque (en effet le script <tt class="filename">configure</tt> a besoin d'un peu de place pour des fichiers temporaires). Utilisez la commande <span><b class="command">df -k</b></span> pour visualiser les partitions de votre système, et vérifiez les partitions pleines ou en passe de l'être.</p></li></ul></div><p><a name="BId-install-free-software-chapter-pa85"></a>Si vous ne comprenez pas le message d'erreur stocké dans le fichier <tt class="filename">config.log</tt>, n'hésitez pas à demander aide et assistance à la communauté du logiciel libre (voir <a href="install-free-support.html#support" title="Assistance technique">la section intitulée « Assistance technique »</a>).</p><p><a name="BId-install-free-software-chapter-pa86"></a>De plus, méfiez-vous si <tt class="filename">configure</tt> répond 100% de <tt class="literal">No</tt> ou s'il répond <tt class="literal">No</tt> alors que vous êtes certain qu'une bibliothèque existe (par exemple il serait très étrange qu'il n'existe pas sur votre système au moins une bibliothèque <tt class="filename">curses</tt>). Dans de tels cas, on est probablement en présence d'une variable <tt class="varname">LD_LIBRARY_PATH</tt> mal positionnée !</p></div></div><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="imake"></a>Imake</h3></div></div><div></div></div><p><a name="BId-install-free-software-chapter-pa87"></a><span class="application">imake</span> permet de configurer un logiciel libre en créant un fichier <tt class="filename">Makefile</tt> à partir de règles simples. Ces règles déterminent quels fichiers ont besoin d'être compilés pour construire le binaire, et <span class="application">imake</span> engendre le <tt class="filename">Makefile</tt> correspondant. Ces règles sont spécifiées dans un fichier appelé <tt class="filename">Imakefile</tt>.</p><p><a name="BId-install-free-software-chapter-pa88"></a>Là où <span class="application">imake</span> prend tout son intérêt, c'est qu'il utilise des informations dépendantes du <i class="glossterm"><a name="BId-install-free-software-chapter-gt11"></a> <span class="emphasis"><em>site</em></span> </i> (de l'architecture de la machine). C'est assez pratique dans le cas d'applications utilisant <span class="application">X Window System</span>. Mais <span class="application">imake</span> est aussi utilisé dans le cas de nombreuses autres applications.</p><p><a name="BId-install-free-software-chapter-pa89"></a>L'utilisation la plus simple de <span class="application">imake</span> est de se rendre dans le répertoire principal de l'archive décompactée, et ensuite d'exécuter le script <tt class="filename">xmkmf</tt>, qui fera appel au programme <span class="application">imake</span> :</p><a name="BId-install-free-software-chapter-sc12"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="screen"> $ xmkmf -a $ imake -DUseInstalled -I/usr/X11R6/lib/X11/config $ make Makefiles </pre></td></tr></table><p><a name="BId-install-free-software-chapter-pa90"></a>Si le site est mal installé, recompiler et installer <span class="application">X11R6</span> !</p></div><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="id2562600"></a>Scripts shell divers</h3></div></div><div></div></div><p><a name="BId-install-free-software-chapter-pa91"></a>Lisez le fichier <tt class="filename">INSTALL</tt> ou <tt class="filename">README</tt> pour de plus amples informations. Généralement, il va vous falloir exécuter un fichier de type <tt class="filename">install.sh</tt> ou <tt class="filename">configure.sh</tt>. Ensuite, soit le script d'installation sera silencieux (et déterminera tout seul ce dont il a besoin), soit il vous demandera des informations sur votre système (par exemple, des chemins).</p><p><a name="BId-install-free-software-chapter-pa92"></a>Si vous n'arrivez pas à déterminer le fichier que vous devez exécuter, vous pouvez (sous <span class="application">bash</span>) taper <tt class="literal">./</tt>, et ensuite taper deux fois la touche <b class="userinput"><tt>TAB</tt></b> (touche de tabulation). <span class="application">bash</span> complétera automatiquement (dans sa configuration par défaut) par un éventuel fichier exécutable du répertoire (donc, un éventuel script de configuration). Dans le cas où plusieurs fichiers sont exécutables, il vous en donnera une liste. Il ne vous reste plus qu'à choisir le bon.</p><p><a name="BId-install-free-software-chapter-pa93"></a>Un cas particulier est l'installation de modules <span class="application">perl</span> (mais pas seulement). L'installation de tels modules se fait par l'exécution d'un script de configuration lui-même écrit en <span class="application">perl</span>. La commande à effectuer est généralement :</p><a name="BId-install-free-software-chapter-sc13"></a><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="screen">$ perl Makefile.PL</pre></td></tr></table></div><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="id2562741"></a>Autres possibilités</h3></div></div><div></div></div><p><a name="BId-install-free-software-chapter-pa94"></a>Certaines distributions de logiciels libres sont mal organisées, surtout lors des premières phases de développement (et un homme prévenu en vaut deux !). Elles nécessitent parfois de retoucher « <span class="quote">à la main</span> » les fichiers de configuration. Généralement, ces fichiers sont un fichier <tt class="filename">Makefile</tt> (voir <a href="install-free-compilation.html#make" title="Make">la section intitulée « Make »</a>) et un fichier <tt class="filename">config.h</tt> (mais ce nom n'est qu'une convention).</p><p><a name="BId-install-free-software-chapter-pa95"></a>Nous ne recommandons ces manipulations qu'à des utilisateurs sachant ce qu'ils font. C'est un travail qui nécessite des connaissances réelles et une motivation nécessaire pour réussir. Mais c'est en forgeant qu'on devient forgeron.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="decompression.html">Précédent</a> </td><td width="20%" align="center"><a accesskey="u" href="install-free-software-chapter.html">Niveau supérieur</a></td><td width="40%" align="right"> <a accesskey="n" href="install-free-compilation.html">Suivant</a></td></tr><tr><td width="40%" align="left" valign="top">Décompactage </td><td width="20%" align="center"><a accesskey="h" href="index.html">Sommaire</a></td><td width="40%" align="right" valign="top"> Compilation</td></tr></table></div></body></html>