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 is a tool to install, build, remove and manage Debian packages. The primary and more user-friendly front-end for dpkg is aptitude(8). dpkg itself is controlled entirely via command line parameters, which consist of exactly one action and zero or more options. The action-parameter tells dpkg what to do and options control the behavior of the action in some way.
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.
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.
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
Note: Some configuration files might be unknown to dpkg because they are created and handled separately through the configuration scripts. In that case, dpkg won't remove them by itself, but the package's postrm script (which is called by dpkg), has to take care of their removal during purge. Of course, this only applies to files in system directories, not configuration files written to individual users' home directories.
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.
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: This command makes use of both the available file and the package selections.
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: This command makes use of both the available file and the package selections.
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.
When used with --robot, the output will be the program version number in a dotted numerical format, with no newline.
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 « # ».
Number Description 1 Generally helpful progress information 2 Invocation and status of maintainer scripts 10 Output for each file processed 100 Lots of output for each file processed 20 Output for each configuration file 200 Lots of output for each configuration file 40 Dependencies and conflicts 400 Lots of dependencies/conflicts output 10000 Trigger activation and processing 20000 Lots of output regarding triggers 40000 Silly amounts of output regarding triggers 1000 Lots of drivel about e.g. the dpkg/info dir 2000 Insane amounts of drivel
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(*) : Installe 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: Allow automatic installs, upgrades or removals of packages even when marked to be on “hold”. Note: This does not prevent these actions when requested explicitly.
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: Remove, even if the package is considered protected (since dpkg 1.20.1). Protected packages contain mostly important system boot infrastructure. Removing them might cause the whole system to be unable to boot, so use with caution.
remove-essential : supprimer un paquet même s'il est considéré comme indispensable. Les paquets « Essential » comportent les commandes Unix les plus fondamentales et les enlever peut casser le système entier. Il faut 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 gère pas 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é.
Be sure to give --no-act before the action-parameter, or you might end up with undesirable results. (e.g. dpkg --purge foo --no-act will first purge package “foo” and then try to purge package ”--no-act”, even though you probably expected it to actually do nothing).
Note: Front-ends might call dpkg several times per invocation, which might run the hooks more times than expected.
Warning: Take into account that depending on the excluded paths you might completely break your system, use with caution.
The glob patterns use the same wildcards used in the shell, were ‘*’ matches any sequence of characters, including the empty string and also ‘/’. For example, «/usr/*/READ*» matches «/usr/share/doc/package/README». As usual, ‘?’ matches any single character (again, including ‘/’). And ‘[’ starts a character class, which can contain a list of characters, ranges and complementations. See glob(7) for detailed information about globbing. Note: The current implementation might re-include more directories and symlinks than needed, to be on the safe side and avoid possible unpack failures; future work might fix this.
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 géré actuellement est rpm, qui consiste en une ligne par chemin dont la vérification a échoué. Les lignes débutent par 9 caractères pour signaler les résultats d'une vérification spécifique, un « ? » implique que la vérification ne peut être réalisée (absence de prise en charge, droit d'accès de fichier, etc), « . » implique que la vérification est passée et un caractère alphanumérique implique qu'une vérification spécifique a échoué ; l'échec de vérification md5sum est identifiée par un « 5 » en troisième caractère. La ligne continue par une espace et un caractère d'attribut (comme « c » pour conffiles – fichiers de configuration), une autre espace et le nom de chemin.
The only currently supported command is --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> myselections
You might transfer this file to another computer, and after having updated the available file there with your package manager frontend of choice (see <https://wiki.debian.org/Teams/Dpkg/FAQ> for more details), for example:
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 <myselections
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), and 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-09-13 | 1.20.13 |