Chapitre 13. Installation d'un logiciel libre

Table des matières
13.1. Introduction
13.1.1. Pré-requis
13.1.2. Compilation
13.1.3. Structure d'une distribution
13.2. Décompactage
13.2.1. Archive tar.gz
13.2.2. Utilisation de GNU Tar
13.2.3. bzip2
13.2.4. C'est tout bête!
13.3. Configuration
13.3.1. AutoConf
13.3.2. imake
13.3.3. Scripts shell divers
13.3.4. Autres possibilités
13.4. Compilation
13.4.1. make
13.4.2. Règles
13.4.3. C'est parti!
13.4.4. Explications
13.4.5. Et si ça ne fonctionne pas?
13.5. Installation
13.5.1. Avec make
13.5.2. Problèmes
13.6. Assistance
13.6.1. Documentation
13.6.2. Assistance technique
13.6.3. Comment trouver des logiciels libres
13.7. Remerciements

On nous demande souvent comment installer un logiciel libre à partir des sources. Compiler soi-même un logiciel est en fait très simple, car la marche à suivre est la même, quel que soit le logiciel à installer. Le but de ce chapitre sera de guider pas à pas le débutant en lui expliquant sommairement la signification de chacune des manipulations pour ne pas qu'elles lui apparaissent comme le simple effet de formules magiques ! Nous supposons quand même que le lecteur possède un minimum de connaissances UNIX (de type ls ou mkdir).

Ce chapitre est un simple guide (probablement perfectible) et ne se prétend aucunement un manuel de référence comme tel. C'est pourquoi nous donnons à la fin un certain nombre de liens qui, nous l'espérons, répondront aux questions qui seraient demeurées sans réponse. Nous en appelons à vous, lecteur ou lectrice, pour nous aider à en améliorer le contenu.

13.1. Introduction

Ce qui différencie un logiciel libre d'un logiciel propriétaire, c'est l'accès au code source du logiciel[1]. Cela implique que les logiciels libres soient généralement distribués sous forme d'archives de fichiers sources. C'est assez déroutant pour le débutant, car l'utilisateur du logiciel doit compiler lui-même les sources du logiciel avant de pouvoir utiliser celui-ci.

Aujourd'hui, il existe des versions pré-compilées de la plupart des logiciels libres existants. L'utilisateur pressé n'a plus qu'à installer le binaire. Cependant, certains logiciels ou des versions plus récentes de ceux-ci n'existent pas (ou pas encore) sous cette forme. De plus, si vous utilisez un couple système d'exploitation / architecture complexe, beaucoup des logiciels libres qui vous intéresseraient ne sont pas encore précompilés. Par ailleurs, compiler soi-même ses logiciels permet de n'en conserver que des options particulières ou d'en étendre les fonctionnalités par le biais d'extensions ciblées, répondant parfaitement à ses besoins.

13.1.1. Pré-requis

Pour installer un logiciel libre, vous aurez besoin :

  • d'un ordinateur allumé, pourvu d'un système d'exploitation,

  • d'un peu d'espace disque,

  • d'un compilateur (généralement pour le langage C), d'un programme d'archivage (tar),

  • d'une connaissance généraliste du système d'exploitation que vous utilisez,

  • de quoi manger (dans le pire des cas, cela peut effectivement durer longtemps ; au fait, un vrai hacker mange des steaks et pas des petits fours !),

  • de quoi boire (pour les mêmes raisons ; et un vrai informaticien boit des sodas... bourrés de caféine ; pas de pub clandestine !).

  • du numéro de téléphone de votre copain bidouilleur qui recompile son noyau toutes les semaines,

  • mais surtout de patience (beaucoup).

Compiler un logiciel libre ne présente généralement pas trop de problèmes, mais si vous n'êtes pas habitué, la moindre anicroche peut vous plonger dans la confusion. Nous allons donc ici vous montrer comment vous sortir, sans trop de bleus, de toutes les situations difficiles !

13.1.2. Compilation

13.1.2.1. Principe

Pour passer d'une forme source à une forme binaire, il est nécessaire d'effectuer une compilation. Cette compilation est généralement effectuée sur des programmes écrits en langage C ou C++ (qui sont les plus répandus dans la communauté du logiciel libre, notamment dans le monde UNIX). Certains logiciels libres sont écrits dans des langages ayant nul besoin de compilation (par exemple perl ou le shell), mais ils doivent quand même être configurés.

