dpkg(1) | dpkg suite | dpkg(1) |
dpkg - Gestionnaire de paquet pour Debian
dpkg [option...] action
Ce manuel est destiné aux utilisateurs qui souhaitent aller au-delà de la commande dpkg --help pour la compréhension des options de la ligne de commande et des états des paquets.
Les responsables de paquet qui veulent comprendre comment dpkg installe leur paquet ne doivent pas l'utiliser. Les descriptions concernant l'installation ou la désinstallation des paquets sont très insuffisantes.
dpkg est un outil de niveau intermédiaire pour l'installation, la création, la suppression et la gestion des paquets Debian. La principale interface à dpkg et la plus agréable pour l'utilisateur est, en ligne de commande (CLI) apt(8) et comme environnement en mode texte (TUI), aptitude(8). dpkg lui-même est entièrement contrôlé par des paramètres sur la ligne de commande. Une commande comporte exactement une action et zéro ou plusieurs options. Le paramètre « action » dit ce que dpkg doit faire et les options modifient l'action d'une manière ou d'une autre.
dpkg peut également être utilisé comme interface pour dpkg-deb(1) et dpkg-query(1). La liste des actions gérées est indiquée dans la section ACTIONS. Si cette section est présente, dpkg n'exécute que dpkg-deb ou dpkg-query avec les paramètres qui lui sont passés, mais aucune action spécifique ne leur est communiquée. Pour utiliser cela, il est nécessaire d'appeler le programme directement.
dpkg conserve des renseignements utiles sur les paquets disponibles. Cette information est divisée en trois classes : les états, les états de la sélection et les drapeaux. La modification de ces valeurs est principalement dévolue à dselect.
L'installation comporte les étapes suivantes :
1. Extraction des fichiers de contrôle du nouveau paquet.
2. Quand une ancienne version du même paquet est déjà installée, exécution du script prerm de l'ancien paquet.
3. Lancement du script preinst, s'il est fourni par le paquet.
4. Dépaquetage des nouveaux fichiers et, en même temps, sauvegarde des anciens de manière à pouvoir les restaurer si quelque chose tourne mal.
5. Quand une ancienne version du même paquet est déjà installée, exécution du script postrm de l'ancien paquet. Il faut remarquer que ce script est exécuté après le script preinst du nouveau paquet, parce que les nouveaux fichiers sont écrits dans le même temps que les anciens sont supprimés.
6. Configuration du paquet. Voyez l'action --configure pour savoir comment cela se passe.
Cela traitera une action différée pour Pre-Depends à moins que --no-triggers a été spécifié.
Pour reconfigurer un paquet qui l'a déjà été, vous devriez plutôt utiliser la commande dpkg-reconfigure(8).
La configuration comporte les étapes suivantes :
1. Dépaquetage des fichiers de configuration, et dans le même temps sauvegarde des anciens fichiers de configuration, de manière à pouvoir les restaurer si quelque chose se passe mal.
2. Exécution du script postinst, s'il est fourni par le paquet.
Cela traitera une action différée à moins que --no-triggers a été spécifié.
La suppression d'un paquet comporte les étapes suivantes :
1. Lancement du script prerm
2. Suppression des fichiers installés
3. Lancement du script postrm
Cela traitera une action différée à moins que --no-triggers a été spécifié.
Note : certains fichiers de configuration peuvent être inconnus de dpkg, car ils sont créés et gérés séparément par le biais de scripts de configuration. En ce cas, dpkg ne les supprimera pas lui-même et le script postrm du paquet devra s'en charger durant l'opération de purge. Cela ne s'applique bien entendu qu'aux fichiers situés dans les répertoires systèmes et non aux fichiers de configuration créés dans les répertoires « home » des utilisateurs.
La suppression d'un paquet comporte les étapes suivantes :
1. Supprime le paquet s'il n'est pas déjà supprimé. Voir --remove pour plus de détails sur la façon dont cela est fait.
2. Exécuter le script postrm.
Cela traitera une action différée à moins que --no-triggers a été spécifié.
Actuellement la seule vérification fonctionnelle effectuée est une comparaison des sommes de contrôle MD5 du contenu des fichier par rapport aux valeurs stockées dans la base de données des fichiers. La vérification n'a lieu que si la base de données contient les informations nécessaires. Pour vérifier si des métadonnées manquent dans la base de données, la commande --audit peut être employée.
On peut choisir le format de sortie avec l'option --verify-format, par défaut c'est le format rpm, mais cela pourrait changer dans le futur, et selon le format que les programmes analysant cette sortie de commande pourraient explicitement attendre.
Une simple commande permettant de récupérer et mettre à jour le fichier available est dselect update. Veuillez noter que ce fichier est à peu près inutile si vous n'utilisez pas dselect mais une interface basée sur APT. APT contient en effet son propre mécanisme pour suivre les paquets disponibles.
Le fichier available doit être à jour pour que cette commande soit utile, autrement des paquets inconnus seront ignorés avec un avertissement. Veuillez consultez les commandes --update-avail et --merge-avail pour plus d'informations.
Note : cette commande utilise à la fois le fichier disponible et les sélections de paquets.
Si un tel paquet est présent, l'affiche comme entrée du fichier Packages, et il peut être manipulé comme il se doit.
Note : cette commande utilise à la fois le fichier disponible et les sélections de paquets.
Renvoie 0 si un paquet est affiché, 1 quand il n'y a pas de paquet adéquat disponible et 2 en cas d'erreur.
Lorsque c'est utilisé avec --robot, la sortie est le numéro de version du programme un format numérique à points de séparation, sans saut de ligne.
On peut spécifier toutes les options à la fois sur la ligne de commande, dans le fichier de configuration de dpkg, /etc/dpkg/dpkg.cfg ou dans les fragments de fichiers du répertoire de configuration /etc/dpkg/dpkg.cfg.d/ (avec un nom qui respecte le motif « [0-9a-zA-Z_-]* »). Chaque ligne de ce fichier est soit une option (identique à une option en ligne de commande mais sans tirets initiaux), soit un commentaire, commençant par « # ».
nombre description 1 Informations de progression en général utiles 2 Appel et état des scripts du responsable 10 Affichage pour chaque fichier traité 100 De nombreux affichages pour chaque fichier traité 20 Affichage pour chaque fichier de configuration 200 De nombreux affichages pour chaque fichier de configuration 40 Dépendances et conflits 400 De nombreuses sorties pour les dépendances et les conflits 10000 Sortie sur l'activation et le traitement des actions différées 20000 De nombreuses sorties sur les actions différées 40000 Quantité stupide de sorties sur les actions différées 1000 Beaucoup de radotage à propos, par exemple, du répertoire dpkg/info 2000 Quantité stupide de radotage
Avertissement : ces options sont principalement destinées aux experts. Un usage auquel manque la pleine compréhension de leurs effets peut casser le système entier.
all : Met en œuvre (ou pas) toutes les options de forçage.
downgrade(*) : installer un paquet, même si une version plus récente du paquet est déjà installée.
Avertissement : pour l'instant, dpkg ne recherche pas les dépendances lors d'un retour à une version inférieure d'un paquet ; il ne vous préviendra pas si la version choisie casse les dépendances d'un autre paquet. Cela peut avoir de sérieuses conséquences ; et si l'on revient à des versions antérieures des programmes essentiels du système, cela peut rendre votre système inutilisable. N'utiliser qu'avec précaution.
configure-any : configurer aussi les paquets dépaquetés mais non configurés dont dépend le paquet en question.
hold : Permettre les installations automatiques, les mises à niveau ou les retraits de paquets même s'ils sont marqués « à garder » (« hold »). Note : quand ces actions sont requises de façon explicite, le statut de sélection du paquet « hold » reste toujours ignoré.
remove-reinstreq : supprimer un paquet, même défectueux et marqué comme demandant une réinstallation. Il se peut, dès lors, que des éléments du paquet restent dans le système et soient oubliés par dpkg.
remove-protected : supprimer un paquet même s'il est considéré comme protégé (depuis dpkg 1.20.1). Les paquets protected comportent essentiellement l'infrastructure importante d'amorçage du système ou sont utilisés pour des méta-paquets personnalisés personnalisés du système local. Les enlever peut rendre le système entièrement incapable de démarrer ou entraîner la perte de fonctions requises pour son fonctionnement. Il faut donc utiliser cette option avec prudence.
remove-essential : supprimer un paquet même s'il est considéré comme indispensable. Les paquets « Essential » comportent les commandes Unix les plus fondamentales nécessaires pour le système d'empaquetage, pour le fonctionnement du système en général ou pendant l'amorçage (même si ces dernières devraient être plutôt converties en paquets protégés). Enlever ces paquets peut casser le système entier, il faut donc utiliser cette option avec prudence.
depends : changer tous les problèmes de dépendance en avertissements. Cela affecte les champs Pre-Depends et Depends.
depends-version : ignorer les versions dans les questions de dépendance.Cela affecte les champs Pre-Depends et Depends.
breaks : forcer l'installation, même si cela risque de casser un autre paquet (depuis dpkg 1.14.6). Cela affecte le champ Breaks.
conflicts : installer un paquet, même s'il est en conflit avec un autre paquet. C'est dangereux, car habituellement cela produit le remplacement de certains fichiers. Cela affecte le champ Conflicts.
confmiss : toujours installer le fichier de configuration manquant sans rien demander. Cette opération est dangereuse, puisque les changements apportés au fichier ne seront pas préservés (suppression).
confnew : quand un fichier de configuration a été modifié et que la version dans le paquet a changé, toujours installer la nouvelle version sans rien demander, sauf si l'option --force-confdef est aussi présente, auquel cas l'action par défaut est choisie.
confold : quand un fichier de configuration a été modifié et que la version du paquet a changé, garder l'ancienne version sans rien demander, sauf si l'option --force-confdef est aussi présente, auquel cas l'action par défaut est choisie.
confdef : quand un fichier de configuration a été modifié et que la version du paquet a changé, utilise toujours l'action par défaut, de manière non interactive. Quand il n'y a pas d'action par défaut, la commande s'arrête et interroge l'utilisateur, à moins que l'option --force-confnew ou l'option --force-confold n'ait été donnée, auquel cas elle se sert de ces options pour déterminer ce qu'il faut faire.
confask : si un fichier de configuration a été modifié, propose de le remplacer avec la version du paquet, même si celle-ci n'a pas changé (depuis dpkg 1.15.8). Si l'une des options --force-confmiss, --force-confnew, --force-confold, ou --force-confdef est également mentionnée, elle déterminera l'action finalement utilisée.
overwrite : remplacer un fichier par un fichier d'un autre paquet.
overwrite-dir : remplacer un répertoire d'un paquet par le fichier d'un autre paquet.
overwrite-diverted : remplacer un fichier détourné avec une version non détournée.
statoverride-add : remplacer une dérogation d'état existante lors de son ajout (depuis dpkg 1.19.5)
statoverride-remove : ignorer l'absence de dérogation d'état lors de sa suppression (depuis dpkg 1.19.5).
security-mac(*) : utiliser une sécurité basée sur le contrôle d'accès obligatoire (Mandatory Access Controls – MAC) spécifique à la plateforme lors de l'installation de fichiers dans le systèmes de fichiers (depuis dpkg 1.19.5). Sur les systèmes Linux, la mise en œuvre utilise SELinux.
unsafe-io : ne pas effectuer d'action d'entrée/sortie non sûre lors de la décompression (depuis dpkg 1.15.8.6). Cela implique actuellement de ne pas synchroniser le système de fichiers avant le renommage de fichiers, ce qui est une cause connue de dégradation des performances sur certains systèmes, en général ceux qui, peu fiables, ont besoin d'actions sûres pour éviter de terminer avec des fichiers de taille vide en cas d'interruption inopinée.
Note : pour ext4, le principal concerné, il est suggéré de plutôt utiliser l'option de montage nodelalloc, qui corrigera à la fois la dégradation des performances et les problèmes de sécurité des données. Elle permet notamment d'éviter de terminer avec des fichiers vides lors des arrêts brutaux pour tout logiciel qui ne synchronise pas le système de fichiers avant chaque renommage.
Avertissement : l'utilisation de cette option peut améliorer la performance mais augmente le risque de perte de données. Elle est donc à utiliser avec précautions.
script-chrootless : exécuter les scripts du responsable sans créer de chroot(2) dans instdir même si le paquet ne prend pas en charge ce mode d'opération (depuis dpkg 1.18.5).
Avertissement : cela peut détruire le système hôte, utilisez avec des précautions extrêmes.
architecture : traiter même les paquets sans architecture ou avec une architecture incorrecte.
bad-version : traiter même les paquets dont la version est incorrecte (depuis dpkg 1.16.1).
bad-path : programmes importants non visibles par la variable PATH, ce qui va poser des problèmes.
not-root : tenter de (dés)installer même sans être root.
bad-verify : installer un paquet même si la vérification de son authenticité a échoué.
Assurez-vous de donner l'option --no-act avant le paramètre action, sinon des résultats fâcheux sont probables. Par exemple, la commande dpkg --purge toto --no-act purge d'abord le paquet toto et essaie ensuite de purger le paquet --no-act, même si vous comptiez qu'elle ne ferait rien du tout.
Depuis dpkg 1.21.10, l'architecture est aussi prise en compte, ce qui rend possible la mise à jour croisée de paquets ou d'installer des instances supplémentaires co-installables avec la même version, mais avec une architecture différente.
Note : les interfaces de dpkg peuvent l'appeler plusieurs fois à chaque invocation, ce qui peut provoquer l'exécution des « hooks » plus souvent que prévu.
Attention : dépendre des chemins exclus peut entièrement casser le système. Ce réglage doit donc être utilisé avec précautions.
Les motifs globaux utilisent les mêmes caractères joker que le shell où « * » correspond à une séquence quelconque de caractères, y compris une chaîne vide ou le caractère « / ». Ainsi, « /usr/*/READ* » comportera « /usr/share/doc/package/README ». Comme toujours, le caractère « ? » correspond à un caractère quelconque (y compris « / »). Le caractère « [ » marque le début d'une classe de caractères, qui contient une liste de caractères, séries de caractères ou compléments de séries. Veuillez consulter glob(7) pour plus d'informations à propos des correspondances globales. Note : l'implémentation actuelle pourrait ré-inclure plus de répertoires et liens symboliques que nécessaire, en particulier s'il y a une ré-inclusion plus spécifique, par souci de sécurité et pour éviter des échecs possibles de décompression. Des modifications à venir pourraient corriger cela.
Cela peut servir à exclure tous les chemins sauf certains spécifiques. Un cas classique d'utilisation est :
--path-exclude=/usr/share/doc/* --path-include=/usr/share/doc/*/copyright
qui permet de supprimer tous les fichiers de documentation sauf les fichiers de « copyright ».
Ces deux options peuvent être utilisées plusieurs fois et éventuellement être alternées entre elles. Les deux sont traitées dans l'ordre indiqué : la dernière règle correspondant à un fichier donné est alors celle qui sera utilisée.
Les filtres sont appliqués lors du dépaquetage des paquets binaires et, en tant que tel, ont seulement connaissance du type des objets qui sont en cours de filtrage (par exemple un fichier ordinaire ou un répertoire) et n'ont pas de visibilité des objets à venir. Comme ces filtres ont des effets secondaires (à la différence des filtres de find(1)), l'exclusion d'un chemin précis qui se trouve être un objet répertoire, comme /usr/share/doc, n'aura pas le résultat désiré, et seul ce chemin sera exclu (et qui pourrait être réintégré automatiquement si le code en voit la nécessité).Le dépaquetage de tous les fichiers suivants renfermés par ce répertoire échouera.
Astuce : Assurez-vous que les « globs » ne sont pas développés par le shell.
Le seul format de sortie pris en charge actuellement est rpm, qui consiste en une ligne par chemin dont la vérification a échoué. Ces lignes ont le format suivant :
missing [c] chemin
[(message-erreur)]
??5?????? [c] chemin
Les neufs premier caractères sont utilisés pour rapporter le résultat des vérifications, soit un missing littéral quand le fichier n'est pas présent ou quand ses métadonnées ne peuvent être obtenues, ou un des caractères spéciaux suivants qui rapportent le résultat de chacune des vérifications :
La ligne est suivie d'un espace et d'un caractère d'attribut. Le caractère d'attribut suivant est pris en charge :
suivi finalement d'une autre espace et du nom de chemin.
Dans le cas où l'entrée était de type missing et où le fichier n'était pas vraiment présent dans le système de fichiers, alors la ligne est suivi par une espace et le message d'erreur entre parenthèse.
La seule commande prise en charge actuellement est --version.
Les autres fichiers répertoriés ici sont dans leur répertoire par défaut, voyez l'option --admindir pour savoir comment changer l'emplacement de ces fichiers.
Le fichier d'état est sauvegardé quotidiennement dans /var/backups. Cela peut être utile en cas de perte ou de corruption due à des problèmes de système de fichiers.
Le format et le contenu d'un paquet binaire sont décrits dans deb(5).
L'option --no-act ne donne pas assez d'informations utiles.
Affichage des paquets installés liés à l'éditeur vi(1) (noter que dpkg-query ne charge plus le fichier available par défaut, sauf si l'option dpkg-query --load-avail est utilisée) :
dpkg -l '*vi*'
Pour voir les entrées de /var/lib/dpkg/available concernant deux paquets :
dpkg --print-avail elvis vim | less
Pour rechercher vous-même dans la liste des paquets :
less /var/lib/dpkg/available
Pour supprimer le paquet installé elvis :
dpkg -r elvis
Pour installer un paquet, vous devez d'abord le trouver dans une archive ou sur un CD. Le fichier available montre que le paquet vim se trouve dans la section « editors » :
cd /media/cdrom/pool/main/v/vim dpkg -i vim_4.5-3.deb
Pour faire une copie locale des états de sélection des paquets :
dpkg --get-selections> mes-sélections
Vous pourriez transférer ce fichier sur un autre ordinateur, et après avoir mis à jour le fichier available avec l'interface de gestion de paquets de votre choix (voir <https://wiki.debian.org/Teams/Dpkg/FAQ#set-selections> pour plus de détails), par exemple :
apt-cache dumpavail | dpkg --merge-avail
ou avec dpkg 1.17.6 et les versions antérieures :
avail=$(mktemp) apt-cache dumpavail> "$avail" dpkg --merge-avail "$avail" rm "$avail"
vous pouvez l'installer de cette manière :
dpkg --clear-selections dpkg --set-selections <mes-sélections
On remarquera que cela n'installe ou ne supprime rien du tout ; cela ne fait qu'enregistrer l'état souhaité des paquets. Vous aurez besoin d'autres applications pour récupérer et installer réellement les paquets requis. Par exemple, exécuter apt-get dselect-upgrade.
Habituellement, vous trouverez que dselect(1) fournit une façon plus aisée de modifier les états de sélection des paquets.
D'autres possibilités sont offertes en installant les paquets suivants : apt, aptitude et debsums.
aptitude(8), apt(8), dselect(1), dpkg-deb(1), dpkg-query(1), deb(5), deb-control(5), dpkg.cfg(5) et dpkg-reconfigure(8).
Consultez /usr/share/doc/dpkg/THANKS pour la liste de ceux qui ont contribué à dpkg.
Ariel VARDI <ariel.vardi@freesbee.fr>, 2002. Philippe Batailler, 2006. Nicolas François, 2006. Veuillez signaler toute erreur à <debian-l10n-french@lists.debian.org>.
2023-05-11 | 1.21.22 |