Apparence
Uubu.fr

Les systèmes Linux, l’open source, les réseaux, l’interopérabilité, etc.
« Il vaut mieux viser la perfection et la manquer que viser l’imperfection et l’atteindre. » (Bertrand Arthur William RUSSEL)
15 mars 2010

package manager apt           gestionnaire de paquets


dpkg

dpkg

Manipulation des paquets deb

   dpkg ne gère pas les dépôts, ni ne télécharge de paquet. Son rôle est de gérer les paquets deb. Cet outils est principalement utilisé par apt-get et aptitude pour installer ou supprimer des programmes. Il sert également, via dpkg-deb, à manipuler des paquets, extraire des fichiers, obtenir des informations sur un paquet ou créer un paquet. dpkg peut agir comme une interface à dpkg-deb. il lance simplement dpkg-deb s'il est lancé avec les options suivantes:

-b, --build
-c, --contents
-I, --info
-f, --field
-e, --control
-x, --extract
-X, --vextract
--fsys-tarfile

Renseignements sur les paquets

   dpkg conserve des renseignements utiles sur les paquets disponibles.

État des paquets

not-installed le paquet n'est pas installé
config-files seules les fichiers de configuration du paquet existent sur le système
half-installed l'installation du paquet a commencé mais ne s'est pas terminé
unpacked Le paquet est dépaqueté mais n'est pas configuré
half-configured Le paquet est dépaqueté et la configuration a commencé mais ne s'est pas terminée
triggers-pending Une action différée de ce paquet a été activé, il reste à l'exécuter
installed Le paquet est installé ETAT DE LA SELECTION DES PAQUETS
install Le paquet est sélectionné pour être installé
hold dpkg laisse de côté ce paquet à moins qu'il ne soit lancé avec --force-hold
deinstall Le paquet est sélectionné pour désinstallation (sauf ses fichiers de configuration)
purge Le paquet est sélectionné pour désinstallation complète DRAPEAU DES PAQUETS
reinst-required Paquet défectueux et demande une réinstallation. dpkg ne peut pas le supprimer sauf en spécifiant l'option --force-remove-reinstreq

Étapes des opérations

   lors de l'installation d'un paquet, dpkg procède comme suit:

1. extraction des fichiers de contrôle du paquet
2. si une ancienne version est déjà installé, exécution du script prerm de l'ancien paquet
3. lancement du script preinst, s'il est fournit
4. dépaquetage des nouveaux fichiers et sauvegarde des anciens de manière à pouvoir les restaurer en cas de problème.
5. Si une ancienne version existe, exécution du script postrm
6. configuration du paquet.

   Lors de la configuration d'un paquet, dpkg procède comme suit:

1. dépaquetage des fichiers de configuration et sauvegarde des ancienne
2. exécution du script postinst s'il est fourni

   Lors de la suppression d'un paquet, dpkg procède comme suit:

1. Lancement du script prerm
2. suppression des fichiers installés
3. lancement du script postrm

Actions

