Apt-get et confrères : la gestion de paquets sous Debian

Publié le par titeuf

Après avoir installé votre système Debian il vous faudra le faire vivre : mises à jour et installation/désinstallation de logiciels sont des tâches courantes. Pour les mener à bien Debian dispose d'outils très efficaces au premier rang desquels vient APT.

Le premier fichier auquel vous devez vous intéresser concernant la gestion de paquets sous Debian est /etc/apt/sources.list car c'est dans ce fichier que sont inscrites les sources de téléchargement qu'apt va utiliser. Ces sources se présentent sous la forme :
deb “adresse_du_dépôt” “distribution” “type1” “type2” pour les paquets .deb et
deb-src “adresse_du_dépôt” “distribution” “type1” “type2” pour les dépôt contenant les sources des logiciels.
Concrètement cela donne pour une Debian “lenny” sur laquelle on veut avoir accès à tous les types de logiciels :

deb deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free

Les types correspondent au statut des paquets par rapport à l'éthique Debian, les paquets de “main” étant totalement gérés par les développeurs de debian et libres selon les critères de Debian, “contrib” regroupe des paquets libres mais dont certaines dépendances ne le sont pas, et “non-free” s'applique aux paquets soumis à des licences spécifiques (commercial, copyright, illégal dans certains pays…). Une dernière catégorie “restricted” peut apparaître sur certaines sources pour signifier des paquets propriétaires soumis à des conditons particulières (payant …etc).

Il est également possible d'ajouter le contenu d'un cdrom à la base de paquet pour faire des installations hors-ligne, il vous sera demandé de l'insérer en cas de besoin. La commande pour ajouter un cdrom est apt-cdrom add avec le cd dans le lecteur.

Les sources indispensables sont ajoutées dès l'installation, en particulier les sources qui concernent les mises à jour de sécurité. Vous pouvez prendre modèle sur la syntaxe de ces sources. À noter qu'un caractère # au début d'une ligne désactive la ligne, on dit alors qu'elle est “commentée”.

nota : ces fichiers peuvent ne pas exister par défaut, il suffit alors de les créer.

Dans ces fichiers vous pouvez assigner un degré de priorité à un niveau donné de stabilité pour l'ensemble de vos paquets ou certains seulement. Le fichier de préférences est simple par sa syntaxe mais complexe dans les conséquences qu'il peut entraîner, à utiliser avec prudence et documentation !
Un exemple de blocage du paquet “gimp” à sa version 2.6*

 Package: gimp



Pin: 2.6*



Pin-Priority: 1000


Pour utiliser des paquets de l'archive “experimental”, et suivre leurs mises à jour:

 Package: *



Pin: release a=experimental



Pin-Priority: 101

Un exemple en prenant l'origine du dépôt comme critère (information renvoyé par “apt-cache policy”):

 Package: *



Pin: origin kernel-archive.buildserver.net



Pin-Priority: 101


:!: Attention à ne pas trop “jouer” avec des priorités de paquets car on peut entraîner de sérieux problèmes de dépendances…

Pour donner globalement la préférence à un niveau de stabilité sur l'ensemble du système il faut créer un fichier apt.conf dans /etc/apt , ou /etc/apt/apt.conf.d/local qui aura le contenu suivant pour un système privilégiant “lenny” :

APT::Default-Release “lenny”;

Cette façon de faire évite de se retrouver au fil des mises à jour avec un système en unstable juste parce qu'on a ajouté une source unstable dans sources.list, cela n'empêche pas d'installer des paquets unstable avec la commande apt-get -t unstable install nom_du_paquet

Une fois votre sources.list mis en ordre, vous pouvez rafraîchir la base de donnée des paquets avec la commande apt-get update
Pour installer les mises à jour disponibles c'est apt-get upgrade
Pour (dés)installer un paquet particulier c'est apt-get install nom_du_paquet
et apt-get remove (--purge) nom_du_paquet où l'option facultative “--purge” indique d'enlever également les fichiers de configurations du logiciel à désinstaller. À noter que l'extention des paquets .deb n'est pas nécessaire.

L'installation de plusieurs paquets est possible en indiquant leurs noms à la suite séparés par un espace, et l'installation et désinstallation en une seule commande également avec apt-get install gimp scribus- qui installera gimp et désinstallera scribus (notez le ”-” après scribus).

Il est à noter que apt-get se charge de gérer les dépendances et vous indiquera les paquets supplémentaires qui seront automatiquement installés pour les satisfaire. En revanche il ne prend pas en charge les paquets “recommandés” et “suggérés”

