Comment réparer des paquets cassés sous Linux

Paquets Linux cassés

Les gestionnaires de paquets Linux, comme Apt et DNF, sont extrêmement puissants et intuitifs, mais cela ne signifie pas que les choses ne peuvent pas mal tourner. Parfois, une installation de paquet échoue, et vous devez ramasser les morceaux. Les gestionnaires de paquets ont la capacité de réparer les paquets cassés et de sauter les mises à jour défectueuses pour faire fonctionner à nouveau votre système et éviter des problèmes à l’avenir.

Cet article couvre comment réparer des paquets cassés sous Linux. Ces solutions devraient vous aider à vous débloquer dans la plupart des cas.

Table des matières

  • Réparer des paquets cassés sous Ubuntu/Mint/Debian
  • Réparer des paquets cassés sous Fedora/CentOS/RHEL
  • Réparer des paquets cassés sous Arch
  • Questions fréquentes

Réparer des paquets cassés sous Ubuntu/Mint/Debian

Apt a quelques options pour réparer les dépendances manquantes ou les paquets qui se sont cassés pour une raison ou une autre lors de l’installation. Un usage courant ici serait d’installer un .deb tiers et de découvrir qu’il avait des dépendances dont vous n’aviez pas connaissance. Ces dépendances ne seront probablement pas tirées d’elles-mêmes, et dpkg se plaindra qu’il ne peut pas résoudre les dépendances. Dans tous les cas, vous pouvez essayer les étapes suivantes :

Remarque : apprenez comment fonctionne Apt avant d’essayer l’une des solutions ci-dessous.

Paquets Linux Fixmissing

  1. Exécutez une mise à jour pour vous assurer qu’il n’y a pas de versions plus récentes des paquets requis :
sudo apt --fix-missing update
  1. Forcez Apt à rechercher et corriger toutes les dépendances manquantes ou les paquets cassés lorsque vous essayez d’installer à nouveau le paquet problématique. Cela installera toutes les dépendances manquantes et réparera les installations existantes :
sudo apt install-f

Réparer les problèmes de configuration DPKG

Un autre endroit où une erreur peut survenir lors des installations de paquets est le processus de configuration. En coulisses, dpkg s’occupe de cette partie, donc lorsque qu’un paquet échoue lors de la configuration, dpkg est l’outil à utiliser pour le réparer.

Paquets Linux Configuredpkg

  1. Commencez par essayer de forcer dpkg à reconfigurer tous les paquets cassés ou partiellement configurés :
sudodpkg--configure-a
  1. Si cela ne résout pas le problème, adoptez une approche plus ferme. Commencez par lister tous les paquets que dpkg a marqués comme nécessitant une réinstallation :
sudodpkg-l|grep ^..r

La commande ci-dessus vous montrera les paquets qui posent problème. Pour cette étape suivante, vérifiez et assurez-vous que les paquets marqués pour réinstallation sont vraiment cassés. Faites un sudo apt reinstall et faites attention aux paquets qui échouent à se réinstaller.

  1. Pour chaque paquet qui échoue à se réinstaller, obtenez le nom et supprimez de force le paquet cassé :
sudodpkg--remove--force-remove-reinstreq[nom du paquet]
  1. Dpkg devrait maintenant être propre. Faites un nettoyage avec Apt :
sudo apt clean &&sudo apt update

Avec un peu de chance, cela vous ramènera à l’endroit où vous avez commencé. Cela ne vous ramènera pas les paquets cassés que vous avez essayé d’installer, mais au moins Apt sera à nouveau fonctionnel, et vous pourrez revenir à son utilisation pour tenter d’installer le paquet que vous essayiez à l’origine d’installer et ses dépendances.

Verrou DPKG Permanent

Il y a un problème moins courant avec les verrous dpkg qui vous empêchent de faire quoi que ce soit. Chaque fois que vous essayez d’utiliser Apt ou dpkg, vous obtenez une erreur disant qu’une autre application l’utilise déjà… alors qu’elle ne l’est pas.

Il est facile de supprimer le fichier de verrou qui vous empêche d’utiliser Apt et de revenir à ce que vous devez faire. Parfois, ces fichiers de verrou restent en place après une erreur d’installation ou une coupure de courant, perturbant le processus et empêchant le fichier d’être supprimé automatiquement. Dans ce cas, vous devrez le faire vous-même.

sudorm/var/lib/apt/lists/lock

Pour être sûr, supprimez le verrou dans le cache.

sudorm/var/cache/apt/archives/lock

