I. Présentation
J’ai trouvé la définition parfaite sur le , 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.xml
icecast2: /etc/icecast2/icecast.xml
dpkg -l (L minuscule) [nom_paquet] : Liste tous les paquets installés ou ayant été installés sur votre machine. [nom_paquet] est facultatif, il faut lui renseigner le nom du paquet exact.
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 -l -
Explications : 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 < [email protected] > *
-
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 < [email protected] > *
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 🙂