Comment utiliser dpkg pour réparer apt quand il se brise –
Avez-vous déjà cassé un appartement? Pour les professionnels Linux chevronnés, il est assez courant (environ tous les six mois) de rompre involontairement. Si vous connaissez quelques commandes dans dpkg, vous pouvez souvent résoudre le problème plus facilement! Trouver comment.
Sommaire
Que sont apte et dpkg?
Si vous utilisez une distribution basée sur Debian comme Ubuntu ou Mint, votre ordinateur utilise apte pour gérer les colis. Apt signifie Outil d’emballage avancé, qui vous permet d’installer, de désinstaller, de purger et de gérer les paquets Debian.
outre apt
(utilisé sur la ligne de commande), votre ordinateur dispose probablement d’un gestionnaire de packages de niveau supérieur / supérieur basé sur le bureau, qui utilise simplement apt
, ou peut-être dpkg
, en arrière-plan.
Le gestionnaire de paquets pour Debian dpkg
est une alternative à la gestion des paquets sur des installations basées sur Debian. C’est beaucoup plus bas niveau que apt
, vous donnant plus de liberté, mais présentant également un risque plus élevé de casser des choses.
C’est la raison pour laquelle (sauf si vous êtes un ingénieur DevOps chevronné) je vous recommande d’utiliser apt
à tout moment, en l’augmentant avec dpkg
dès que vous rencontrez des problèmes.
Adopter cette approche par étapes vous offre le meilleur des deux mondes: la stabilité et la facilité d’utilisation du apt
gestionnaire de paquets, avec la puissance et la granularité du dpkg
Gestionnaire de paquets Debian, une fois que vous en avez besoin.
Disons, par exemple, que vous avez un package que vous venez d’installer, qui a fini par casser le apt
. Ou peut-être qu’une installation de paquet a été accidentellement interrompue.
Quelle que soit la cause, apt
est maintenant considéré comme cassé, et vous avez déjà essayé des choses comme sudo apt update --fix-missing
et sudo apt install --fix-broken
en vain. Si tel est le cas, alors…
Bienvenue à dpkg
Quand ton apt
est cassé, ce n’est pas amusant. Si c’est vraiment cassé, c’est encore moins amusant. Même si quelqu’un sait ce qu’il fait, il faut parfois un certain niveau d’art et certainement des compétences pour réparer un système d’emballage cassé.
Le terme «art» est tout à fait applicable, car vous avez une idée ou une impression pendant que vous exécutez diverses étapes de dépannage – surtout si vous l’avez fait souvent – si quelque chose fonctionnera ou non lors d’un redémarrage.
Le risque est toujours que le système d’empaquetage soit si gravement endommagé que si vous redémarrez, votre instance Linux pourrait ne pas se remettre en place, et qu’un dépannage supplémentaire et potentiellement encore plus complexe sera nécessaire.
Je voudrais dire à ce stade que tout cela peut être facilement évité en exécutant quelques commandes simples – mais malheureusement, ce n’est pas le cas. Le fait est que plus vous en saurez, plus ce sera facile à réparer et plus vous aurez confiance pour déterminer si vous êtes prêt pour un redémarrage du système ou non.
C’est là que nous en venons dpkg
. le dpkg
Le programme nous permet un contrôle beaucoup plus granulaire sur tous les paquets installés, et bien qu’il y ait plus de risque que quelque chose ne tourne pas rond, il y a aussi beaucoup plus de pouvoir pour changer un système exactement comme nous le souhaitons. Plongeons-nous.
Si vous êtes intéressé par Linux en général, vous pouvez également lire notre série en trois parties sur l’automatisation et les scripts Bash.
De base dpkg Usage
Nous pouvons voir les paquets actuellement sur le système en exécutant simplement dpkg -l
. Comme la sortie est susceptible d’être très détaillée (bien que normalement paginée), vous pouvez utiliser un grep
pour limiter les résultats.
dpkg -l | head -n5 && dpkg -l | grep 'gnome-calculator' dpkg -l | grep 'gnome-calculator'
La première commande est en fait une combinaison de deux commandes (séparées par &&
, ce qui signifie littéralement: n’exécuter la deuxième commande que si la première réussit).
Dans la première de ces deux commandes, nous prenons les cinq premières lignes (en utilisant un tuyau |
et head -n5
), puis, dans la deuxième commande, nous cherchons à lister la sortie que nous recherchons. Dans ce cas, nous recherchons le texte gnome-calculator
.
La ligne / commande secondaire en dessous montre une version que nous utiliserions normalement. Une fois que quelqu’un est familiarisé avec la syntaxe du dpkg
sortie, les cinq premières lignes sont souvent inutiles. Notez que la première colonne fait référence (visuellement) Desired=
, avec la deuxième colonne faisant référence à Status=
, et la troisième colonne à Err?=
. Si vous suivez visuellement les lignes, vous verrez comment elles se connectent rapidement.
Comme notre gnome-calculator
est installé avec succès sans aucune erreur actuelle, il n’y a pas de code de troisième colonne sous Err?=
. Nous notons également ici que uppercase=bad
est écrit dans la brève info relative à la troisième colonne. Comme indiqué précédemment, dans notre cas, il est vide.
La première colonne indique l’état souhaité et la deuxième colonne indique l’état actuel. Les deux montrent comme i
(Install[ed]
et Inst[alled]
respectivement, et ce (ii
) est la séquence la plus courante que vous (voudrez) voir. Cela signifie essentiellement que everything is fine, that the package is installed, and that there are no issues
.
Notez également que, dans les descriptions de colonne entre parenthèses, la lettre majuscule indique le lien entre toute lettre possible vue et le terme pertinent. Par exemple, considérez comment f
fait référence à halF-conf
, en notant les majuscules F
dans le même.
Jetons maintenant un coup d’œil à une autre sortie à comparer. Cette fois, nous laisserons les cinq premières lignes et vous pourrez vous habituer un peu plus à lire la sortie même sans les en-têtes.
dpkg -l | grep 'mintwelcome'
Ici, nous voyons le résultat intéressant de rc
, où ii
était pour le gnome-calculator
. Si vous recherchez le r
en premier Desired=
description de la colonne que nous avons vue ci-dessus, vous pouvez voir qu’elle signifie Remove[d]
, et cela c
dans la deuxième colonne représente Conf-files
.
Ah! Cette (mintwelcome
, un package de bienvenue sur Mint) est un package que nous avons désinstallé à un moment donné, mais les fichiers de configuration pour le même restent. Purgeons-le!
dpkg --purge 'mintwelcome' sudo dpkg --purge 'mintwelcome' dpkg -l | grep 'mintwelcome'
Notez que vous pouvez également utiliser le -P
sténographie au lieu d’utiliser --purge
.
Dans la première commande, nous pouvons essayer de purger mintwelcome
sans utiliser sudo
. Cependant, cela ne fonctionnera pas. Vous avez besoin de privilèges de niveau super-utilisateur / racine pour désinstaller (ou installer ou purger) des packages. Nous pouvons recommencer en utilisant sudo
, et notre colis sera purgé.
Notez que le terme purge est utilisé par les deux apt
ainsi que par dpkg
pour indiquer que nous voulons purger complètement un paquet plutôt que de simplement le désinstaller, ce qui laissera tous les fichiers de configuration.
S’assurer
J’espère que vous commencerez peut-être à apprécier la puissance, le contrôle et la granularité dpkg
peut vous fournir lors de la gestion des paquets sur votre distribution basée sur Debian, telle qu’Ubuntu, ou, dans ce cas, Mint. Il serait facile, par exemple, de rechercher les restes de fichiers de configuration de packages précédemment désinstallés en exécutant simplement:
dpkg -l | grep '^rc'
Avant de supprimer de tels fichiers de configuration, vous devez vous assurer qu’il n’y a pas de packages installés avec un nom similaire. Par exemple, dans ce cas, nous pouvons exécuter:
dpkg -l | grep 'javascript'
Notez comment nous avons supprimé la deuxième partie de 'javascript-common'
rechercher 'javascript'
.
Sûr à retirer ou pas? Vous pouvez voir à quel point un grand pouvoir s’accompagne d’une grande responsabilité, comme toujours dans la vie. La décision de le supprimer ou non vous appartient. Il y a généralement trois choses à garder à l’esprit lorsque vous travaillez avec dpkg
:
d’abord, vous voudrez vérifier, revérifier et vérifier trois fois pour être sûr. Par exemple, dans la première sortie ci-dessus, nous aurions pu aller de l’avant et supprimer nonchalamment javascript-common
sans vérifier s’il y avait d’autres packages Javascript sur le système.
Était-ce le meilleur plan d’action? Peut-être, mais le niveau de sécurité / confiance a sûrement baissé dès que nous avons fait notre première vérification, car il y a certainement d’autres packages Javascript sur le système.
Notez également qu’il n’y a vraiment rien de cassé ici. C’est bien de laisser les fichiers de configuration pour ce package apparemment supprimé. Le vieil adage «Si ce n’est pas cassé, ne le répare pas» semblerait sûrement s’appliquer dans ce cas. C’est une bonne chose à garder à l’esprit lors de l’utilisation dpkg
.
en deuxième, il est important de se souvenir que apt
est un gestionnaire de packages qui conserve toutes les connexions (c’est-à-dire les versions et les dépendances) entre les packages à l’esprit lors de l’installation, de la désinstallation ou de la purge des packages.
Ce n’est pas le cas pour dpkg
, qui est beaucoup plus basée sur des packages. Il y a plus de granularité, mais aussi plus de risques de casser des choses. Si un paquet repose sur un autre ou sur une bibliothèque, quelqu’un est sûr de casser les choses simplement en désinstallant le paquet principal en utilisant dpkg
.
Troisièmement, la plupart des packages Linux ont beaucoup dépendances. Il n’est donc pas recommandé d’utiliser simplement dpkg
pour la gestion des colis standard, en réitérant nos conseils d’utilisation d’origine apt
par défaut et passez à dpkg
quand cela devient nécessaire.
Pour supprimer / désinstaller un paquet plutôt que le purger (c’est-à-dire laisser les fichiers de configuration), vous pouvez utiliser le --remove
(ou alors -r
) option pour dpkg
. Pour vérifier un package, utilisez --verify
(ou alors -V
). le --audit
(ou alors -C
) par rapport à un package effectue des vérifications de cohérence et de cohérence de la base de données pour le package (ou pour tous les packages si aucun package n’est spécifié).
Pour plus d’options, consultez man dpkg
exécuté depuis votre terminal. Il existe également des commandes spécifiques plus complexes qui peuvent être utilisées pour divers problèmes de système de packaging. Pour ceux-ci, il est généralement préférable d’utiliser votre moteur de recherche préféré pour le problème ou la situation spécifique au moment où il se produit. Souvent, quelqu’un d’autre l’a déjà rencontré et a documenté les détails. Si vous découvrez quelque chose de nouveau, prenez quelques minutes pour enregistrer vos résultats sur un forum ou un fil de discussion pertinent.
Emballer
Dans cet article, nous avons commencé à explorer dpkg
et comment cela peut nous aider avec la gestion granulaire des paquets, contrairement à apt
, qui gérera les packages et toutes leurs dépendances. Rappelez-vous, dans ces situations de débogage de problèmes de gestion de paquets complexes, une grande puissance entraîne une grande responsabilité.
Nous avons également examiné comment suivre une approche plus averse au risque tout en réalisant que le débogage de la gestion approfondie des paquets est similaire à l’art, et plus un peintre est meilleur, plus la peinture sera réussie – euh, le redémarrage sera.