Avertissement : Avant de supprimer ce verrou, assurez-vous qu’il n’est pas utilisé. Sous Ubuntu, il y a un programme de mise à jour qui démarre avec le système et qui verrouille DPKG/APT lorsqu’il recherche des mises à jour. Si vous n’êtes pas sûr que le programme de mise à jour fonctionne, appuyez sur votre touche Win pour faire apparaître le Centre d’activité et tapez “Mise à jour logicielle”, puis appuyez sur Entrée pour l’ouvrir.

Paquets Linux Ubuntuupdater

Si le programme de mise à jour dit qu’il ne peut pas s’exécuter, et que vous n’avez aucun terminal ouvert avec des gestionnaires de paquets en cours d’exécution en arrière-plan, allez-y avec les instructions ci-dessus.

Si au lieu du problème des paquets cassés, vous êtes confronté à un problème avec le Centre logiciel qui ne fonctionne pas, nous avons les solutions.

Réparer des paquets cassés sous Fedora/CentOS/RHEL

Réparer des paquets cassés sous Fedora/CentOS/RHEL est une affaire moins courante. dnf fait un excellent travail pour s’assurer que les paquets sont installés correctement. Cela dit, ce n’est toujours pas parfait, et les choses peuvent parfois se mélanger dans la gestion des paquets.

Remarque : apprenez les différences entre Fedora, CentOS et RHEL.

1. Lister les paquets problématiques

La commande pour résoudre cela sur les systèmes basés sur RHEL comme Fedora est :

sudo rpm -Va

Paquets Linux Rpmverify

L’option -V est pour vérifier, ce qui signifie qu’elle va passer en revue et comparer les informations sur les fichiers installés avec les informations stockées dans la base de données rpm. Attacher -a à cela vérifie simplement tous les paquets de base. Cela est légèrement peu utile, car cela vous donnera généralement une longue liste de fichiers, mais cela peut vous donner un point de départ si vous avez des problèmes avec une application particulière.

Par exemple, voir quelque chose marqué comme “manquant” dans votre terminal vous indiquera qu’il y a des fichiers manquants dans ce paquet particulier.

2. Tenter une réinstallation

Exécutez un dnf reinstall sur tous les paquets que vous voyez dans cette liste qui pourraient vous poser problème.

sudo dnf --refresh reinstall [nom du paquet]

Cela définira toutes les métadonnées comme expirées, donc il parcourra chaque dépôt que vous avez activé et cherchera une nouvelle version de ce paquet. Si vous constatez qu’il y a des dépendances cassées avec ce paquet, DNF se plaindra probablement et vous dira d’utiliser l’option --skip-broken. Cela ignorera simplement ce paquet complètement et vous permettra de mettre à jour votre système normalement.

3. Le dernier recours – Supprimer des paquets

Si vous êtes arrivé au point où vous devez utiliser --skip-broken pour compléter vos mises à jour, il est plus hygiénique pour votre système de le supprimer complètement.

En vous souvenant du nom du paquet que vous n’avez pas réussi à réinstaller correctement, désinstallez-le :

sudo dnf remove [nom du paquet]

Le pire qui puisse arriver ici est que vous finissiez par supprimer une partie essentielle de votre flux quotidien, comme votre navigateur, vous forçant à trouver une alternative.

Astuce : apprenez à utiliser flatpak sous Fedora pour mieux gérer vos paquets.

Réparer des paquets cassés sous Arch

Bien que le gestionnaire de paquets d’Arch ait certaines similitudes avec les autres mentionnés ici (c’est-à-dire qu’il a un fichier de verrouillage de base de données et tire les dépendances de manière similaire), c’est une bête entièrement différente en ce qui concerne la structure de sa logique. La première étape pour diagnostiquer votre problème est de vous assurer que les dépôts sont à jour et d’essayer une mise à niveau complète :

sudo pacman -Syu

Si vos tentatives d’installer votre paquet ou de faire une mise à niveau du système échouent toujours, nous devons isoler la cause selon ce que le terminal vous a dit :

Remarque : apprenez comment fonctionne pacman avant d’essayer de le réparer.

“Paquet invalide ou corrompu”

Apporter des modifications à “pacman.conf” de quelque manière que ce soit peut causer des problèmes qui amènent pacman à étiqueter incorrectement les paquets comme corrompus. Le coupable le plus probable ici est un fichier partiel (“.part”) dans le cache du gestionnaire de paquets, et votre solution est de le supprimer :

sudofind/var/cache/pacman/pkg/-iname"*.part"-delete

Il y a toujours une chance que le paquet que vous essayez d’installer soit effectivement corrompu et ne fournisse pas de métadonnées valides au gestionnaire de paquets d’Arch. Dans ce cas, vous devrez attendre que le mainteneur du paquet le mette à jour. Si le paquet est installé sur votre système et cause des problèmes lors d’une mise à niveau, supprimez-le avec :