-i, --install installe le paquet. avec --recursive ou -R on doit indiquer un dossier
--unpack Dépaquète le paquet, mais ne configure rien. avec --recursive indiquer une répertoire.
--configure paquet -a|--pending Reconfiguration d'un paquet installé. avec -a ou --pending, tous les paquets installés mais non configurés sont configurés.
--triggers-only paquet .... -a|--pending N'exécute que les actions différées de ces paquets
-r, --remove, -P, --purge paquet -a|--pending supprime un paquet installé. Les fichiers de configuration sont les fichiers répertoriés dans le fichier de contrôle debian/conffiles. l'option -a ou --pending, tous les paquets non dépaquetés mais qui sont marqués comme devant être supprimés ou purgés dans le fichier /var/lib/dpkg/status sont supprimés ou purgés.
--update-avail, --merge-avail fichier-Paquets met à jour l'information de dpkg et de dselect sur les paquets disponibles. --merge-avail combine les information anciennes avec celles qui proviennent de fichier-Paquets. --update-avail remplace les informations anciennes par celles du fichier-Paquets. Ce fichier distribué par Debian est appelé Packages. dpkg garde son propre enregistrement des paquets disponibles dans /var/lib/dpkg/available. Ce fichier n'est utile que pour dselect, pas pour APT.
-A, --record-avail fichier-paquet met à jour l'information de dpkg et dselect sur les paquets disponibles avec les informations qui proviennent de fichier-paquet. --recursive ou -R pour indiquer un répertoire
--clear-avail Efface les renseignements existants sur les paquets disponibles.
-C, --audit Recherche les paquets qui n'ont été que partiellement installés sur le système. dpkg suggère une manière de les faire fonctionner
--get-selections [motif-nom-paquet] Obtient la liste des sélections des paquets, et l'envoie sur la sortie standard. Sans un motif, les paquets non installés (c'est à dire ceux qui ont été précédemment purgés) ne seront pas affichés.
--set-selections modifie la liste des sélections des paquets en lisant un fichier sur l'entrée standard. Le format de ce fichier doit être de la forme ‹paquet› ‹état›, où état vaut install, hold, deinstall ou purge. Les lignes vides ou les lignes de commentaires débutant par # sont autorisées.
--clear-selections Met l'état de chaque paquet non essentiel à deinstall. Il faut utiliser cette option juste avant --set-selections, pour désinstaller les paquets qui ne sont pas affichés par --set-selections.
--yet-to-unpack Recherche les paquets qui ont été sélectionnés pour l'installation, mais qui pour une raison quelconque, ne sont pas encore installés.
--print-architecture Affiche l'architecture des paquets installés
--compare-versions ver1 op ver2 Compare des numéros de version, où op est un opérateur binaire. dpkg retourne un zéro si la condition spécifiée est vérifiée. Il y a deux groupes d'opérateurs ; Pour lt le eq ne ge gt, l'absence d'une version est considérée comme inférieure à toute version ; pour lt-nl le-nl ge-nl gt-nl, l'absence d'une version est considérée comme supérieure à toute version. Les opérateurs ‹ ‹‹ ‹= = ›= ›› › ne sont fournis que pour la compatibilité avec la syntaxe du fichier de contrôle.
--command-fd ‹n› Cette action accepte une série de commandes sur le descripteur du fichier d'entrée ‹n›. Note : des options supplémentaires définies sur la ligne de commande à travers ce descripteur de fichier ne sont pas redéfinies pour les commandes suivantes qui sont exécutées pendant la même séquence.
--help Affiche un court message d'aide.
--force-help Donne des renseignements sur les options --force-quelque-chose.
-D, --debug=help donne des renseignements sur les options de débogage.
--licence, --license Affiche la licence de dpkg.
--version Affiche la version de dpkg.

Actions dpkg-deb

-b, --build répertoire archive Construit un paquet deb.
-c, --contents archive Liste le contenu d'un paquet deb.
-e, --control nom-de-fichier [répertoire] Extrait les informations de contrôle d'un paquet.
-x, --extract ‹répertoire de l'archive› Extrait et affiche les fichiers contenus dans un paquet.
-f, --field nom-de-fichier [champ de contrôle] ... Affiche le(s) champ(s) de contrôle d'un paquet.
--fsys-tarfile archive Affiche le contenu du fichier « tar » d'un paquet Debian.
-I, --info nom-de-fichier [fichier de contrôle] Affiche des renseignements sur un paquet.
dpkg-query actions Voir dpkg-query pour davantage d'explications sur les actions suivantes.
-l, --list motif-du-nom-du-paquet ... Affiche la liste des paquets qui correspondent au motif.
-s, --status nom-du-paquet ... Donne l'état du paquet indiqué.
-L, --listfiles nom-paquet ... Affiche la liste des fichiers installés qui appartiennent à paquet.
-S, --search motif-du-fichier-à-rechercher ... Recherche un fichier dans les paquets installés.
-p, --print-avail nom-du-paquet Affiche les informations trouvées dans /var/lib/dpkg/available à propos de paquet. Les utilisateurs des interfaces à APT devraient plutôt utiliser apt-cache show nom-du-paquet

