dpkg (pour Debian package) est l'outil de bas niveau gérant les paquets des distributions basées sur Debian. Indispensable au bon fonctionnement d'Ubuntu, cet outil est intégré de base dans toutes ses versions et variantes.
Utilisable en ligne de commande, il est chargé de l'installation, 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.
À la différence de la commande apt-get, de la Logithèque, ou de GDebi, dpkg est un outil qui ne gère pas les dépendances. Ainsi en cas de conflit ou bien lorsque seuls certains paquets impliquant trop de dépendances font défaut, l'utilisation de cet outil devient presque indispensable. Synaptic et d'autres gestionnaires de paquets utilisent justement cet outil pour résoudre certains problèmes caractéristiques.
Il permet donc de 'jouer' sur un seul paquet (installation, suppression, reconfiguration ) sans bouleverser les dépendances.
Parmi ses autres fonctions, dpkg permet aussi d'avoir des informations précises telles que l'état ou la description détaillée, des paquets disponibles.
Quelques commandes utilisées pour installer les paquets:
sudo dpkg -i <paquet.deb>
sudo dpkg -i -R *.deb
dpkg ne gère pas les dépendances, il faut ensuite, pour compléter l'installation d'une application possédant des dépendances, exécuter dans un terminal la commande:
sudo apt-get -f install
Cette commande installera les dépendances. et terminera l'installation du programme.
Créer un dossier et se placer à l'intérieur. ( mon_dossier_qui_va_bien ) par exemple.
Installer les paquets avec dpkg-deb :
for i in [chemin vers **mon_dossier_qui_va_bien**]/DEBS/*.deb; do dpkg-deb -x $i . ; done
Tout se retrouve à l'intérieur de mon_dossier_qui_va_bien, chercher les exécutables pour lancer/faire des raccourcis vers les programmes.
sudo dpkg -r nom_du_paquet
L'option -r ou --remove supprime le (ou les) paquet(s) indiqué(s) mais pas les fichiers de configuration associés au(x) paquet(s).
sudo dpkg -P nom_du_paquet
L'option -P ou --purge permet de supprimer les fichiers de configuration associés en même temps que le paquet indiqué.
sudo apt -y purge ` dpkg -l | grep "^rc" | awk '{print $2}' `
supprime tous les paquets avec les options rc (remove et config-files, cf. plus bas la signification)
sudo dpkg --force-all --purge nom_du_paquet
L'usage des options --force-all et --purge permet de forcer la désinstallation du paquet et de supprimer les fichiers de configuration associés.
dpkg -l chaîne
L'option -l, ou --list, effectue une recherche et affiche une liste des paquets satisfaisant un motif de recherche.
dpkg -S fichier
L'option -S, ou --search, affiche tous les paquets contenant le fichier indiqué en tant que critère de recherche.
utiliser dpkg -l comme ci-dessus conduit à une liste très longue. Si vous souhaitez simplement vérifier la présence d'un paquet ajouter tout ou partie du nom du paquet éventuellement suivi (voir précédé) de * :
dpkg -l nom_du_paquet
exemple :
dpkg -l *office*
liste tous les paquets liés à libreoffice et openoffice
Les deux premiers caractères à gauche vous donnent des indications sur l'état du paquet Première colonne : souhait i : Install (à installer) r : Remove (à supprimer) u : Unknown (inconnu) p : Purge (à supprimer avec les fichiers de configuration) h : Hold (à conserver) Seconde colonne : état i : Installed (installé) c : Config-files (fichier(s) de configuration existant) u : Unpacked (dé-compressé) n : Not Installed (non installé) f : Failed-config (problème de configuration) h : Half-installed (installé partiellement)
pkg-config permet, notamment pour les développeurs, de récupérer le chemin où a été installé une librairie. Ainsi, si on tape en ligne de commande:
pkg-config --cflags --libs libpng
cela retourne :
-I/usr/include/libpng12 -lpng12
qui correspond à la syntaxe pour inclure cette librairie pour la compiler et la lier à un programme avec le compilateur gcc
L'utilisation classique est donc:
gcc -o test test.c $(pkg-config --libs --cflags libpng)
Ces informations sont contenues dans des fichiers .pc recherchés dans différents répertoires, voici comment savoir où:
pkg-config --variable pc_path pkg-config
man dpkg