Commandes Linux : dpkg

DPKG

Installé avec le paquet dpkg
Voir aussi : dpkg-reconfigure, apt-get, gdebi

 

Remarques

  • Attention, dpkg ne gère pas les dépendances, il ne fait qu’informer sur les fichiers requis.
  • Pour un gestionnaire de paquets gérant les dépendances, utiliser gdebi
  • Sinon utiliser apt-get install -f après la commande dpkg -i package.deb

 

Afficher la version de la commande dpkg

dpkg --version

ou

apt-cache policy dkpg

 

Téléchargement du paquet utilisé pour les tests

Il s’agit du paquet console-data permettant de définir la disposition du clavier.

# apt-get download console-data
Réception de : 1 http://ftp.fr.debian.org/debian/ jessie/main console-data all 2:1.12-5 [1 150 kB]
1 150 ko réceptionnés en 1s (620 ko/s)
# ls
console-data_2%3a1.12-5_all.deb

 

Mode simulation (dry-run)

dpkg --dry-run [...]

ou

dpkg --simulate [...]

ou

dpkg --no-act [...]

 

Installer un paquet .deb

dpkg -i package.deb

ex :

# dpkg -i console-data_2%3a1.12-5_all.deb
Sélection du paquet console-data précédemment désélectionné.
(Lecture de la base de données... 182842 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de console-data_2%3a1.12-5_all.deb ...
Dépaquetage de console-data (2:1.12-5) ...
Paramétrage de console-data (2:1.12-5) ...

 

Installer un ensemble de packages contenu dans un répertoire

dpkg -R directory/

 

Supprimer un package (sauf fichiers de configuration)

dpkg -r package

Ne supprimera que le paquet cité et non ses dépendances.
ex :

# dpkg -r console-data
(Lecture de la base de données... 183494 fichiers et répertoires déjà installés.)
Suppression de console-data (2:1.12-5) ...

Désinstallera uniquement console-data et non sa dépendance console-common.

 

Supprimer un package (sauf fichiers de configuration) en le déconfigurant

dpkg -B -r package

Ne supprimera que le paquet cité et non ses dépendances.
Ses fichiers de configurations seront maintenus mais reconfigurés à leur état initial.

 

Supprimer complètement un package (y compris fichiers de configuration)

dpkg -P package

Ne supprimera que le paquet cité et non ses dépendances.
ex :

# dpkg -P console-data
(Lecture de la base de données... 183494 fichiers et répertoires déjà installés.)
Suppression de console-data (2:1.12-5) ...
Purge des fichiers de configuration de console-data (2:1.12-5) ...

Désinstallera uniquement console-data et non sa dépendance console-common.

 

Lister les paquets installés sous forme détaillée

dpkg -l [pattern]

Affichera, pour chaque paquet installé, son status, son nom, sa version, son architecture et sa description.
ex :

[...]
ii  colordiff             1.0.13-1   all          tool to colorize 'diff' output
rc  console-common        0.7.88     all          basic infrastructure for text console configuration
rc  console-data          2:1.12-5   all          keymaps, fonts, charset maps, fallback tables for 'kbd'.
ii  console-setup         1.123      all          console font and keymap setup program
ii  console-setup-linux   1.123      all          Linux specific part of console-setup
[...]

La signification de la première colonne (statut) :

  • First letter -> desired package state (« selection state »):
    • u … unknown
    • i … install
    • r … remove/deinstall
    • p … purge (remove including config files)
    • h … hold
  • Second letter -> current package state:
    • n … not-installed
    • i … installed
    • c … config-files (only the config files are installed)
    • u … unpacked
    • f … half-configured (configuration failed for some reason)
    • h … half-installed (installation failed for some reason)
    • w … triggers-awaited (package is waiting for a trigger from another package)
    • t … triggers-pending (package has been triggered)
  • Third letter -> error state (you normally shouldn’t see a thrid letter):
    • r … reinst-required (package broken, reinstallation required)

 

Lister les paquets installés sous forme synthétique

dpkg --get-selections

ex :

[...]
colordiff                                       install
console-common                                  deinstall
console-data                                    deinstall
console-setup                                   install
console-setup-linux                             install
[...]

 

Installer une liste de packages d’une machine A sur une machine B

Création de la liste sur la machine A :

dpkg --get-selections > listing.pkg

Mise à jour de l’information sur les paquets disponibles sur la machine B :

dselect
 * 1. [M]ise à j Mise à jour de l'information sur les paquets disponibles, si possible.

Définition de la liste des paquets à installer sur la machine B :

dpkg --set-selections < listing.pkg

Installation des paquets sur la machine B :

apt-get dselect-upgrade

 

Trouver à quel package installé appartient un fichier particulier

dpkg -S filename

Proche de :
apt-file search -x ^filename$
Sauf que apt-file recherchera également dans sa base de données locale parmi des paquets non installés.
ex :

# dpkg -S /usr/bin/tree
tree: /usr/bin/tree
# dpkg -S /usr/bin/easytag
dpkg-query: aucun chemin ne correspond à /usr/bin/easytag
# apt-file search -x ^/usr/bin/easytag$
easytag: /usr/bin/easytag

 

Lister les fichiers contenus dans un paquet installé

dpkg -L package

Proche de :
apt-file list package
Sauf que apt-file recherchera également dans sa base de données locale parmi des paquets non installés.
ex :

# dpkg -L tree
/.
/usr
/usr/share
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/tree.1.gz
/usr/share/doc
/usr/share/doc/tree
/usr/share/doc/tree/changelog.Debian.gz
/usr/share/doc/tree/README.gz
/usr/share/doc/tree/changelog.gz
/usr/share/doc/tree/copyright
/usr/share/doc/tree/TODO
/usr/bin
/usr/bin/tree

 

Lister les fichiers contenus dans un paquet .deb

dpkg -c package.deb

ex :

# dpkg -c console-data_2%3a1.12-5_all.deb
drwxr-xr-x root/root         0 2014-06-19 14:28 ./
drwxr-xr-x root/root         0 2014-06-19 14:28 ./usr/
drwxr-xr-x root/root         0 2014-06-19 14:28 ./usr/share/
drwxr-xr-x root/root         0 2014-06-19 14:28 ./usr/share/locale/
drwxr-xr-x root/root         0 2014-06-19 14:28 ./usr/share/locale/sr/
drwxr-xr-x root/root         0 2014-06-19 14:28 ./usr/share/locale/sr/LC_MESSAGES/
-rw-r--r-- root/root      3939 2014-06-19 14:28 ./usr/share/locale/sr/LC_MESSAGES/console-data.mo
drwxr-xr-x root/root         0 2014-06-19 14:28 ./usr/share/locale/it/
drwxr-xr-x root/root         0 2014-06-19 14:28 ./usr/share/locale/it/LC_MESSAGES/
-rw-r--r-- root/root      3325 2014-06-19 14:28 ./usr/share/locale/it/LC_MESSAGES/console-data.mo
[...]

 

Afficher les informations détaillées d’un paquet installé

dpkg -s package

ex :

# dpkg -s tree
Package: tree
Status: install ok installed
Priority: optional
Section: utils
Installed-Size: 134
Maintainer: Florian Ernst 
Architecture: i386
Version: 1.7.0-3
Depends: libc6 (>= 2.4)
Description: displays an indented directory tree, in color
 Tree is a recursive directory listing command that produces a depth indented
 listing of files, which is colorized ala dircolors if the LS_COLORS environment
 variable is set and output is to tty.
Homepage: http://mama.indstate.edu/users/ice/tree/

 

Afficher les informations détaillées d’un paquet .deb

dpkg -I package.deb

ex :

# dpkg -I console-data_2%3a1.12-5_all.deb
 nouveau paquet Debian, version 2.0.
 taille 1149680 octets : archive de contrôle=188319 octets.
   29964 octets,  1285 lignes   *  config               #!/usr/bin/perl
     892 octets,    21 lignes      control              
   48610 octets,   632 lignes      md5sums              
     726 octets,    27 lignes   *  postinst             #!/bin/sh
     206 octets,     8 lignes   *  postrm               #!/bin/sh
  431271 octets,  2848 lignes      templates            
 Package: console-data
 Version: 2:1.12-5
 Architecture: all
 Maintainer: Alastair McKinstry 
 Installed-Size: 2444
 Depends: debconf (>= 0.5) | debconf-2.0
 Recommends: kbd (>= 0.99-12), console-common (>= 0.7.62)
 Suggests: unicode-data
 Conflicts: console-tools-data, kbd (<= 0.96a-1), kbd-data
 Replaces: console-tools-data
 Provides: console-keymaps, console-tools-data
 Built-Using: unicode-data (= 7.0-1)
 Section: utils
 Priority: optional
 Description: keymaps, fonts, charset maps, fallback tables for 'kbd'.
  This package provides the standard data files for the Linux console tools.
  .
  This includes keyboard definitions (keymaps), console fonts for various
  encodings, maps defining the standard charsets for use by text applications,
  and fallback tables allowing to approximate an unavailable character's glyph
  with the glyph of another character in the current font.

 

Dépaqueter un paquet .deb sans le configurer

dpkg --unpack package.deb

ex :

# dpkg -l | grep console-data
# dpkg --unpack console-data_2%3a1.12-5_all.deb
Sélection du paquet console-data précédemment désélectionné.
(Lecture de la base de données... 182952 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de console-data_2%3a1.12-5_all.deb ...
Dépaquetage de console-data (2:1.12-5) ...
# dpkg -l | grep console-data
iU  console-data      2:1.12-5      all          keymaps, fonts, charset maps, fallback tables for 'kbd'.

 

Configurer un paquet dépaqueté

dpkg --configure package

ex :

# dpkg -l | grep console-data
iU  console-data      2:1.12-5      all          keymaps, fonts, charset maps, fallback tables for 'kbd'.
# dpkg --configure console-data
Paramétrage de console-data (2:1.12-5) ...
# dpkg -l | grep console-data
ii  console-data      2:1.12-5      all          keymaps, fonts, charset maps, fallback tables for 'kbd'.

 

Reconfigurer un paquet installé (dépaqueté et configuré)

dpkg-reconfigure package

 

Savoir si un paquet est installé

dpkg --get-selections | grep -w ^package[^-]

ex :

# dpkg --get-selections | grep -w ^console-data[^-]
console-data      install

 

Tester si un programme est installé et l’installer le cas échéant

[[ -z $(dpkg --get-selections | grep -w ^package[^-]) ]] && apt-get install package

ou

[[ -z `dpkg --get-selections | grep -w ^package[^-]` ]] && apt-get install package

ex :

# [[ -z $(dpkg --get-selections | grep -w ^console-data[^-]) ]] && apt-get install console-data

 

Ne pas installer un paquet si une version plus récente est déjà installée

dpkg -G -i package.deb

ou

dpkg --refuse-downgrade -i package.deb

 

Ne pas installer un paquet si la même version de ce dernier est déjà installée

dpkg -E -i package.deb

 

Vérifier l'intégrité des paquets installés

Tout d'abord une vérification de la base de données des paquets.
Puis une vérification de l'intégrité des paquets à partir des métadonnées de la base de données.

dpkg -C
dpkg -V

ex :

# dpkg -C
# dpkg -V
??5?????? c /etc/sudoers
??5?????? c /etc/bash.bashrc
??5?????? c /etc/host.conf

Les 3 fichiers ci-dessus ne passent pas le test du check MD5 car ces fichiers de configuration ont été modifiés depuis leur version initiale.

 

Extraire le contenu d'un paquet Debian

Extraction dans un dossier de sortie, sans affichage des fichiers extraits sur la sortie standard.

dpkg -x package.deb directory/

Extraction dans un dossier de sortie, avec affichage des fichiers extraits sur la sortie standard.

dpkg -X package.deb directory/

ex :

# dpkg -X htop_2.0.2-1_amd64.deb sortie/
./
./usr/
./usr/bin/
./usr/bin/htop
./usr/share/
./usr/share/applications/
./usr/share/applications/htop.desktop
./usr/share/doc/
./usr/share/doc/htop/
./usr/share/doc/htop/AUTHORS
./usr/share/doc/htop/README
./usr/share/doc/htop/changelog.Debian.gz
./usr/share/doc/htop/changelog.gz
./usr/share/doc/htop/copyright
./usr/share/man/
./usr/share/man/man1/
./usr/share/man/man1/htop.1.gz
./usr/share/pixmaps/
./usr/share/pixmaps/htop.png
# tree sortie/
sortie/
└── usr
    ├── bin
    │   └── htop
    └── share
        ├── applications
        │   └── htop.desktop
        ├── doc
        │   └── htop
        │       ├── AUTHORS
        │       ├── changelog.Debian.gz
        │       ├── changelog.gz
        │       ├── copyright
        │       └── README
        ├── man
        │   └── man1
        │       └── htop.1.gz
        └── pixmaps
            └── htop.png

9 directories, 9 files
Fermer le menu
%d blogueurs aiment cette page :