OPTIONS

   Toutes les options peuvent être spécifiées sur la ligne de commande et dans le fichier de configuration de dpkg /etc/dpkg/dpkg.cfg ou les fichiers de configuration du dossier /etc/dpkg/dpkg.cfg.d/.

--abort-after=nombre Modifie le nombre d'erreurs au delà duquel dpkg s'arrête. Il est par défaut égal à 50.
-B, --auto-deconfigure Quand un paquet est supprimé, il peut arriver qu'un paquet installé dépendait du paquet supprimé. En spécifiant cette option, on obtient la déconfiguration automatique du paquet qui dépendait du paquet supprimé.
-Doctal, --debug=octal Demande de débogage.
--force-quelque-chose, --no-force-quelque-chose, --refuse-quelque-chose Forcer ou refuser (no-force et refuse signifient la même chose) de faire quelque chose. quelque-chose est une liste d'actions séparées par des virgules, décrites ci-après. --force-help affiche un message qui les décrit. Les actions marquées d'un (*) sont forcées par défaut.

        all Met en oeuvre (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.
        configure-any Configure aussi les paquets dépaquetés mais non configurés dont dépend le paquet en question.
        hold Traite même les paquets marqués à garder (hold).
        remove-reinstreq Supprime 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-essential supprime 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 Change tous les problèmes de dépendance en avertissements.
        depends-version Ignore les versions dans les questions de dépendance.
        breaks Force l'installation, même si cela risque de casser un autre paquet.
        conflicts Installe 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.
        confmiss Installe un fichier de configuration manquant. Cette opération est dangereuse, puisque les changements apportés au fichier ne seront pas préservés (suppression).
        confnew Quand un conffile a été modifié, toujours installer la nouvelle version et ne rien demander, sauf si l'option --force-confdef est aussi présente, auquel cas l'action par défaut est choisie.
        confold Quand un conffile a été modifié, garder l'ancienne version et ne rien demander, sauf si l'option --force-confdef est aussi présente, auquel cas l'action par défaut est choisie.
        confdef Utilise toujours l'action par défaut quand un conffile a été modifié. 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.
        overwrite Remplace un fichier par un fichier d'un autre paquet.
        overwrite-dir Remplace un répertoire par un répertoire d'un autre paquet.
        overwrite-diverted Remplace un fichier détourné avec une version non détournée.
        architecture Traite même les paquets d'une autre architecture
        bad-path Programmes importants non visibles par la variable PATH, ce qui va poser des problèmes.
        not-root Tente de (dés)installer même sans être root.
        bad-verify Installe un paquet même si la vérification de son authenticité a échoué.

--ignore-depends=paquet,... Ne tient pas compte de la vérification des dépendances pour les paquets spécifiés (en fait, la vérification est faite mais on ne donne rien d'autre que des avertissements).
--new, --old Sélectionne soit l'ancien format des paquet binaires, soit le nouveau. C'est une option de dpkg-deb.
--nocheck Ne pas lire ni vérifier le contenu du fichier de contrôle pendant la construction d'un paquet. C'est une option de dpkg-deb.
--no-act, --dry-run, --simulate Faire tout ce qui doit être fait, mais n'écrire aucune modification. On utilise cette option pour voir ce qui se passe sans modifier quoi que ce soit. Assurez-vous de donner l'option --no-act avant le paramètre action !
-R, --recursive Traite récursivement tous les simples fichiers qui correspondent au motif *.deb et qui se trouvent dans les répertoires et sous-répertoires spécifiés. On peut utiliser cette option avec les actions -i, -A, --install, --unpack et --avail.
-G Ne pas installer un paquet si une version plus récente de ce paquet est déjà installée. C'est un alias pour --refuse-downgrade.
--admindir=dir Modifie le répertoire d'administration par défaut, qui contient de nombreux fichiers donnant des informations au sujet de l'état des paquets installés ou non, etc. (Le répertoire par défaut étant /var/lib/dpkg)
--instdir=repertoire Change le répertoire d'installation par défaut qui indique où les paquets vont être installés. instdir est aussi le nom du répertoire indiqué à chroot avant que ne soient lancés les scripts d'installation, ce qui signifie que ces scripts voient instdir comme répertoire racine. Le répertoire par défaut est /
--root=répertoire Modifier root change instdir par répertoire et admindir par dir/var/lib/dpkg.
-O, --selected-only Traiter seulement les paquets qui sont sélectionnés pour l'installation. La sélection est réellement faite par dselect ou par dpkg quand ils manipulent les paquets. Par exemple, quand un paquet est supprimé, il est marqué comme ayant été sélectionné pour une désinstallation.
-E, --skip-same-version Ne pas installer le paquet si la même version du paquet est déjà installée.
--pre-invoke=command
--post-invoke=command Set an invoke hook command to be run via “sh -c” before or after the dpkg run
--status-fd n Envoie un état du paquet compréhensible par la machine et met à jour cette information dans le fichier de description n. Cette option peut être spécifiée plusieurs fois. L'information est généralement constituée d'un enregistrement par ligne, dans l'une des formes suivantes:

        status:paquet:status L'état du paquet a changé ; le status est tel que dans le fichier d'état (status file).
        status:paquet:erreur:message-d'erreur-complet Une erreur s'est produite. Malheureusement, lors de l'écriture il se trouve que message-d'erreur-complet peut contenir des retour à la ligne, alors que dans les locales où les traducteurs n'ont pas fait d'erreurs, chaque nouvelle ligne est suivie par au moins une espace.
        status:fichier:conffile-prompt:'real-old' 'real-new' useredited distedited Une question pour un fichier de configuration va être posée à l'utilisateur.
        traitement:stage:paquet Envoyé juste avant le début du traitement d'un stage. Les stages sont upgrade, install (les deux sont envoyés avant le dépaquetage), configure, trigproc, remove, purge.

--log=fichier Enregistre la modification de l'état, la mise à jour ou l'action sur fichier au lieu de l'habituel /var/log/dpkg.log. Si cette option est donnée plusieurs fois, le dernier fichier est utilisé. Les messages d'enregistrement sont de la forme AAAA-MM-JJ HH:MM:SS status ‹état› ‹paquet› ‹version-installée› pour les modifications d'état et les mises à jour. Pour une action, où ‹action› est install, upgrade, remove ou purge, le message est de la forme AAAA-MM-JJ HH:MM:SS ‹action› ‹paquet› ‹version-installée› ‹version-disponible›. Pour une modification de conffile, le message est de la forme AAAA-MM-JJ HH:MM:SS conffile ‹fichier› ‹décision› ou ‹décision› est soit install soit keep.
--no-debsig Ne pas tenter de vérifier la signature des paquets.
--no-triggers ne pas lancer d'actions différées (les activations seront toujours enregistrées). utilisé avec --configure paquet ou --triggers-only paquet alors le postinst du paquet sera toujours exécuté même si seule l'exécution d'une action différée est nécessaire. L'utilisation de cette option peut laisser des paquets dans les mauvais états triggers-awaited et triggers-pending. Cela peut être corrigé plus tard en exécutant dpkg --configure --pending.
--triggers Annule un précédent --no-triggers.

Fichiers

/etc/dpkg/dpkg.cfg Fichier de configuration contenant les options par défaut.
/var/log/dpkg.log Fichier journal standard. Voyez /etc/dpkg/dpkg.cfg et l'option --log.

   Les autres fichiers répertoriés ici sont dans leur répertoire par défaut, voyez l'option --admindir pour savoir changer l'emplacement de ces fichiers.

/var/lib/dpkg/available Liste des paquets disponibles.
/var/lib/dpkg/status États des paquets disponibles. Ce fichier contient des informations qui permettent de savoir si un paquet est marqué comme devant être supprimé ou pas, devant être installé ou pas, etc. Ce fichier est quotidiennement backupé dans /var/backups.

Exemples

Pour afficher les paquets liés au programme vi(1)
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 /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
Vous pourriez transférer ce fichier sur un autre ordinateur et l'installer de cette manière
dpkg --clear-selections ; dpkg --set-selections ‹myselections