Présentation des options de dpkg
Cet article a été publié par Benjamin
le 19-01-09 à 18:40 dans la catégorie Trucs - Astuces
Tags :
- Libre
- TrucsAstuces
- Ubuntu
Tous les possesseurs de Debian ou ses dérivés (Ubuntu entre autres) l'ont déjà utilisés. Certains connaissent déjà toutes les options par coeur, par contre, d'autres (notamment les nouveaux sous Linux) ne savent pas ce qu'est dpkg.
Cet article a pour but de vous expliquer très simplement ce qu'est dpkg et de vous présenter ses principales options. Certaines ne vous serviront probablement jamais, en revanche, d'autres deviendront très vite indispensables !

I. Présentation
J'ai trouvé la définition parfaite sur le wiki d'Ubuntu-fr, j'ai donc décidé de la recopier telle quelle :
dpkg (qui signifie Debian PacKaGe) est un outil logiciel en ligne de commande chargé de l'installation, la création, la suppression et la gestion des paquets Debian (.deb), le type de paquets traités par Ubuntu. Il permet aussi la gestion de paquets Debian en provenance de sources extérieures aux dépôts APT.
Tout est dit, dpkg est l'outil "de base" qu'utilise apt. Concrètement, quand vous faites un apt-get install, derrière, c'est dpkg qui travaille.
Ben alors, si apt utilise dpkg, pourquoi ne pas nous présenter uniquement apt ?
Les applications ne sont pas les mêmes. En effet, vous pourrez faire certaines opérations avec apt que vous ne pourrez pas faire avec dpkg. Chacun fait certaines choses mieux que l'autre. Par exemple, dpkg n'a pas de sources distantes où il va interroger des dépôts de paquets (ce que fait apt, aller chercher les paquets directement sur Internet), par contre, dpkg gère très bien les paquets installés sur votre machine (ce que ne fait pas apt).
Pour simplifier grossièrement, apt se charge d'installer des paquets disponibles sur Internet (via les sources) et dpkg gère les paquets installés sur votre machine.
Mais revenons à nos moutons, j'ai décidé de vous présenter dpkg car je trouve que ses options sont, une fois qu'on les connaît, réellement indispensables !
II. Les options
Voici donc les principales options de dpkg :
dpkg -i nom_du_package.deb : La commande la plus classique, elle installe un paquet qui se trouve sur votre ordinateur.
dpkg -S fichier : Affiche à quel paquet correspond fichier.
Exemple : dpkg -S /etc/icecast2/icecast.xmlicecast2: /etc/icecast2/icecast.xml
Exemple : Je veux afficher uniquement le paquet de mon émulateur NES FCEU, je tape
dpkg -l | grep fceu||/ Nom Version Description
+++-======-===========-==============================
ii fceu 0.98.12-3 FCE Ultra - a nintendo (8-bit) emulator
ii fceu-server 0.0.5-0ubuntu2 Server for the FCE Ultra NES emulator
ii gfceu 0.6.0-0ubuntu2 Graphical front-end using GTK2 for the FCE U
Coup de bol, le paquet s'appelle également fceu, j'aurais donc directement pu taper
dpkg -l fceu (vous suivez ?) :)Vous pouvez remarque les "ii" en début de chaque paquet, ils signifient que ce paquet est actuellement installé sur votre machine (un paquet pour aussi bien avoir été désinstallé en ayant laissé son fichier de conf, "rc")
Astuce : Si vous souhaitez connaître le nombre de paquets installés sur votre machine, voici la commande :
dpkg -l | grep "^ii" | wc -lExplications : dpkg -l : liste les paquets, grep "^ii" : qui commencent pas "ii" (donc qui sont installés), wc -l : compte le nombre de lignes.
dpkg -s nom_paquet : Affiche le statut du paquet.
Exemple :
dpkg -s fceu :Package: fceu
Status: install ok installed
Priority: optional
Section: games
Installed-Size: 976
Maintainer: Ubuntu MOTU Developers <ubuntu-motu@lists.ubuntu.com>
Architecture: i386
Version: 0.98.12-3
Replaces: fceu-sdl, fceu-svga, fceu-doc
Provides: nes-emulator
Depends: libc6 (>= 2.6-1), libsdl1.2debian (>= 1.2.10-1), zlib1g (>= 1:1.2.3.3.dfsg-1)
Suggests: efp
Description: FCE Ultra - a nintendo (8-bit) emulator
FCE Ultra is an emulator of the original (8-bit) Nintendo Entertainment
System (NES) released under the GNU General Public License (GPL). It
includes the following features (and many more):
* fully customizable color palette rendering engine
* complete sound emulation (all five channels)
* support for up to four joystick controllers
* zapper emulation for the mouse
* GameGenie emulation
* accepts compressed (PKZIP, gzip) ROM images
* TCP/IP network play
The project's homepage is at: http://fceultra.sourceforge.net/
Original-Maintainer: Joe Nahmias <jello@debian.org>
dpkg -L nom_paquet : Affiche tous les fichiers installés lors de l'installation du paquet.
Exemple :
dpkg -L fceu/.
/usr
/usr/games
/usr/games/fceu
/usr/share
/usr/share/applications
/usr/share/applications/fceu.desktop
/usr/share/doc
/usr/share/doc/fceu
/usr/share/doc/fceu/AUTHORS
[...]
/usr/share/doc-base/fceu
/usr/share/man
/usr/share/man/man6
/usr/share/man/man6/fceu.6.gz
dpkg -r nom_paquet : Supprime le paquet (sans supprimer son fichier de configuration).
dpkg -P nom_paquet : Supprime le paquet et ses fichiers de configuration.
Je vous invite à aller voir dans le dossier /var/lib/dpkg/info/ qui contient toutes les métadonnées des packets installés avec apt. Voici les significations des extensions :
- .list : liste des fichiers installés par le packet (dpkg -L)
- .conffile : liste des fichiers de conf
- .md5sum : md5sum de tous les fichiers du packet
- .preinst : script lancé avant installation packet
- .prerm : lancé avant effacement packet
- .config : fichier installé lors de l'installation du packet
- .shlibs : liste des bibliothèques du packet
Mise à jour (merci à mx3208)
dpkg --get-selections > fichier.texte : Insère, dans un fichier texte, la liste de l'ensemble des paquets présents sur votre système.
dpkg --set-selections < fichier.texte : Réinstalle, sur un nouveau système, l'ensemble des paquets présents dans la liste fichier.texte.
Vous l'aurez compris, c'est un outil très pratique pour dupliquer entièrement un système.
Enfin, une petite astuce très utile pour sauvegarder, dans un fichier tar, l'ensemble des fichiers de configuration de vos paquets installés :
sudo tar cf conffiles.tar $(cat /var/lib/dpkg/info/*.conffiles)Ainsi s'achève cette petite présentation de quelques options de dpkg, j'espère qu'elle aura été utile à quelques uns :)



Commentaires
merci pour ses rappels, en effet on ne se rappel pas toujours de qui fait quoi entre apt et dpkg, dpkg étant par ailleur beaucoup plus puissant que de lister des dépendances, il permet aussi la reconfiguration de paquets installés ("dpkg-reconfigure xserver-xorg" par exemple m'a souvent été très utile quand mon serveur x était cassé lors d'installation de drivers graphiques à la mano)
et à mon avis il manque la paire d'excellentes options
dpkg --get-selections > malistedepaquets.txt
dpkg --set-selections < malistedepaquets.txt
permettant de dupliquer un environement en qques secondes
et bien entendu l'avantage de kde c'est dans konqueror man:dpkg
avec manpages-fr bien entendu
see U
Merci pour cet article très clair et instructif !
Salut, j'ai vue l'article sur le planet ubuntu et plusieurs fois vous remplace dpkg par dpgk.
bash: dpgk : commande introuvable
Excusez moi, c'est une vilaine faute de frappe, c'est bien dpkg et non pas dpgk, j'ai corrigé, merci et encore désolé :)
Merci pour cette excellent article. Il complète bien un article que l'on trouve dans le Linux Pratique Hors série de jan/fev.
On y trouve un article qui explique comment nettoyer en une seule commande les paquets de configurations inutile (qui reste après désinstallation). Elle compile plusieurs outils en ligne de commande. La voici :
dpkg -l | grep ^rc | awk '{print $2}' | xargs sudo dpkg -P
Je vous invite à étudier ce que fait la commande entre chaque "tube" pour voir ce qu'elle fait (c'est très instructif).
Et je vous invite à consulter cet excellent magasine qui est Linux Pratique. Le HS actuel s'intitule "35 commandes pour tirer le meilleur de votre système GNU/Linux"
Merci pour cet article très intéressant et bien plus agréable à lire qu'un "man dpkg" !
Merci pour ce "cours" très instructif. Je profite du sujet pour poser une question dont je n'ai pas encore trouvé de réponse. Lorsque je mets à jour mes paquets, via le gestionnaire de mise à jour, dans la fenetre de l'avancée de l'installation, je trouve une vingtaine de messages qui commencent comme ceci :
dpgk : avertissement important : le fichier contenant la liste des ficheirs du paquet "....." étant manquant .......
Certes j'ai supprimé "à la main" certains paquets mais je n'arrive touours pas à supprmer ces messgaes. Comment faire ?
Merci
Désolé TempsX, je n'ai jamais été confronté à cette erreur, si d'autres savent comment la résoudre... :)
hopla, je viens completer le com du 19 janvier
en fait, je m'etait appuyer sur la doc pour les histoires de get-selection et set-selections
ce n'est pas suffisant
cette manip met a jour une base de donnees de paquet
et ensuite il faut la prendre en compte ....
apt-get dselect-upgrade
en esperant que personne ne m'a maudit entre temps pour des informations incomplètes
ciao
Je suis d'accord pour la première affirmation mais, au risque de paraître titilleux, La seconde me paraît aberrante !
Je m'explique :
==>APT ne plante pas !!<===
Il manque selon moi une précision à ton affirmation ! Apt ne sait pas installé un paquet téléchargé (ce que je n'ai pas vérifié) ???
Peux-tu nous éclaicir ta réponse sur ce point ??!