La compilation C est assurée, très logiquement, par un compilateur qui est généralement gcc, le compilateur libre écrit par le projet GNU (http://www.gnu.org/). La compilation d'un logiciel entier est une tâche complexe, qui passe par la compilation successive de multiples fichiers sources (il est plus facile pour le programmeur d'isoler les différentes parties de son travail dans des fichiers distincts, pour diverses raisons). Afin de rendre cette tâche plus aisée, ces opérations répétitives sont effectuées par un utilitaire du nom de make.

13.1.2.2. Les quatre phases de la compilation

Pour bien comprendre le mécanisme de la compilation (et donc être à même de résoudre des problèmes éventuels), il faut savoir qu'elle s'effectue en quatre phases qui convertissent progressivement un texte écrit en un langage compréhensible par un humain entraîné (le langage C par exemple) vers un langage compréhensible par une machine (ou un humain très entraîné, et encore, dans de rares cas). gcc exécutera l'un après l'autre quatre programmes qui se chargeront chacun d'une étape particulière :

  1. cpp : la première étape consiste à remplacer des directives (pré-processeur) par des instructions C. Typiquement, il s'agit d'insérer un fichier d'en-têtes (#include) ou de définir une macro fonction (#define). À la fin de cette phase, un code purement C est engendré.

  2. cc1 : cette étape consiste à convertir du C en langage d'assemblage. Le code généré est dépendant de l'architecture cible.

  3. as : cette étape consiste à générer du code objet (ou binaire) à partir du langage d'assemblage. À la fin de cette phase, un fichier se terminant par .o est généré.

  4. ld : cette dernière étape (l'édition de liens, en anglais « linkage  » ) assemble (ou lie) tous les fichiers objets (.o) et les bibliothèques associées, et génère un exécutable.

13.1.3. Structure d'une distribution

Une distribution de logiciel libre correctement structurée est généralement organisée d'une manière bien précise :

  • un fichier INSTALL, qui décrit la procédure d'installation du logiciel,

  • un fichier README qui contient toutes les informations générales relatives au programme (courte description, auteur, adresse où le télécharger, documentation relative, pointeurs utiles, ...). Si le fichier INSTALL est absent, le fichier README contient généralement une procédure succincte d'installation;

  • un fichier COPYING qui contient la licence ou décrit les conditions de distribution du logiciel ; parfois, c'est un fichier appelé LICENCE qui le remplace;

  • un fichier CONTRIB ou CREDITS qui contient une liste de personnes ayant un rapport avec le logiciel (participation active, remarques pertinentes, logiciel tiers, etc.);

  • un fichier CHANGES (ou, plus rarement, NEWS), qui contient les nouveautés de la version actuelle par rapport à la version précédente et les corrections de bogues;

  • un fichier Makefile (voir la section make), qui permet de compiler le logiciel (c'est un fichier nécessaire à make). Parfois, ce fichier n'existe pas encore et sera généré lors du processus de configuration;

  • assez souvent, un fichier configure ou Imakefile, qui permettra de générer un nouveau fichier Makefile;

  • un répertoire contenant les sources, qui sera généralement celui où le binaire sera stocké une fois la compilation terminée; son nom est généralement src;

  • un répertoire contenant la documentation relative au programme (généralement au format man ou Texinfo), dont le nom est généralement doc;

  • éventuellement, un répertoire contenant des données propres au logiciel (typiquement, des fichiers de configuration, des exemples de données produites, ou des fichiers de ressources).

Notes

[1]

Ce n'est pas tout à fait vrai car certains logiciels propriétaires fournissent également leur code source. Mais à la différence d'un logiciel libre, l'utilisateur, en bout de chaîne, lui n'a pas le droit d'en faire ce qu'il veut.


Tux sur Étoile de MandrakeSoft Linux est une marque déposée de Linus Torvalds. Toutes les autres marques et copyrights sont la propriété de leurs auteurs respectifs.
Sauf mention contraire, tout le contenu de ces pages et toutes les images sont Copyright MandrakeSoft S.A. et MandrakeSoft Inc. 2002.
http://www.mandrakelinux.com/