Vous voilà maître des commandes de base, il vous reste à savoir rechercher un paquet avec apt-cache search nom_du_paquet
Grace à des additifs vous pouvez étendre les fonctions de apt, si vous installez par exemple le paquet “apt-show-versions” vous aurez accès à la commande:
apt-show-versions -u
qui listera tout les paquets disponibles pour mise à jour.

À utiliser avec prudence et discernement, la commande apt-get dist-upgrade fera passer l'ensemble de votre système à la version directement supérieure (stable(Etch)>testing(lenny) ou testing>unstable(sid) …etc), si vous avez bien entendu modifier votre sources.list pour pointer vers ces niveaux. Il est maintenant conseillé d'utiliser Aptitude pour cette usage. Sauvegarde indispensable avant l'exécution de ce genre de mise à niveau !

Pour connaître l'ensemble des usages possibles de apt-get référez vous au manuel en tapant man apt-get dans une console. Ou bien lisez le apt how-to. Vous découvrirez que apt sait réparer des paquets dont les dépendances sont “brisées” ou lister et désinstaller des dépendances laissées orphelines et inutiles lors d'une désinstallation précédente.

Enfin un dernier avantage de apt est sa gestion de la signature des paquets : à chaque source correspond une signature numérique garantissant l'authenticité des paquets, si cette clé d'identification est absente de votre système vous en avertira par la mention “The following packages cannot be authenticated!” ou “aucune clé publique n'est disponible…”. Dans ce cas il vous faut installer la clé d'identification de la source d'installation soit via le paquet “debian-archive-keyring” qui contient les clés des dépôts officiels et “debian-multimedia-keyring” pour les paquet de http://www.debian-multimedia.org , soit en important la clé manuellement pour des sources plus “exotiques”. L'exemple de la source Google©® :\\ Une fois ajouté au sources.list deb http://dl.google.com/linux/deb/%% stable non-free

il faut taper dans une console en root:

wget -q http://dl.google.com/linux/linux_signing_key.pub -O- | sudo apt-key add -

en faisant bien attention aux tirets, ensuite un apt-get update rendra les paquets de cette source disponibles à l'installation.

:!: Attention :!: car en ajoutant un dépôt de logiciels à votre sources.list et surtout en ajoutant sa clé vous accordez totale confiance à tous les paquets qui s'y trouvent ! Donc prudence avec les fichiers sources.list récupérés sur des blogs ou sites perso !

L'outils Unofficial Apt Repository vous permettra de trouver des sources de manière plus sûr, en plus la syntaxe est déjà prête à l'emploi : une recherche de “skype” pour l'architesture i386 renvoie directement la ligne “deb http://download.skype.com/linux/repos/debian/ stable non-free” prête à être copiée dans le sources.list. À garder en marque-page donc ;-) .

La ligne de commande c'est rapide et efficace, mais une belle interface graphique c'est plus confortable ! Apt en possède plusieurs dont les deux plus courantes sont Synaptic (plutôt lié à Gnome) et Adept (plutôt lié à KDE, Adept est en voit d'abandon, il sera remplacé par KPaquagekit dans KDE4). Les deux peuvent être installées sur le même système à condition de ne pas être utilisé simultanément. En revanche aucun problème à désintaller dans Adept un paquet installé dans Synaptic : c'est toujours Apt qui fait le boulot ! Adept comporte un “update-notifier” qui vous avertira des mises à jour et les installera en deux clics, Synaptic dispose de la même fonction via un applet Gnome. Une fois installé grace à apt-get install synaptic (adept) ils se trouveront dans le menu applications à la rubrique “système”. Ils permettent d'accéder à beaucoup de fonction de apt, je vous laisse explorer les menus ;-) .

Apt est un outils puissant, souple et… ancien. La relève est déjà en ordre de marche sous le nom de Aptitude. Il s'agit d'une interface en mode texte ou en ligne de commande basé sur apt, mais qui ajoute une dose de finesse supplémentaire dans la gestion des dépendances et des paquets “conseillés” et “suggérés” lors d'une installation. Aptitude garde en mémoire les paquets installés manuellement et sait purger les dépendances orphelines ou permet de choisir le niveau de stabilité auquel un paquet est installé aptitude install gimp/unstable installera gimp depuis une source “unstable” (présente dans le sources.list bien sûr). Il s'intalle avec apt apt-get aptitude et s'utilise avec une syntaxe similaire à apt-get (install, remove, purge, update, upgrade, dist-upgrade …etc voir man aptitude pour la liste exhaustive des commandes et /usr/share/doc/aptitude/README).

Aptitude s'utilise en ligne de commande ou via une interface en mode texte, dans ce dernier cas les commandes sont :

Touche –> Action

  • ? –> Affiche l'aide
  • F10 –> Menu > point de départ de toutes les actions, à explorer absolument ;-)
  • u –> Mise à jour des informations de l'archive de paquets
  • + –>Marque un paquet pour mise-à-jour ou installation
  • - –> Marque un paquet pour suppression (garde la configuration)
  • _ –> Marque un paquet pour purge (supprime la configuration)
  • = –> Place un paquet en maintien
  • U –> Marque tous les paquets qui peuvent être mis à jour
  • g–> Téléchargement et installation des paquets sélectionnés
  • q –> Sortie de l'écran courant et sauvegarde des changements
  • x –> Sortie de l'écran courant sans sauvegarde
  • Enter –> Visualisation d'information sur un paquet
  • C –> Visualisation des changements d'un paquet
  • | –> Change la limite des paquets affichés
  • / –> Recherche la première occurrence
  • n –> Répète la dernière recherche
  • \ –> Recherche en arrière

