Linux - Installer les programmes (gestion des paquets, compil)

Décembre 2016

Comme dit dans le lien www.commentcamarche.net/tutlinux/linrpm.php3 , il existe plusieurs type d'installation, les paquets ou la compilation des sources, la seconde solution étant la plus difficile à réaliser. L'installation des paquets est extrêmement simple, et pour aller jusqu'à éviter de chercher soi-même les paquets, certaines distributions linux ont pris la peine de développer des outils de gestion des paquets.

Cependant il peut arriver que certains programmes (ou les dernières versions de certains programmes) n'existe (pas encore) sous forme de paquet : il faut alors passer par la compilation des sources, dont on verra un exemple en partie III

Prérequis


La gestion des paquets sous diverses distributions


Les paquets sont à linux ce que sont les .exe à Windows. Ils sont extrêmement faciles à installer dans la plupart des cas, une fois les liens donnés en "Prérequis" ont été suivi. Ils se presentent sous les extensions .rpm (pour "Red-hat Package Management") sous les distributions Mandrake, RedHat, Fedora Core et Suse, sous la forme .deb pour Debian, Ubuntu etc... et sous la forme .tgz pour Slackware.

Ils s'installent par la commande
rpm -ivh programme.rpm
ou
dpkg -i programme.deb
ou encore
installpkg programme.tgz

Cependant plusieurs problemes peuvent avoir lieu : le paquet que l'on souhaite installer (programme_A) nécessite l'installation d'un autre programme (programme_B) avant notre programme_A : il faut alors aller chercher le paquet du programme_B pour l'installer, mais à nouveau celui-ci peut nécessiter la présence d'un programme_C, et ainsi de suite... C'est ce que l'on appelle les dépendances, et cela peut devenir tres vite compliqué si programme_A dépend de prog_a, prog_b, prog_c et prog_d et que chacun d'eux dépend également d'une dizaine de programmes...

Pour simplifier la vie de l'utilisateur, la plupart des grandes distributions modernes intègrent un système de gestion des paquets, qui va avoir pour rôle (entre autre) de gérer les dépendances à la place de l'utilisateur. Ainsi, l'installation de programme_A se fera par l'appel d'une commande : "installe-moi programme_A", et l'outil de gestion ira chercher sur des sites internet préalablement définis programme_A, vérifiera si programme_A dépend d'autres paquets, et si c'est le cas, il les téléchargera et les installera dans le bon ordre : programme_C, puis programme_B qui dépend de C, puis programme_A qui dépendait de B.

Ces outils sont différents d'une distribution à l'autre, mais obéissent à quelques généralités de fonctionnement

GENERALITES


Ces outils de gestion des paquets servent de la facon suivante : une commande "installe-moi-ca:" (à remplacer par urpmi, apt-get, yum, ...) et le nom du paquet que l'on souhaite :
installe-moi-ca: paquet

Pour cela, il faut donc configurer cet utilitaire en lui disant où chercher les paquets qu'il souhaite installer : c'est ce qu'on appelle lui donner les sources d'où il doit télécharger les programmes. Voyons pratiquement comment cela se passe suivant les différentes distributions.

Mandriva et URPM


