Différences
Ci-dessous, les différences entre deux révisions de la page.
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 ===== | ||