{{tag>Focal administration système apt}}
====== dpkg : le gestionnaire de paquets bas niveau de Ubuntu ======
**dpkg** (pour **D**ebian **p**ac**k**a**g**e) 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 [[commande_shell|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 [[:depots|dépôts APT]].
===== Utilisation =====
À la différence de la commande [[:apt-get]], de la [[:gnome-software|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 [[:gestionnaire de paquets|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.
==== Installation de paquets====
Quelques [[:commande_shell|commandes]] utilisées pour installer les paquets:
* L'option %%-i%%, ou %%--install%%, installe le ou les paquets indiqués, au format .deb. sudo dpkg -i
* L'option %%-R%%, ou %%--recursive%% (associée à %%-i%%), installe tous les paquets se trouvant dans le répertoire de travail et ses sous-répertoires: 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_shell|commande]]:sudo apt-get -f install
Cette [[:commande_shell|commande]] installera les dépendances. et terminera l'installation du programme.
==== Installer un programme dans un dossier spécifique à partir de paquets standards====
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.
==== Suppression ====
* 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.
Cette dernière commande est utile, mais risquée, et permet de forcer la suppression d'un paquet et, normalement, celle de ses fichiers de configuration (sauf, notamment, si on en a modifié ou ajouté...) quand par la méthode normale cela bloque les processus de gestion apt.
==== Lister ====
* 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.
==== Vérifier la présence d'un paquet ====
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 ====
[[wpfr>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 [[:tutoriel/console_ligne_de_commande|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
===== Références =====
* le manpage : man dpkg
* [[http://manpages.ubuntu.com/manpages/precise/fr/man1/dpkg-deb.1.html|Le manpage Ubuntu]]
* [[http://plfnicolarius.free.fr/tutoriel_logiciel_outils_gestion_paquets_debian.php|Outils de gestion des paquets sous Debian et Ubuntu]]
----
//
Contributeurs : [[utilisateurs:ste]] ; [[utilisateurs:mimilus]]//