Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
probleme_apt [Le 23/03/2020, 11:48]
91.161.224.121 [Dpkg was interrupted]
probleme_apt [Le 25/04/2023, 09:20] (Version actuelle)
frombenny lien vers la logithèque
Ligne 25: Ligne 25:
  
   * Soit un autre [[:​gestionnaire de paquets]] (ou de mise à jour) est ouvert. Si c'est le cas, fermez-le proprement puis relancez votre commande.   * Soit un autre [[:​gestionnaire de paquets]] (ou de mise à jour) est ouvert. Si c'est le cas, fermez-le proprement puis relancez votre commande.
-  * Soit l'un de ces gestionnaires a "​planté",​ ou l'​ordinateur a été éteint sauvagement pendant une opération, et le gestionnaire n'a pas terminé normalement ses opérations en supprimant ce fichier. ​Dans ce cas (si vous êtes absolument certain·e qu'​aucun autre gestionnaire ne tourne), vous pouvez supprimer ce fichier au moyen d'un [[:​terminal]] : +  * Soit l'un de ces gestionnaires a "​planté",​ ou l'​ordinateur a été éteint sauvagement pendant une opération, et le gestionnaire n'a pas terminé normalement ses opérations en supprimant ce fichier. (//FIXME : ce point mérite vérification,​ le verrou devant normalement disparaître même en cas de plantage du processus l’ayant requis en premier lieu//)
-<​code>​cd ​/var/lib/dpkg&& sudo rm -v lock</​code>​ +
-<note warning>​Il est **impératif** que tous les gestionnaires de paquets soient fermés au moment d'​exécuter la commande ci-dessus !+
  
-Vous pouvez lister ​la liste des processus utilisant le fichier ​''​/var/lib/dpkg/lock''​ au moyen de la commande suivante ​: +La documentation de dpkg rappelle que la suppression manuelle de ce fichier ​n’est **jamais** une solution correcte : [[https://wiki.debian.org/Teams/Dpkg/​FAQ#​Q:​_What_can_be_done_when_the_dpkg_lock_is_held.3F|What can be done when the dpkg lock is held?]] (en anglais). 
-<​code>​sudo ​lsof /​var/​lib/​dpkg/​lock</​code>​ + 
-</note+Si la présence de ce verrou bloque vos opérations,​ vous devez tout d’abord fermer les éventuels processus ayant requis ce verrou, avec : <​code>​sudo ​fuser -vki -TERM /​var/​lib/​dpkg/​lock ​/​var/​lib/​dpkg/​lock-frontend</​code>​ 
-''​__Code « machine ​à écrire »__//​Italique//'​'===== Dpkg was interrupted =====+Puis la cohérence de la base de données de dpkg doit être rétablie avec : <​code>​sudo dpkg --configure --pending</code
 + 
 +<note warning>​Vous croiserez souvent des guides recommandant de supprimer manuellement le fichier ​''​lock''​. Ce conseil n’est pas à suivre, cette opération menant à des corruption de la base de données de dpkg ou même du système de fichiers.<​/note> 
 +'===== Dpkg was interrupted =====
  
 Si un [[gestionnaire de paquets]] vous dit quelque chose comme ça : Si un [[gestionnaire de paquets]] vous dit quelque chose comme ça :
Ligne 41: Ligne 42:
 Enfin en tous cas quelque chose qui dit **dpkg %%--%%configure -a** dans le texte. Enfin en tous cas quelque chose qui dit **dpkg %%--%%configure -a** dans le texte.
  
-  * Faites : <​code>​+  * Faites :<​code>​
 sudo dpkg --configure -a </​code>​ sudo dpkg --configure -a </​code>​
  
Ligne 95: Ligne 96:
 ===== Dpkg: error processing archive ===== ===== Dpkg: error processing archive =====
  
-Si vous voyez l'​erreur "dpkg : error processing archive"​ lors d'une mise à jour ou de l'​installation d'un paquet, comme le montre l'​exemple ci-dessous, cette erreur est provoquée par un paquet "mal fait" (provenant probablement d'un ppa) voulant écraser (dans le sens de l'​overwrite) des fichiers appartenant à d'​autres paquets. Dpkg se termine alors avec l'​erreur mentionnée et l'​installation ou la mise à jour s'​interrompt. Dans la plupart des cas, une telle erreur arrive quand un fichier est déplacé d'un paquet vers un autre avec une version plus récente. ​+Si vous voyez l'​erreur "dpkg : error processing archive"​ lors d'une mise à jour ou de l'​installation d'un paquet, comme le montre l'​exemple ci-dessous, cette erreur est provoquée par un paquet "mal fait" (provenant probablement d'un ppa) voulant écraser (dans le sens de l'​overwrite) des fichiers appartenant à d'​autres paquets. Dpkg se termine alors avec l'​erreur mentionnée et l'​installation ou la mise à jour s'​interrompt. Dans la plupart des cas, une telle erreur arrive quand un fichier est déplacé d'un paquet vers un autre avec une version plus récente.
  
-Exemple: ​+Exemple:
 <​code>​ <​code>​
 Préparation du décompactage de .../​ubuntu-mate-default-settings_0.3.9~trusty2_all.deb ... Préparation du décompactage de .../​ubuntu-mate-default-settings_0.3.9~trusty2_all.deb ...
Ligne 139: Ligne 140:
 set -e set -e
 exit 0 exit 0
-</​file> ​  ​+</​file>​
  
 <​note>​ <​note>​
Ligne 156: Ligne 157:
  
 Si cela ne marche toujours pas, essayez de remplacer le fichier **/​var/​lib/​dpkg/​status** par **/​var/​lib/​dpkg/​status-old** (vérifier la présence de ce fichier avant).\\ Si cela ne marche toujours pas, essayez de remplacer le fichier **/​var/​lib/​dpkg/​status** par **/​var/​lib/​dpkg/​status-old** (vérifier la présence de ce fichier avant).\\
-Il peut exister également des sauvegardes du fichier status dans **/​var/​backups** (compressées ou non).\\ +Il peut exister également des sauvegardes du fichier status dans **/​var/​backups** (compressées ou non).
 Si ce n'est pas mieux éditer le fichier **/​var/​lib/​dpkg/​status** et retirer chaque section comportant le paquet bloquant suivi des commandes : Si ce n'est pas mieux éditer le fichier **/​var/​lib/​dpkg/​status** et retirer chaque section comportant le paquet bloquant suivi des commandes :
 <​code>​ <​code>​
Ligne 189: Ligne 190:
 Des erreurs ont été rencontrées pendant l'​exécution : 'le paquet qui bloque'​ Des erreurs ont été rencontrées pendant l'​exécution : 'le paquet qui bloque'​
 </​code>​ </​code>​
-Faites : +Faites :
 <​code>​gksu gedit /​var/​lib/​dpkg/​info/​lepaquetquibloque.postrm</​code>​ <​code>​gksu gedit /​var/​lib/​dpkg/​info/​lepaquetquibloque.postrm</​code>​
-Supprimer tout jusqu'​au [[http://​fr.wikipedia.org/​wiki/​Shebang|Shebang]] Bash, et ajouter juste après le [[http://​fr.wikipedia.org/​wiki/​Shebang|Shebang]] Bash ceci :+Supprimer tout jusqu'​au [[https://​fr.wikipedia.org/​wiki/​Shebang|Shebang]] Bash, et ajouter juste après le [[https://​fr.wikipedia.org/​wiki/​Shebang|Shebang]] Bash ceci :
 <​code>/​bin/​true</​code>​ <​code>/​bin/​true</​code>​
 Vous devez donc avoir dans votre fichier .postrm ceci et rien de plus : Vous devez donc avoir dans votre fichier .postrm ceci et rien de plus :
Ligne 242: Ligne 243:
 ===== Erreurs dans le fichier /​etc/​apt/​sources.list ===== ===== Erreurs dans le fichier /​etc/​apt/​sources.list =====
  
-Les erreurs de type : +Les erreurs de type :
  
 <​code>​ <​code>​
Ligne 260: Ligne 261:
 ===== E: Encountered a section with no Package: header ===== ===== E: Encountered a section with no Package: header =====
  
-Un bug semble parfois empêcher l'​accès aux applications de la [[:software-center|logithèque]] (idem avec [[:​Synaptic]]),​ lors d'une mise à jour de la liste des paquets (via ''​apt update''​),​ la console retourne une erreur de ce type :+Un bug semble parfois empêcher l'​accès aux applications de la [[:gnome-software|logithèque]] (idem avec [[:​Synaptic]]),​ lors d'une mise à jour de la liste des paquets (via ''​apt update''​),​ la console retourne une erreur de ce type :
 <​code>​ <​code>​
 E: Encountered a section with no Package: header E: Encountered a section with no Package: header
Ligne 270: Ligne 271:
 sudo apt update sudo apt update
 </​code>​ </​code>​
-[[http://​forum.ubuntu-fr.org/​viewtopic.php?​id=481901|Discussion à propos de ce problème sur le forum ubuntu-fr]].+[[https://​forum.ubuntu-fr.org/​viewtopic.php?​id=481901|Discussion à propos de ce problème sur le forum ubuntu-fr]].
  
 ===== Erreur de Signature ===== ===== Erreur de Signature =====
Ligne 323: Ligne 324:
 Si ça ne marche pas avec keyserver.ubuntu.com remplacer par : Si ça ne marche pas avec keyserver.ubuntu.com remplacer par :
 [[hkp://​subkeys.pgp.net]] ou [[hkp://​subkeys.pgp.net]] ou
-[[hkp://​pgp.mit.edu]] ou +[[hkp://​pgp.mit.edu]] ou
 [[hkp://​pool.sks-keyservers.net]] (serveurs aléatoires) [[hkp://​pool.sks-keyservers.net]] (serveurs aléatoires)
 [[hkp://​keys.nayr.net]] ou encore [[hkp://​keys.nayr.net]] ou encore
Ligne 337: Ligne 338:
  
   * Solution simple, utiliser le fichier status.old généré automatiquement par le système et le renommer en status :<​code>​   * Solution simple, utiliser le fichier status.old généré automatiquement par le système et le renommer en status :<​code>​
-cp /​var/​lib/​dpkg/​status.old /​var/​lib/​dpkg/​status</​code>​Attention,​ si il y a trop de différence entre le fichier status et le old, la solution devient aléatoire.\\ Processus complet à suivre dans tous les cas, au delà de la récupération du fichier status.old :<​code>​ +cp /​var/​lib/​dpkg/​status.old /​var/​lib/​dpkg/​status</​code>​Attention,​ si il y a trop de différence entre le fichier status et le old, la solution devient aléatoire.\\ Processus complet à suivre dans tous les cas, au delà de la récupération du fichier status.old : <​code>​
-## au cas ou un gestionnaire de paquets est encore lancé +
-sudo rm /​var/​lib/​apt/​lists/​lock+
 ## un petit backup au cas ou, prudence ## un petit backup au cas ou, prudence
 sudo cp -arf /​var/​lib/​dpkg /​var/​lib/​dpkg.backup sudo cp -arf /​var/​lib/​dpkg /​var/​lib/​dpkg.backup
Ligne 346: Ligne 345:
 sudo cp /​var/​lib/​dpkg/​available-old /​var/​lib/​dpkg/​available sudo cp /​var/​lib/​dpkg/​available-old /​var/​lib/​dpkg/​available
 ## on purge ## on purge
-sudo rm -rf /​var/​lib/​dpkg/​updates/​* 
 sudo rm -rf /​var/​lib/​apt/​lists sudo rm -rf /​var/​lib/​apt/​lists
 sudo mkdir /​var/​lib/​apt/​lists sudo mkdir /​var/​lib/​apt/​lists
Ligne 360: Ligne 358:
 sudo apt update sudo apt update
 sudo apt upgrade sudo apt upgrade
-</​code>​ +</​code> ​//FIXME : La suppression manuelle de /​var/​lib/​apt/​lists n’est certainement pas une bonne idée, ça vaudrait le coup de demander conseil aux développeurs/​mainteneurs d’APT pour connaître la marche à suivre recommandée.//​ 
-  * Si le fichier status.old(ou status-old) n'est plus disponible, le plus sûr, hélas, va consister à réinstaller votre système (ou a le laisser en l'​état,​ sans mise à jour possible ni aucune installation de nouveau paquets possible. ​+  * Si le fichier status.old(ou status-old) n'est plus disponible, le plus sûr, hélas, va consister à réinstaller votre système (ou a le laisser en l'​état,​ sans mise à jour possible ni aucune installation de nouveau paquets possible.
  
 +<note warning>
 +Si une de ces opérations échoue à cause d’un verrou (//lock//) dpkg encore en place, suivez ces instructions : [[probleme_apt#​impossible_de_verrouillervarlibdpkglock|Impossible de verrouiller /​var/​lib/​dpkg/​lock]]
 +</​note>​
 ===== "W: Failed to fetch gzip:/​var/​lib/​apt/​lists/​partial/​..."​ lors d'une mise à jour ===== ===== "W: Failed to fetch gzip:/​var/​lib/​apt/​lists/​partial/​..."​ lors d'une mise à jour =====
            
  • probleme_apt.1584960498.txt.gz
  • Dernière modification: Le 23/03/2020, 11:48
  • par 91.161.224.121