<!doctype linuxdoc system>

<!-- LinuxDoc file was created by LyX 1.0 (C) 1995-1999 by <jdd> Tue Sep 28 18:10:54 1999
 -->
 <article>
 <title>
Admin3
Installer un programme ou une application
 </title>
 <author>
Jean-Daniel Dodin
jdanield@linux-france.org
http://perso.club-internet.fr/jdanield
 </author>
 <date>
V1.0 28 septembre 1999
do005708-admin3
 </date>
 <abstract>
J'appelle ce texte Admin3 car j'ai écrit un admin2 que j'ai malheureusement
 perdu, au cas, bien improbable, ou j'en retrouverai une copie.
 </abstract>
 <toc>
 <sect>
Données de départ
 <sect1>
root
 <p>
Vous devez être root pour installer un programme. Mais il est vivement
 recommandé d'être utilisateur ordinaire pour le faire marcher. Il suffit d'ouvrir
 deux consoles pour être alternativement l'un et l'autre pendant les essais.
 </p>
 <sect1>
Qu'est-ce qu'un programme ?
 <p>
Au sens ou je l'entends ici, un programme est un exécutable destiné à remplir
 une fonction. Mais c'est aussi un "petit" exécutable, c'est à dire un fichier
 qui n'a besoin pour fonctionner de rien d'autre que de lui-même et qui peut
 donc être copié seul dans /bin, par exemple.
 </p>
 <p>
Plus concrètement, un "programme" au sens de ce document peut comprendre
 en plus du fichier exécutable une documentation (fichier man ou autre) et un
 fichier de configuration personnel à chaque utilisateur. Le critère décisif
 est qu'un programme n'a pas besoin d'être installé dans son propre répertoire
 pour fonctionner.
 </p>
 <p>
BIEN SUR un programme peut nécessiter des bibliothèques partagées, du genre
 de celles qui sont installées sur tous les système, et un compilateur s'il
 est fourni en source.
 </p>
 <p>
Presque tous les "utilitaires" fournis d'origine avec linux et situés dans
 /bin, /sbin ou /usr/bin sont des programmes.
 </p>
 <sect1>
Qu'est-ce qu'une application ?
 <p>
Une application, au sens du présent document, est un programme qui a besoin
 de nombreux autres fichiers spécifiques pour fonctionner. Il doit donc être
 nécessairement placé dans son propre répertoire. Netscape ou Staroffice sont
 des exemples bien connus d'applications.
 </p>
 <sect1>
Qu'est-ce qu'une bibliothèque ?
 <p>
(attention, "library" en anglais)
 </p>
 <p>
Une bibliothèque est un fichier qui contient du code exécutable utilisable
 par plusieurs programmes. Comme elle est utilisable par plusieurs, elle n'est
 installée qu'une seule fois. Normalement (mais je ne sais pas comment vérifier),
 elle n'est même chargée en mémoire qu'une seule fois, même si plusieurs applications
 s'en servent en même temps.
 </p>
 <p>
Idéalement, chaque fonction nécessaire pour programmer ne devrait se trouver
 qu'une fois sur l'ensemble des bibliothèques, ce qui reviendrait à dire que
 tous les programmes utiliseraient les mêmes bibliothèques.
 </p>
 <p>
Ce n'est pas possible, même si c'est presque réalisé dans certains cas.
 Par exemple, GTK (Gimp Tool Kit) est une bibliothèque très employée. Si vous
 jouez sous dos, vous connaissez dos4gw.exe qui est une bibliothèque presque
 universellement employée en dehors de windows. Elle s'est imposée par ses qualités
 et a presque fait disparaître la concurrence.
 </p>
 <p>
Sous Windows, les bibliothèques s'appellent des DLL ou des VXD (entre autre).
 </p>
 <p>
Le risque, c'est la sclérose. S'il n'y a plus de concurrence, il n'y a
 plus d'améliorations.
 </p>
 <p>
On n'en est pas encore là sous linux. Bien au contraire, il y a fréquemment
 des mises à jour et on trouve, par exemple, dans /usr/lib :
 </p>
 <p>
libgtk-1.1.so.2 
 </p>
 <p>
libgtk-1.1.so.2.0.0 
 </p>
 <p>
libgtk.so.1 
 </p>
 <p>
libgtk.so.1.0.6
 </p>
 <p>
L'avantage (sur windows, par exemple) est que, les nouvelles bibliothèques
 n'étant pas toujours compatibles avec les anciennes, un vieux programme pourra
 utiliser la vieille bib et un nouveau programme la nouvelle. l'ennui est que
 le gain mémoire n'existe plus.
 </p>
 <sect1>
Qu'est-ce qu'un interpréteur ?
 <p>
Pas de flamme, svp. La discussion sur ce sujet a tourné à la dispute il
 y a peu. Mes définitions valent pour moi, et même uniquement pour le présent
 document, qui ne s'adresse pas à des spécialistes.
 </p>
 <p>