La gestion fine des dépendances peut être modifiée dans Menu(F10)–> Options –> Gestion des dépendances

Des exemples de commandes avancées en console:

aptitude why paquet1 paquet2 Permet de visualiser les relations de dépendances entre deux paquets
aptitude why-not paquet Permet de savoir pourquoi l'installation d'un paquet échoue ou est impossible
aptitude search ~dmozilla Effectue une recherche su rla description des paquets plutôt que leurs noms
aptitude search '?depends(paquet)' Liste tous les paquets dépendant de ”(paquet)“
aptitude search '~S~i~Aexperimental' Liste tous les paquets installés depuis l'archive experimental

Bien d'autres exemple sont disponibles dans le manuel détaillé.

Aptitude enregistre toutes ses actions dans /var/log/aptitude ce qui rend le suivit et l'analyse facile.

Une interface graphique est en cours de développement, nommé “aptitude-gtk” elle est déjà disponible sur les dépôts Debian, mais son utilisation reste réservée à un public averti.

Apt et Aptitude utilisent la même base de donné, ils peuvent être considérés comme des alternatives, aujourd'hui Aptitude est considéré comme le gestionnaire de paquets recommandé par Debian.

DPKG : la gestion de bas niveau

Lorsque l'on utilise apt ou aptitude ceux-ci font appel à une commande plus élémentaire : dpkg. Vous aurez besoin d'invoquer cette commande si vous voulez installer un paquet téléchargé sur Internet
dpkg -i chemin_vers_le_paquet_.deb pour résoudre des cas épineux de paquet “qui veut pas” en raison de dépendances cassées, dans ce cas les options –ignore-depends, –force-depends sont les derniers recours. :!: Ces commandes relève du cas désespéré, pas de l'usage normal, il est nécessaire de résoudre les problèmes de dépendances !

Des exemples d'utilisation simple de dpkg:

dpkg -s Montre la description d'un paquet
dpkg -S Cherche un motif dans la liste des paquets (exp: dpkg -S glx )
dpkg -l Liste tous les paquets installés, et donne leur état de santé (cassé,…)
dpkg -L Liste tous les fichiers contenu dans un paquet

Dpkg a un autre intérêt qui est de permettre la configuration des paquets qui utilisent “debconf” (l'outil de configuration de Debian). Si par exemple vous avez un problème d'affichage et une console au boot au lieu de l'interface graphique (suite à une mise à jour des pilotes de carte graphique…) la commande dpkg-reconfigure -phigh xserver-xorg pourrait vous sauver la vue ;-) . De même en cas de changement de périphériques d'entrée/sortie/affichage un dpkg-reconfigure xserver-xorg lancera un dialogue vous permettant de choisir des options pour l'ensemble de vos périphériques gérés par xorg (le dialogue est réduit dans les dernière versions de Debian (>Lenny), car Xorg dispose de nouvelles fonctions d'auto-configuration. De la même façon dpkg-reconfigure debconf permet de choisir le mode de dialogue de debconf.

dpkg est donc un outils très puissant, qui permet des manœuvres de la “dernière chance” à qui sait s'en servir (y compris d'installer des paquets sur un système qui ne démarre plus depuis un live cd !). Il sait également gérer les sources avec dpkg-source et assister la création de paquet avec dpkg-buildpackage. Un exemple d'utilisation de dpkg-buildpackage pour construire un paquet Debian à partir de sources:

 dpkg-buildpackage -rfakeroot -us -uc

( À taper en se plaçant dans le répertoire des sources décompressées. Les dépendances du paquet doivent être installées, ainsi que build-essential, fakeroot, gcc, cdbs et les sources ou “headers” du noyau.)

Dpkg est donc très utile, surtout quand ça va mal :-( , il est de toute façon utilisé en arrière plan par Apt et Aptitude. En revanche il n'est pas conseillé de l'utiliser pour la gestion normale des paquets.

Publicité
Pour être informé des derniers articles, inscrivez vous :
Commenter cet article