Ici, "installe-moi-ca:" s'appelle "urpmi".
Urpm dispose de plusieurs variantes (vous remarquerez qu'il "manque" le i à la fin...)
urpmi qui sert à installer ("i"nstall)
urpme qui sert à désinstaller ("e"rase)
urpmf et urpmq qui servent à faire des recherches ("f"ind et "q"uery)
Chacun de ces utilitaires possède une floppée d'options : se référer au manuel
man urpmi
, idem pour urpme, f, q, pour connaître les différentes options utilisables dans chacun de ces utilitaire. Nous ne regarderons par la suite que urpmi.

Définir des sources pour urpmi


Toutes ces commandes nécessitent les privilèges de super-utilisateur (root) : pour cela, taper su puis votre mot de passe.

Pour pouvoir utiliser urpmi, il faut tout d'abord configurer des sources pour urpmi. Pour cela, on utilise les commandes urpmi.addmedia (pour ajouter une source) et urpmi.removemedia (pour supprimer une source)
La syntaxe est la suivante :
pour ajouter une source :
urpmi.addmedia nom_de_la_source protocole://adresse/du/repertoire/des/paquets/ with chemin/relatif/vers/hdlist.cz
pour supprimer une source :
urpmi.removemedia nom_de_la_source
On peut ajouter comme sources : des sites ftp, des sites http, des CDs, XX??????XXXX
En règle générale, lors de l'installation de Mandrake, on récupère les différents CDs comme source. Si l'on possède une connexion haut débit de type adsl, il est alors préférable de commencer par les supprimmer pour préciser de nouvelles sources qui possèderont les mises à jour (contrairement au CDs ;-) )
urpmi.removemedia -a
supprime toutes les anciennes sources.