Il faut d'abord dire qu'il y a de nombreuses catégories de programmes -vus
 du point de vue du programmeur. Nous nous contenterons d'en extraire deux.
 Les exécutables qui sont lisibles par un éditeur de texte et les autres.
 </p>
 <p>
S'ils sont lisibles par un éditeur, ils ne sont donc pas en langage machine
 :-) et pour les exécuter il faut les <em>interpréter</em>. Des interpréteurs très connus
 sont bash, BASIC, perl, python, LISP, tous les langages de vos calculatrices
 de poches.
 </p>
 <p>
L'avantage est de pouvoir les modifier à volonté (à vos risques et périls),
 et un encombrement souvent faible de l'exécutable. l'inconvénient est une moindre
 vitesse d'exécution.
 </p>
 <p>
Pour les exécuter il faut donc une bibliothèque un peu spéciale qui s'appelle
 bash, BASIC, perl... Ce sont les "interpréteurs" qui vont traduire le texte en
 langage machine.
 </p>
 <p>
Les programmes interprétés sont livrés "prêts à l'emploi", il n'y a évidemment
 (?) pas besoin de les compiler. Ils sont de plus en plus nombreux et fonctionnent
 remarquablement bien.
 </p>
 <sect1>
Qu'est-ce qu'un compilateur ?
 <p>
Si l'exécutable d'un programme n'est pas lisible par un éditeur de texte,
 celui-ci va tousser si vous lui demandez de lire le fichier. Il va sans doute
 vous dire "êtes-vous sur de vouloir lire un binaire ?". C'est probablement qu'il
 est en langage machine (ne riez pas, les programmeurs sont des gens tordus
 et rien de ce qui a l'air évident n'est forcément vrai, mais nous nous contenterons
 des approximations). Il n'a sûrement pas été écrit comme ça, il a donc été
 compilé.
 </p>
 <p>
Un compilateur est le programme qui fait ce travail. Très généralement,
 il s'agit de gcc ou gcc++.
 </p>
 <p>
La caractéristique principale du compilateur, en ce qui nous concerne,
 est qu'il n'est utile qu'une fois. Quand le programme est compilé, on peut
 supprimer le compilateur (à condition de ne pas en avoir besoin pour compiler
 un autre programme).
 </p>
 <p>
En fait, le programme, une fois compilé, doit être "lié", en franglais "linké",
 c'est à dire lié aux bibliothèques, mais c'est fait automatiquement, vous n'avez
 donc pas à vous en préoccuper.
 </p>
 <sect1>
Qu'est-ce qu'une dépendance ?
 <p>
Un programme est "dépendant" de ce qui lui est absolument nécessaire pour
 fonctionner. Un programme BASIC est dépendant de la présence du BASIC pour
 tourner.
 </p>
 <p>
Linux ayant été bâti autour d'Internet, et beaucoup d'utilisateurs n'ayant
 qu'une liaison téléphonique, donc lente, les programmes sont livrés <em>sans leurs
 bibliothèque</em>s.
 </p>
 <p>
Vous devez donc vous procurer ces bibliothèques vous même.
 </p>
 <p>
Je sais que je vais en faire hurler certains, mais je pense qu'aujourd'hui
 c'est une erreur. Alors que les liaisons internet s'accélèrent (oui, je sais,
 jamais assez !) et surtout où le support de diffusion est le CD, il est inacceptable
 qu'il n'y ai pas au moins le choix entre une version "complète" (avec bib) et
 une version "normale" (sans bib). Bien sur, l'installation sur votre disque de
 la bib doit être facultative.
 </p>
 <sect>
L'installation
 <sect1>
Les archives tgz
 <sect2>
Désarchiver
 <p>
tgz vient de tar gzip. Une archive tgz est un ensemble de fichiers réunis
 par l'exécution de "tar cfvz".
 </p>
 <p>
Il y a des variantes quand au programme de compression utilisé, je n'en
 parlerai pas car, de toute façon, l'installation n'intervient qu'<em>après</em> que
 les fichiers aient été décomprimés.
 </p>
 <p>
Donc, copiez l'archive sur votre disque dur, moi je le fais dans un répertoire
 /opt/tmp, mais j'ai pris ça au hasard.
 </p>
 <p>
Faites alors
 </p>
 <p>
tar xfvz xx &lt;tab&gt;
 </p>
 <p>
où xx est les deux ou trois premières lettres du nom de l'archive et &lt;tab&gt;
 la pression de la touche tab. Linux complète lui-même le nom (si ça ne marche
 pas, vous avez sans doute fait une erreur).
 </p>
 <p>
tar crée lui-même les répertoires utiles et vous vous retrouvez le plus
 souvent avec un répertoire du même nom que le tgz. Entrez-y.
 </p>
 <sect2>
Programme
 <p>
Vous avez certainement dans ce répertoire des fichiers avec leur nom en
 majuscule. Ce sont des fichiers d'instructions, il faudra sans doute les lire.
 </p>
 <p>