sudo pacman -Rns[nom du paquet]

“Impossible de verrouiller la base de données”

Comme l’apt de Debian, le gestionnaire de paquets d’Arch crée un fichier de verrou pendant les opérations. Si vous avez subi une coupure de courant ou si pacman a subi une interruption brutale et n’a pas pu supprimer le verrou, il est très probable qu’il laisse derrière lui un fichier de verrou.

Tout d’abord, découvrez si un processus sur votre ordinateur utilise toujours le fichier :

sudofuser/var/lib/pacman/db.lck

Dans l’image ci-dessus, un processus avec l’ID 121497 utilise le fichier de verrou. Si vous êtes curieux au sujet du processus et souhaitez plus d’informations, utilisez ps :

ps-p[PID#]

Dans mon cas, une autre instance de pacman possède le fichier de verrou. La manière la plus sûre de supprimer le verrou est de d’abord tuer ce processus :

sudokill[PID#]

Maintenant que le processus est mort, supprimez le fichier de verrou :

sudorm/var/lib/pacman/db.lck

Vous êtes bon à partir maintenant !

“Fichiers conflictuels/Fichier existe dans le système de fichiers”

Cela se produit lors des mises à niveau où pacman détecte un conflit de propriété. Avant de réparer quoi que ce soit, faites attention au chemin du fichier dont le gestionnaire de paquets se plaint.

Pour savoir qui possède le fichier :

pacman -Qo[chemin vers le fichier]

S’il est possédé par un utilisateur et non par un autre paquet, supprimez-le simplement :

sudorm[chemin vers le fichier]

S’il est possédé par un autre paquet, la chose la plus sûre à faire est d’attendre que le mainteneur du paquet corrige ce conflit lui-même. Parfois, ce n’est pas une option, cependant, et vous voulez que les choses soient faites maintenant.

La manière la plus simple d’y parvenir est d’utiliser l’option --overwrite dans pacman. Sachez simplement que c’est généralement dangereux et pourrait entraîner le dysfonctionnement de certaines applications sur votre système. Je vous suggère de faire une sauvegarde avant de l’exécuter.

L’option --overwrite permet au gestionnaire de paquets d’Arch d’ignorer les règles de propriété pour un fichier particulier et de passer à travers la mise à jour. Exemple :

sudo pacman -Syu--overwrite[nom du fichier]

Si la commande ci-dessus ne fonctionne pas, remplacez le nom du fichier par son chemin absolu. Certains utilisateurs ont signalé que supprimer le slash de début (“/“) devant le chemin fait fonctionner la commande lorsqu’elle est obstinée.

Alternativement, vous pouvez également simplement dire à pacman de remplacer tout ce dont il a besoin :

sudo pacman -Syu--overwrite='*'

“Paquet invalide ou corrompu (signature PGP)”

Dans certains paquets mal entretenus, le développeur peut ne pas avoir le temps ou la volonté de mettre à jour correctement la signature numérique qui certifie leur paquet. Cela entraînera finalement un message dans votre terminal lors de l’installation, tel que “signature de [quelqu’un] est de confiance marginale”, suivi du gestionnaire de paquets demandant si vous souhaitez supprimer le fichier.

Comme les mises à jour de signature dépendent entièrement du mainteneur, il n’y a rien que vous puissiez raisonnablement faire pour corriger la situation depuis votre terminal. Si vous effectuez une mise à jour et souhaitez conserver le paquet, utilisez l’option --ignore pour ce paquet en particulier :

sudo pacman -Syu--ignore[nom du paquet]

Si vous obtenez cela pour de nombreux paquets, votre trousseau de clés pourrait être obsolète. Mettez-le à jour avec :

sudo pacman -S archlinux-keyring

Questions fréquentes

Puis-je appliquer les corrections Arch avec un helper AUR ?

En général, oui. Remplacez “pacman” par votre helper AUR dans les commandes de ce guide. Exemple : yay -Qo /chemin/vers/le/fichier

Que dois-je faire si j’interromps une mise à jour ?

Interrompre un processus de mise à jour soit en appuyant sur Ctrl + C, en tuant le processus du gestionnaire de paquets, ou en fermant le terminal prématurément entraînera un certain niveau de corruption dans votre base de données de paquets qui pourrait compliquer les choses lorsque vous essayez d’installer quelque chose d’autre. Pour corriger cela, videz le cache et répétez la mise à jour.

Crédit image : Flickr. Toutes les captures d’écran par Miguel Leiva-Gomez.