I) Introduction :
Le but de cette courte documentation est de vous apprendre à utiliser les packages debian, les .deb pour les intimes. Ainsi vous apprendrez à installer, désinstaller, chercher, voir des informations sur les packages.
II) La commande apt :
Depuis la sortie de la version 2.2 de Debian la commande apt est utilisée pour toutes les manipulations des packages (en frontend, car en backend c’est toujours dselect qui est utilisé).
Avant tout il faut avoir un fichier /etc/apt/sources.list de correct. Pour cela je vous conseille très fortement de lire la page de manuel s’y rapportant (man 5 sources.list), il existe aussi une petite interface sympathique pour gérer ce fichier c’est de lancer la commande apt-setup.
Ainsi pour les personnes disposants d’une connexion haut débit il est plus intéressant de choisir une sources http ou bien ftp. Mais pour les personnes possédant une connexion rtc voire même pas de connexion du tout il est bien plus judicieux de choisir la méthode par cdrom.
Et pour les plus courageux il reste encore une solution de prendre son éditeur de texte favori et d’éditer le fichier /etc/apt/sources.list.
III) L’installation d’un package :
Note : nous préférerons la commande apt à la commande dpkg car apt a le pouvoir de résoudre les problèmes de dépendances entre les différents packages.
Nous allons installer le compilateur gcc. Rien de plus simple il suffit de lancer la commande apt-get install gcc.
Imaginons maintenant que sur votre disque dur vous possédiez un package nommé truc-i386.deb, pour l’installer on utilisera la commande dpkg -i /chemin/vers/truc-i386.deb. Attention aux dépendances, si jamais l’installation échoue regardez bien les messages d’erreurs.
IV) Voir les packages déjà installés :
Il suffit d’utiliser la commande : dpkg -l.
Il y a de fortes chances pour que la sortie de cette commande vous donne beaucoup de texte, c’est pour cela qu’il peut être très utile de piper son contenu vers la commande less.
Ainsi on utilisera suivante : dpkg -l | less.
Vous allez surement rencontré un petit problème en effet les noms des packages très longs sont tronqués ce qui est quelque peu embêtant.
Pour nous en dépétrer on utilisera la commande : COLUMNS=140 dpkg -l | less, la valeur de COLUMNS peut être augmentée selon vos besoins.
V) Désinstallation de packages :
Si vous connaissez le nom du package (prenons toujours le cas de gcc), nous utiliserons apt-get remove gcc. Note qui a son importance : tous les noms des packages sont écrits en minuscules.
Imaginons que vous ne connaissiez pas le nom du package il va vous falloir lire le paragraphe suivant 😉
VI) Recherche de packages :
Il faut disintiguer les packages diponibles sur les miroirs (que ça soit http, ftp ou bien sur votre cdrom) des packages déjà installés sur votre système Debian.
Pour rechercher un package disponible dans les miroirs nous utiliserons : apt-cache search votre_programme. Ainsi vous trouvez toutes les occurences du terme votre_programme.
Pour voir les packages déjà installé sur votre système un simple dpkg -l|grep package suffira.
VII) Des informations sur les packages :
Bon il va arriver un jour où vous allez chercher à installer un programme seulement vous trouvez que son nom n’est pas explicite sur ce que ce programme est suceptible de faire.
Pas de panique apt-cache, peut nous en sortir. Par exemple nous savons que le package gcc existe, par contre que fait-il finalement ?
Nous lancerons la commande : apt-cache show gcc, et la section qui nous intéresse le plus est le champ Description. Au passage on remarquera que nous obtenons le nom du mainteneur, la version disponible, sur quel miroir apt-get ira le chercher et ainsi de suite (lisez la sortie quoi).
Mais ce n’est pas tout, nous pouvons obtenir encore plus d’informations sur le package gcc, notament quelles sont les dépendances sur ce package. Nous utiliserons donc : apt-cache showpkg gcc.
Le package gcc existe, et on sait ce qu’il fait, par contre quels binaires laisse-t-il sur le système, et où sont-ils situés ?
Nous utiliserons la commande suivante : dpkg -L gcc.
Le programme ls réside dans /bin, par contre dans quel package se trouve-t-il ?
La commande suivante nous le dira : dpkg -S /bin/ls, on peut aussi faire un peu plus simple. Par exemple en utilisant la commande shell which qui nous renvoie le path de tel programme. Ainsi which ls nous dira : /bin/ls. Donc nous on pourrait très bien utilisé la commande suivante (qui est équivalente à dpkg -S /bin/ls) : dpkg -S $(which ls).
VIII) Des astuces qui simplifient la vie :
Imaginons que vous ne travaillez pas sur une machine Debian, comment visualiser ce que contient cette satannée archive truc-i386.deb ?
En fait les .deb ne sont que des archives ar (voir man ar pour plus d’informations). Ainsi on s’en sortira via ar x truc-i386.deb, qui fournira un fichier control.tar.gz. Qu’il est ensuite possible de lire via un tar xvfz control.tar.gz.
Comment obtenir les sources de tel package ?
Nous utiliserons apt-get source gcc où gcc est un package disponible sur un miroir.
On peut même se construire un package debian soit-même (attention ça peut être assez compliqué tout de même, de plus l’infoformation soumise ici est très très minimale). On récupère les sources via apt-get source gcc, on rentre dans le répertoire nouvellement crée, puis on va dans le sous répertoire debian/ qui contient un fichier nommé control, et un fichier nommé rules.
Le fichier control décrit ce que le programme est, sur quelle architecture il peut être compilé etc. On notera que finalement ce sont les informations que l’on obtient via un dpkg -l gcc, et via un apt-cache show gcc.
Le fichier nommé rules vous permet de voir comment le logiciel est compilé, c’est-à-dire avec quelles options lors du configure par exemple. Donc concrétement si vous considérez qu’il manque des options au configure vous pouvez les ajouter.
Et enfin pour obtenir votre .deb il vous faudra installer le package fakeroot et de faire (dans le répertoire source de votre programme) : fakeroot debian/rules, si tout se passe alors vous obtiendrez dans le répertoire père votre .deb (moyennant le temps de compilation finalement, et que tous les programmes dont dépend le package sont installés, je pense notament aux packages de développements très très utiles pour ce genre de manipulations).