Il faut ensuite ajouter les sources que l'on souhaite : on peut par exemple utiliser le site easyurpmi.zarb.org tres bien fait. On ajoute alors les différentes sources : "main" correspondant plus ou moins a ce qu'il y a sur les CDs, "updates" contient les mises à jour, "contrib" correspond a des paquets fournis par d'autres utilisateurs (à utiliser avec modération). Il y a aussi les sources jpackage et plf (penguin liberation front) qui peuvent être ajoutées pour augmenter le nombre de paquets installables par urpmi. Remarquons que ces différents noms sont donnés à titre indicatif, l'utilisateur étant libre de leur donner le nom qu'il souhaite.
Exemple détaillé : la source "main"
urpmi.addmedia main fr2.rpmfind.net/linux/Mandrakelinux/official/10.1/i586/media/main with media_info/hdlist.cz
  • urpmi.addmedia est la commande
  • main est le nom de la source urpmi (l'utilisateur est libre par exemple de mettre \"principale\", ou meme \"toto_aime_les_fleurs\", l'important etant de fournir un nom reconnaissable : il est courant de la noter par exemple \"rpmfind_main\" car on va la chercher sur le site rpmfind
  • ............../media/main correspond au dossier contenant les fichiers .rpm de la source main
  • with media_info/hdlist.cz correspond à la liste des paquets contenus dans le dossier .../media/main défini au dessus : cette liste sera téléchargée et stockée sur votre ordinateur et permettra au programme de savoir rapidement si le paquet existe et où le chercher : il s'agit du chemin RELATIF : c'est a dire ici que le chemin vers hdlist.cz est en réalité : ....../media/main/media_info/hdlist.cz

il se peut parfois qu'on trouve "with ../media_info/hdlist_main.cz" : cela signifie que le "hdlist" pour "main" se situe à : ....media/media_info/hdlist_main.cz : on est remonté avec .. d'un cran dans l'arborescence avant de redescendre vers media_info/

reste à installer les différentes sources de la même façon : suivre pour cela soit les indications de easyurpmi, soit fouiller un peu dans le site ftp pour trouver ce qui vous intéresse...
on pourra par exemple ajouter :
urpmi.addmedia updates fr2.rpmfind.net/linux/Mandrakelinux/official/updates/10.1/main_updates with media_info/hdlist.cz

urpmi.addmedia contrib fr2.rpmfind.net/linux/Mandrakelinux/official/10.1/i586/media/contrib with media_info/hdlist.cz
urpmi.addmedia jpackage fr2.rpmfind.net/linux/Mandrakelinux/official/10.1/i586/media/jpackage with media_info/hdlist.cz
urpmi.addmedia plf-free ftp.free.fr/pub/Distributions_Linux/plf/mandrake/free/10.1 with hdlist.cz
urpmi.addmedia plf-nonfree ftp.free.fr/pub/Distributions_Linux/plf/mandrake/non-free/10.1 with hdlist.cz

Voilà, on a installé les différentes sources pour urpmi!

Récapitulatif
su
xxxxxx <-- mot de passe root
urpmi.removemedia -a
urpmi.addmedia nom dossier_des_rpm with chemin_relatif/hdlist.cz

Mise à jour des sources


Les distributions linux et les paquets associés sont constamment en évolution, c'est pourquoi il est conseillé, par exemple avant d'installer certains paquets, de faire une mise à jour de ses différentes sources pour

Installer un programme grâce a urpmi


C'est là qu'on comprend toute la puissance de l'utilisation de ce type de gestionnaire de paquet...
Dans un terminal, on passe en super-utilisateur (su) , et si l'on souhaite installer le paquet "paquet", on tape :
urpmi paquet

Exemple : mettons que l'on souhaite installer gedit :
urpmi gedit
fera l'affaire!!
un autre exemple intéressant : vous souhaitez installer un "équivalent" libre d'Office, mais vous ne savez pas comment il s'appelle sous linux? vous pouvez tabler sur le fait que le paquet contiendra au moins la chaine de caractères "office" : vous pouvez tenter
urpmi office
là un utilisateur de mandrake pourrait me donner ce que sort exactement le programme????
il vous propose donc les différents noms de paquets contenant office!
une fois le choix fait (par exemple pour openoffice), vous le précisez!
urpmi openoffice.org
est ce le bon nom de paquet ?

man urpmi
vous donnera les différentes options utlisables avec urpmi pour une utilisation avancée (par exemple spécifier une source, ignorer les dépendances, etc etc)
il est également possible de chercher les paquets grâce à urpmf ou urpmq (voir
man urpmf
et
man urpmq
)
enfin, on peut tester la possibilité d'installer un paquet grâce à
urpmi --test paquet


Récapitulatif
su
xxxxxx <-- mot de passe root
urpmi paquet

Pour une mise à jour de tous les paquets déjà installés :

urpmi.update -a
urpmi --auto-select

pour tester la possibilité d'installation de "paquet"

urpmi --test paquet

Desinstaller un programme grâce a urpme


Le paquet que vous venez d'installer ne vous plait pas? ou vous n'en avez finalement pas l'utilité? Rien de plus facile que de le supprimer! toujours en tant que super-utilisateur, il vous suffit d'entrer
urpme gedit
par exemple pour supprimer gedit précédemment installé.

Récapitulatif
su
xxxxxx <-- mot de passe root
urpme paquet

Gestion en mode graphique


Je connais pas, mais je sais que ca existe , genre dans drakconf, installer paquets, etc : qqn pour détailler ca??

Debian et apt-get


Ici, "installe-moi-ca:" s'appelle "apt-get".
Les différentes options d'apt-get sont encore une fois décrites dans la page de manuel :
man apt-get

Définir les sources pour apt-get


Elles sont définies dans le fichier /etc/apt/sources.list, et se présentent sous la forme d'une ligne comprenant :
type adresse version nom1 nom2 ...
type : peut etre "deb" pour les paquets ou "deb-src" pour les sources de programmes
adresse : adresse vers le dossier de la distribution
version : version de la distribution : stable, testing ou unstable
noms : nom des sous répertoires de adresse/dists/version/

Exemple : si l'on possede la version testing de Debian : une ligne comme ceci :
deb ftp.fr.debian.org/debian testing main contrib non-free
dans le /etc/apt/sources.list fera l'affaire.
on peut ajouter
deb ftp.fr.debian.org/debian-non-US testing main contrib non-free
pour les paquets labellé "non US", et :
deb-src ftp.fr.debian.org/debian/ testing main contrib non-free
pour les paquet-source de programme.
Le fichier /etc/apt/sources.list est à éditer "à la main" en tant que super-utilisateur

Mise à jour des sources


La mise à jour des sources se fait grâce à la commande :
apt-get update

Installer un programme


Un paquet s'installe grace à la commande :
apt-get install paquet

Exemple : si on souhaite installer gedit :
apt-get install gedit
donne :
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances... Fait
Les paquets supplémentaires suivants seront installés :
docbook-xml gedit-common gnome-keyring libbonoboui2-0 libbonoboui2-common libeel2-2 libeel2-data
libgail-common libgail17 libgnome-keyring0 libgnomeui-0 libgnomeui-common libgtksourceview-common
libgtksourceview1.0-0 libscrollkeeper0 scrollkeeper
Paquets suggérés :
docbook docbook-doc docbook-dsssl docbook-xsl docbook-stylesheets docbook-xsl-stylesheets
gnome-icon-theme
Les NOUVEAUX paquets suivants seront installés :
docbook-xml gedit gedit-common gnome-keyring libbonoboui2-0 libbonoboui2-common libeel2-2
libeel2-data libgail-common libgail17 libgnome-keyring0 libgnomeui-0 libgnomeui-common
libgtksourceview-common libgtksourceview1.0-0 libscrollkeeper0 scrollkeeper
0 mis à jour, 17 nouvellement installés, 0 à enlever et 4 non mis à jour.
Il est nécessaire de prendre 5584ko dans les archives.
Après dépaquetage, 24,7Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer ? [O/n]

on voit qu'apt-get nous dit quels sont les paquets qui doivent être installés pour satisfaire les dépendances

On peut également faire une mise à jour du système grâce à :
apt-get dist-upgrade
qui va vérifier toutes les mises à jour des paquets actuellement installés et faire la mise à jour si nécessaire

Récapitulatif
  • installation de \"paquet\" :

apt-get install paquet
  • mise à jour du systeme :

apt-get dist-upgrade
  • mise à jour de \"paquet\" :

apt-get upgrade paquet

Desinstaller un programme


La désinstallation de "paquet" se fait grâce à :
apt-get remove paquet

apt-get télécharge les paquets .deb avant de les installer, aussi de temps en temps est il utile de nettoyer cette base de donnée temporaire :
apt-get clean

Autres outils Debian


Il existe d'autres outils Debian permettant la gestion de paquets. On peut citer principalement synaptic, dselect et aptitude
pour les installer, rien de plus facile désormais ! :
apt-get install synaptic dselect aptitude
On les lance grâce à
aptitude
ou
dselect
ou encore
synaptic
aptitude me semble le plus abouti, il est "quasi graphique" : il fonctionne dans un terminal, mais les menus sont accessibles à la souris. Il permet de faire des recherches sur une partie du nom du paquet, de voir pour chaque paquet ceux dont il dépend, ceux qui dépendent de lui, les paquets qui sont utilisés en association avec lui, etc etc. Tres pratique, donc à essayer absolument!
dselect possede un menu en mode texte, et peut être déroutant au début. Il a tendance à laisser sa place à aptitude.
je connais pas synaptic par contre...qqn pour un dire qques mots?

FEDORA ET YUM



SLACKWARE


Les paquetages de cette distribution sont des ensembles de fichiers réunis en un seul grâce à l'utilitaire "tar" puis compressés en gzip.
Leur extension est .tgz (une contraction de tar.gz). Ca peut prêter à confusion: on a pour habitude d'associer tar.gz aux sources archivées d'un logiciel. Ici, ce n'est pas le cas: ce ne sont pas des sources mais bien des fichiers binaires qui sont contenus dans ces archives. Tout comme avec les paquetages des autres distributions (hormis Gentoo et dérivés).

Sous slackware, vous avez un gestionnaire de paquetage fourni d'office: pkgtools.
On pourrait le comparer à dpkg sous debian: c'est le gestionnaire de base pour installer, enlever, créer un paquetage mais il n'ira pas chercher les dépendances à votre place. Bien que ce paragraphe soit
sensé n'introduire que les gestionnaires de paquets qui gèrent automatiquement les dépendances (les autres sont évoqués en introduction), Il faut quand même en parler ici car vous pouvez en avoir besoin justement pour installer un gestionnaire de paquet plus évolué :-)

Pour installer un paquet avec pkgtools:
installpkg chemin_vers_un_paquet.tgz
Pour le supprimer:
removepkg nom_paquet #Pas de .tgz à la fin
Pour le mettre à jour:
upgradepkg nom_ancien_paquet%chemin_vers_nouveau_paquet.tgz
=> slackware.com/config/packages.php

Mais si vous ne voulez pas vous prendre la tête à gérer les dépendances vous mêmes (et c'est tout à fait compréhensible), vous pouvez utiliser un gestionaire de paquet plus évolué comme slackpkg.
slackpkg.sourceforge.net/
Pour l'installer, suivez scrupuleusement la partie "install" sur le lien du dessus. En résumé et pour éclaircir un peu l'anglais:
  • Télécharger le paquet slackpkg (lien donné dans la partie install du lien du dessus)
  • Installer ce paquet avec installpkg
  • Editer le fichier de configuration /etc/slackpkg/mirrors et décommenter une seule ligne (ce sera le lien du mirroir vers lequel slackpkg ira chercher les paquetages).
  • Lancez la commande
    slackpkg update
    ce qui aura pour effet de récupérer la liste des paquetages que contient le serveur mirroir.


Et voilà, lancez la commande précédente de temps en temps pour mettre à jour votre liste des paquetages.
Pour installer un paquet:
slackpkg install nom_paquet
Ô merveille vous pouvez même vous permettre des approximations dans le nom du paquetage, slackpkg vous proposera une liste avec des noms de paquets approchant celui que vous avez demandé.
Mettre à jour vos paquets (automatiquement tous ceux pour lesquels il ya une mise à jour):
slackpkg upgrade
Chercher le nom d'un paquet:
slackpkg search nom_fichier
où nom_fichier est le nom d'un fichier se trouvant dans le paquet que vous cherchez (bien pratique).


Slackpkg n'est pas le seul gestionnaire de paquetages évolué sous Slackware, n'hésitez pas à jeter aussi un coup d'oeil sur swaret et slapt-get:
swaret.sourceforge.net/index.php
freshmeat.net/projects/slaptget/

ALIEN : LA SOLUTION VENUE D'AILLEURS...


Vous souhaitez installer la derniere version de votre programme préférée, et tous les paquets sont disponibles!! enfin, presque tous... tous sauf celui de votre distribution.... Il va vous falloir compiler les sources, et la dernière fois que vous aviez tenté l'expérience, cela avait été catastrophique.... il vous reste peut etre un dernier espoir : il s'appelle alien, et est utiliser pour "transformer" un paquet .rpm en .deb, ou le contraire... il peut gérer les paquets rpm, deb, slp, tgz et pkg (pour Solaris). Cependant il reste et restera sans doute toujours un programme "de test" qui ne sera jamais efficace a 100%
Cependant, il peut être intéressant de tenter cette solution avant de compiler les sources. Pour l'installer, apt-get ou urpmi devrait faire l'affaire
ensuite
alien --to-deb paquet.rpm
créera le fichier paquet.deb que vous pourrez installer par
dpkg -i paquet.deb
(voir www.commentcamarche.net/tutlinux/linrpm.php3 pour l'installation des paquets)
une lecture attentive de
man alien
vous permettra de trouver les options adaptées à votre distribution.

UN EXEMPLE DE COMPILATION DE SOURCES

RAPPELS


Rien à faire, vous n'arrivez pas à trouver un seul paquet ou même alien ne vous aide pas pour installer votre programme... il va falloir avoir recours à l'installation du programme à partir du code source...
il se présente généralement sous la forme d'un fichier compressé (.tar.gz ou .tar.bz2).
La procédure est détaillée ici : www.commentcamarche.net/tutlinux/linrpm.php3 et rappellons là de façon succinte :
  • extraction du code source dans le dossier \"programme\"
  • cd vers le dossier \"programme\"
  • ./configure
  • make
  • passage en super-utilisateur
  • make install


Cependant, la plupart des nouveaux arrivants sous linux se précipitent sur des programmes très compliqués à installer supposant l'installation préalable d'un grand nombre de paquets dits "de développement" du type toto-dev, toto-devel, ou libtoto, sans compter toutes les dépendances tordues qui sont éventuellement nécessaires
Nous allons ici faire l'installation simple d'un programme ne dépendant que d'un minimum de chose pour prendre en main la procédure d'installation.

PROGRAMMES NECESSAIRES A LA COMPILATION


Pour l'exemple, et voir si on a bien compris la procédure, nous allons installer lynx qui est un navigateur internet en mode console. Comme il s'agit d'un programme relativement simple (mode console), il ne dépend que de peu de choses. Mais puisqu'il s'agit du code source du programme, il nous faudra au moins un compilateur! (qui va "traduire" les lignes de codes vers un exécutable).
Pour lynx, il s'agit de gcc
Pour vérifier que vous l'avez, taper
which gcc
Si vous récupérez quelquechose comme
/usr/bin/gcc
, vous avez bien gcc
Sinon, si vous avez suivi ce qui se fait au dessus, et suivant votre distribution, vous pouvez utiliser
urpmi gcc
ou
apt-get install gcc
ou encore
yum gcc
devraient faire l'affaire

LA COMPILATION !


Le but est ici de vous fournir (avec des explications) toutes les étapes nécessaires à la compilation du programme, en partant de l'hypothèse que vous possédez tous les programmes, compilateurs et autres nécessaires.
Commencons par récupérer le code source du programme qui nous intéresse.
lynx.isc.org/release/lynx2.8.5.tar.bz2 pour l'archive au format .tar.bz2
et on la télécharge dans /home/toto/ (si l'utilisateur s'appelle toto => à remplacer par votre nom d'utilisateur! si vous ne le connaissez pas,
ls -l /home
vous fournira une liste d'utilisateurs : a vous de remplacer "toto" par le bon!)
Ensuite, on ouvre une fenetre de terminal, et on se déplace dans /home/toto, en tant qu'utilisateur normal!! (toto, et pas le super utilisateur root)
cd /home/toto
ls -rtl
: vous verrez apparaitre dans la liste (sans doute parmi les dernieres positions, le fichier "lynx2.8.5.tar.bz2". Comme on l'a déja dit, il s'agit d'une archive, comme un .zip ou un .rar : il faut donc en extraire le contenu. Pour cela, on utilise la commande tar (cf www.commentcamarche.net/tutlinux/linrpm.php3)
tar xvfj lynx2.8.5.tar.bz2
vous devez voir défiler des lignes, qui correspondent aux fichiers qui sont extraits de l'archive
. 
.
.
lynx2-8-5/test/
lynx2-8-5/test/tabtest.html
lynx2-8-5/test/iso8859-1.html
lynx2-8-5/test/TestComment.html
lynx2-8-5/test/ISO_LATIN1_test.html
lynx2-8-5/test/README.txt
.
.
.
ici, vous voyez que tous ces fichiers ont pour nom un nom qui commence par lynx2-8-5/ : il s'agit du dossier dans lequel sont effectivement extraites les sources.
Déplacons nous vers ce dossier :
cd lynx2-8-5/
et regardons ce qu'il contient :
ls
Nous voyons plein de fichiers, dont les plus important sont : configure?? Makefile?? NON!! README et INSTALLATION bien sur!!
Je vous épargne leur lecture ici, mais pour compiler un programme plus complexe, cela peut s'avérer utile et nécessaire!
Normalement, la premiere étape de la compilation correspond a la configuration grace a ./configure : ici, pour éviter de reinstaller lynx qui est peut etre deja installé, et pour vérifier que ce qu'on va faire fonctionne correctement, nous allons creer un dossier "Install_test" dans lequel nous installerons la version compilée.
mkdir Install_test
et on va configurer en précisant que ce répertoire sera le répertoire où on installera notre nouveau programme grâce à l'option --prefix= dans ./configure :
./configure --prefix=/home/toto/lynx2-8-5/Install_test
(en prenant soin de remplacer "toto" par le bon utilisateur)
le système vérifie alors que le compilateur est présent, d'autes options, ou facon de compiler/installer le programme, mais il vous dit tout! (ce qui s'avère utile lors d'un plantage : on peut alors savoir ce qui manque à la configuration)
Une fois configuré, il faut compiler le programme grâce à make
make
il défile tout un tas de lignes de codes correspondant aux fichiers compilés, aux options de compilation utilisées, etc etc
il reste à installer le programme : pour cela, il faut les privilèges de super utilisateur
su 
xxxxxx <-- votre mot de passe "root"
et enfin :
make install
A ce stade, si tout s'est bien passé, votre programme est installé dans /home/toto/lynx2-5-8/Install_test/bin et vous pouvez le lancer par :
/home/toto/lynx2-8-5/Install_test/bin/lynx
votre terminal se colore, et vous arrivez dans un menu un peu bizarre "Lynx source distribution and potpourri". Touche "q" pour quitter : c'est gagné!!! vous avez compilé et installé votre programme! Nous n'apprendrons pas a nous en servir ici...
si vous souhaitez qu'il soit installé sur le systeme et que vous puissiez le lancer en ne tapant que "lynx", il vous faudra tout reprendre en n'utilisant PAS l'option --prefix=

Pour effacer le programme :
cd /home/toto/lynx2-8-5/ 
make uninstall
make clean

DESINSTALLATION


Pour l'installation par compilation, se pose le probleme de la desinstallation et donc de la mise à jour du logiciel.
  • En effet, deux methodes sont possibles:


- la commande "make uninstall": elle n'est possible que si d'un part, on a conservé le repertoire servant à la compilation (pour reprendre l'exemple précédent, il s'agit du repertoire /home/toto/lynx2-8-5/ ) et d'autre part que la desinstallation soit prévu c'est à dire des regles pour fabriquer la cible "uninstall" (make uninstall").

- supprimer les fichiers générés par l'installation via le "make install": cela devient compliquer dans la mesure ou il faut repérer l'emplacement de ces fichiers générés. C'est alors la seule solution si aucune regle pour le "uninstall" n'a été prévu.
  • Pour palier à cette difficulté, il existe la commande \"checkinstall\".

Son atout est de permettre l'installation d'un logiciel compilé à la maniere d'une installation par paquetage: le logiciel compilé se retrouve alors dans la liste des logiciels dans son gestionnaire de paquetages. D'ailleurs, un paquetage correspondant à notre logiciel compilé, au format de celui de la distribution (*.deb pour les Debian-like ou *.rpm pour les distributions à base de rpm) est alors généré dans le repertoire de compilation.
  • Marche à suivre: il suffit d'opter pour la commande \"checkinstall\" au lieu de la commande \"make install\".

On suit alors la séquence:

./configure -> make -> checkinstall

au lieu de la classique:

./configure -> make -> make install

Il est alors demandé de fournir diverses informations (création ou non de la doc correpondante, commentaires) afin de finaliser la création du paquetage correpondant.

A noter que checkinstall reconnait le format de paquetage à générer dans le cas d'une Ubuntu. En regle generale, pour une Fedora par exemple, il est demandé de préciser le format du paquetage à créer.
  • Il devient alors simple de supprimer un logiciel compilé:

-pour les Debian-like:
 dpkg -r paquetage_de_mon-logiciel_compilé
-pour les distrib à base de rpm:
rpm -e paquetage_de_mon-logiciel_compilé
Pour plus de précision voir :
-le site de checkinstall: asic-linux.com.mx/~izto/checkinstall/index.php
-le tutoriel sur trustonme.net: www.trustonme.net/didactels/117.html

ASTUCES - CONSEILS

  • D'un point de vue plus personnel, je vous conseillerais de télécharger et décompresser vous différentes sources de programmes dans un répertoire que vous aurez créé, par exemple dans /usr/src/progperso

mkdir /usr/src/progperso
  • Pour les programmes que vous ne souhaitez que \"tester\" et desinstaller dans la foulée, l'idée du --prefix semble intéressante, mais dans l'ensemble, à éviter sauf cas de force majeure (parfois il est nécessaire d'ajouter --prefix=/usr)
  • Pour vous refaire la main, vous pouvez tenter l'installation de bc, une calculatrice en mode console (encore plus simple a installer que lynx)

- telecharger www.fr.linuxfromscratch.org/view/blfs-5.0-fr/general/bc.html : c'est un tar.gz : l'enregistrer dans votre dossier /usr/src/progperso par ex
cd /usr/src/progperso 
tar xvzf bc-1.06.tar.gz
cd bc-1.06
mkdir install_perso
./configure --prefix=/usr/src/progperso/install_perso
make
su
xxxxxx
make install
Puis
exit 
/usr/src/progperso/install_perso/bin/bc
exit pour quitter le mode root, la ligne suivante pour lancer votre programme bc

- avec checkinstall:
Si on substitue alors la commande "make install" par "checkinstall", alors on nous demande s'il faut générer la doc correspondante à notre logiciel:
The package documentation directory ./doc-pak does not exist. 
Should I create a default set of package docs? [y]: n
Personnellement, je reponds non, mais cela n'a pas vraiment d'importance dans le fonctionnement de notre logiciel.

Il vient ensuite une demande d'informations pour ce logiciel:
Installing with "make install"... 

========================= Installation results ===========================
[...]
======================== Installation succesful ==========================

Copying files to the temporary directory...OK

Striping ELF binaries and libraries...OK

Compressing man pages...OK

Building file list...OK


Please write a description for the package.
End your description with an empty line or EOF.
>>une calculatrice en mode console
>>
Cette description concerne les informations affichées par le gestionnaire de paquetage à propos du paquetage. Là on peut d'indiquer par exemple qu'il s'agit d'un calculatrice en mode console.
On peut d'ailleurs noter que "checkinstall" passe par un "make install" pour génrer notre futur paqueatage.

This package will be built according to these values: 

0 - Maintainer: [ root@localhost.localdomain ]
1 - Summary: [ une calculatrice ]
2 - Name: [ bc-1.06 ]
3 - Version: [ 1.06 ]
4 - Release: [ 1 ]
5 - License: [ GPL ]
6 - Group: [ checkinstall ]
7 - Architecture: [ i386 ]
8 - Source location: [ bc-1.06 ]
9 - Alternate source location: [ ]

Enter a number to change any of them or press ENTER to continue:
On peut ensuite modifier l'entete du futur paquetage en verifiant que les informations sont exactes.


  • Debian package creation selected *** Building Debian package...OK Installing Debian package...OK Erasing temporary files...OK Deleting temp dir...OK Done. The new package has been installed and saved to /usr/src/progperso/bcbc-1.06/bc-1.06_1.06-1_i386.deb You can remove it from your system anytime using: dpkg -r bc-1.06

Dans le cas d'une Debian-like (ici Ubuntu 5.10), on obtient alors le paquetage bc-1.06_1.06-1_i386.deb qui est créé dans le repertoire de compilation.
Et comme indiqué, il suffit d'un "dpkg -r bc-1.06" pour facilement desinstaller notre calculatrice.

A noter que dans le cas, par exemple, de la Fedora, le paquetage n'est pas automatiquement installé. De plus; celui-ci se retrouve lors de sa création dans le repertoire /usr/src/redhat/RPMS/architecture/.

A voir également :

Ce document intitulé «  Linux - Installer les programmes (gestion des paquets, compil)  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.