Mais, tout de suite, faites "ls -l" et regardez quels sont les fichiers avec
 un "x" dans les attributs. Si il y a un fichier ayant le même nom que l'archive
 (à peu près) et qui soit exécutable (x) c'est probablement qu'il n'y a aucune
 compilation à faire. Si vous installez un programme sans danger, vous pouvez
 l'essayer tout de suite (n'oubliez pas que vous êtes root et qu'il faut donc
 taper ./devant le nom du programme). Presque tous les programmes exécutés avec
 de mauvaises options (ou sans options du tout) affichent un aide mémoire.
 </p>
 <p>
Ainsi vous saurez si vous avez affaire à un programme simple. Si ça marche,
 et que le programme fait bien ce que vous attendez de lui, c'est presque fini.
 Regardez quand même la doc (il y a souvent des détails de mise au point) et
 recopiez le programme dans /bin.
 </p>
 <sect2>
Application
 <p>
Si vous voyez un exécutable appelé "configure", vous avez sans doute affaire
 à une application.
 </p>
 <p>
Il faut alors taper "./co &lt;tab&gt;", linux complète en ./configure. faites
 entrée pour lancer l'exécution.
 </p>
 <p>
Configure va vérifier si votre système peut recevoir l'application. Vous
 allez voir défiler une foule de messages plus ou moins clairs, mais ils vont
 passer si vite que vous n'y comprendrez pas grand chose. Ce n'est pas grave.
 </p>
 <p>
Au bout de quelques (parfois longues) minutes, configure s'arrête et vous
 donne des instructions.
 </p>
 <p>
Parfois il vous dit : tout est ok, faites make puis make install.
 </p>
 <p>
Obéissez, mais prévoyez que la compilation prends environ dix fois le temps
 qu'il a fallu à configure pour travailler, soit de 5 minutes à... plusieurs
 heures.
 </p>
 <p>
Rien ne vous empêche de faire autre chose pendant ce temps là, même sur
 Linux (faites gaffe, ne reboutez pas pour lancer windows !).
 </p>
 <p>
Une fois la compilation finie, il y a de fortes chances pour que le programme
 fonctionne là où il est. Essayez. En effet il n'y a encore eu aucune modification
 de votre système et donc aucun dégât. Après "make install", il deviendra très
 difficile de savoir ce qui s'est passé (il faudra comprendre le fichier "makefile"
 créé par configure).
 </p>
 <p>
Si ça marche, contentez-vous de créer un lien vers l'application dans /bin
 et restez-en là. Sinon, espérez que le programmeur est bon et que son make
 install ne posera pas de problème. Le plus souvent, tout se passe bien.
 </p>
 <sect1>
Les archives rpm
 <p>
rpm doit vouloir dire quelque chose comme Red Hat Programm Manager. C'est
 un bon essai de normalisation, mais il est encore très imparfait. Je le connais
 assez mal et je ne vous ferais donc pas un topo très long.
 </p>
 <p>
Cependant, ce format d'archive est aujourd'hui si répandu que presque toutes
 les distributions (en tout cas SuSE et toutes celles basées sur Red Hat : Red
 Hat, Mandrake,...) fournissent un utilitaire pour vous aider. Avec SuSE, c'est
 Yast qui s'y colle.
 </p>
 <p>
Le problème est que ces utilitaires (et/ou rpm) ne font pas toujours le
 travail mieux que configure et ne vous indiquent pas toujours précisément quelles
 sont les bibliothèques manquantes, le cas échéant. En cas de problème, un petit
 passage par le man rpm ne sera sans doute pas inutile. Ce programme est cependant
 un utilitaire puissant, donc compliqué...
 </p>
 <sect1>
Les archives Debian
 <p>
Les promoteurs de la Debian ne voulant rien devoir à personne ont créé
 leur propre format. Je n'y connais rien et n'irais donc pas plus loin, sauf
 à préciser qu'un utilitaire, alien, que je n'ai jamais utilisé, permet de passer
 d'un format dans un autre.
 </p>
 <sect1>
Remarques générales
 <p>
Si votre disque dur est de taille suffisante, et vus les prix des disques
 aujourd'hui, ce serait bête de se priver, vous avez sans doute intérêt à installer
 toutes les bibliothèques disponibles dans votre distribution. Il n'y a aucun
 danger à installer plusieurs bibliothèques, faites par contre très attention
 avant de remplacer une bibliothèque par une autre de même référence mais d'origine
 différente. Installez ensuite toutes les nouvelles bib quand elles vous sont
 demandées par une application.
 </p>
 <p>
Ainsi, au bout de quelques mois, vous les aurez toutes sur votre disque
 et toutes vos compilations se passeront sans problème. Il ne faut pas voir
 ailleurs pourquoi les anciens ont moins de problème que les autres : chez eux,
 tout est déjà installé, il ne peut donc plus rien manquer.
 </p>


 </article>
