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 20/12/2021, 17:28] wiki-corrector-bot passage de http à https sur les liens externes (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892) |
probleme_apt [Le 25/04/2023, 09:20] (Version actuelle) frombenny lien vers la logithèque |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | |||
{{tag>apt paquet dépôts}} | {{tag>apt paquet dépôts}} | ||
---- | ---- | ||
Ligne 26: | 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> |
+ | 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 ===== | '===== Dpkg was interrupted ===== | ||
Ligne 42: | 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 96: | 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 140: | Ligne 140: | ||
set -e | set -e | ||
exit 0 | exit 0 | ||
- | </file> | + | </file> |
<note> | <note> | ||
Ligne 157: | 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 190: | 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 [[https://fr.wikipedia.org/wiki/Shebang|Shebang]] Bash, et ajouter juste après le [[https://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 : | ||
Ligne 243: | 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 261: | 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 324: | 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 338: | 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 347: | 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 361: | 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 ===== | ||