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 13/04/2017, 09:48] 217.108.122.50 [Impossible de verrouiller /var/lib/dpkg/lock] |
probleme_apt [Le 25/04/2023, 09:20] (Version actuelle) frombenny lien vers la logithèque |
||
|---|---|---|---|
| Ligne 4: | Ligne 4: | ||
| ====== Problèmes avec les gestionnaires de paquets ====== | ====== Problèmes avec les gestionnaires de paquets ====== | ||
| - | Cette page est destinée à alléger la page principale [[apt]], si vous avez besoin d'informations générales sur apt consultez-la. | + | Cette page est destinée à alléger la page principale [[APT]], si vous avez besoin d'informations générales sur APT consultez-la. |
| <note important>Pensez à effectuer une copie de [[:tutoriel:comment_sauver_et_restaurer_un_fichier|sauvegarde]] du ou des fichier(s) que vous allez modifier voire supprimer!</note> | <note important>Pensez à effectuer une copie de [[:tutoriel:comment_sauver_et_restaurer_un_fichier|sauvegarde]] du ou des fichier(s) que vous allez modifier voire supprimer!</note> | ||
| Ligne 16: | Ligne 16: | ||
| </code> | </code> | ||
| - | * Soit un autre [[gestionnaire de paquets]] est ouvert. Si c'est le cas, fermez-le, puis ré-effectuez la commande. | + | Ce message indique qu'un autre processus utilise très probablement [[:APT]]. |
| - | * Sinon effectuez ceci dans un [[:terminal]] : <code> | + | |
| - | cd /var/lib/apt/lists && sudo rm -rf lock</code> | + | |
| + | Sur Ubuntu toutes les interfaces de gestion de paquets ou de logiciels telles que [[:gnome-software|GNOME Logiciels]], [[:Synaptic]], [[:gnome-packagekit|GNOME paquets]], [[:apt-cli|apt]], [[:apt-get]], [[:Aptitude]], ou les [[:gestionnaire_de_mises_a_jour|gestionnaires de mises à jour]] reposent sur le même système : [[:APT]]. | ||
| + | Afin d'éviter des conflits, une seule instance d'APT peut être utilisée en même temps, voilà pourquoi APT utilise un fichier ''/var/lib/dpkg/lock'' : afin de bloquer les autres tentatives d'utilisation simultanées d'APT. | ||
| + | Ce message d'erreur indique donc que ce fichier ''/var/lib/dpkg/lock'' existe et bloque la suite des opérations. Cela peut être le cas pour deux raisons différentes : | ||
| + | * 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. (//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//) | ||
| - | Sp@d | + | 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). |
| - | ===== Dpkg was interrupted ===== | + | |
| + | 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 ===== | ||
| Si un [[gestionnaire de paquets]] vous dit quelque chose comme ça : | Si un [[gestionnaire de paquets]] vous dit quelque chose comme ça : | ||
| Ligne 34: | 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> | ||
| * Si ça ne marche toujours pas faites : <code> | * Si ça ne marche toujours pas faites : <code> | ||
| - | sudo apt-get install -f </code> | + | sudo apt install -f </code> |
| * Si ça ne marche toujours pas (encore... cas rare) : <code> | * Si ça ne marche toujours pas (encore... cas rare) : <code> | ||
| Ligne 88: | 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 111: | Ligne 119: | ||
| Dans la commande ci-dessus, remplacez "/var..." avec le chemin exact du fichier ".deb" qui a causé l'erreur. Si vous avez téléchargé le fichier manuellement, le fichier ".deb" n'est pas localisé dans "/var/cache/apt/archives" mais dans le répertoire où vous l'aviez téléchargé (~/Téléchargements/). Cette commande va permettre à dpkg de forcer l'installation en écrasant les fichiers qui existent dans les 2 paquets. Finalement, pour être sûr que tous les paquets sont bien installés, tapez cette commande : | Dans la commande ci-dessus, remplacez "/var..." avec le chemin exact du fichier ".deb" qui a causé l'erreur. Si vous avez téléchargé le fichier manuellement, le fichier ".deb" n'est pas localisé dans "/var/cache/apt/archives" mais dans le répertoire où vous l'aviez téléchargé (~/Téléchargements/). Cette commande va permettre à dpkg de forcer l'installation en écrasant les fichiers qui existent dans les 2 paquets. Finalement, pour être sûr que tous les paquets sont bien installés, tapez cette commande : | ||
| <code> | <code> | ||
| - | sudo apt-get install -f | + | sudo apt install -f |
| </code> | </code> | ||
| Ligne 132: | Ligne 140: | ||
| set -e | set -e | ||
| exit 0 | exit 0 | ||
| - | </file> | + | </file> |
| <note> | <note> | ||
| Ligne 149: | 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> | ||
| sudo dpkg --configure -a | sudo dpkg --configure -a | ||
| - | sudo apt-get update | + | sudo apt update |
| - | sudo apt-get dist-upgrade | + | sudo apt full-upgrade |
| </code> | </code> | ||
| Ligne 166: | Ligne 174: | ||
| <code>E: Sub-process /usr/bin/dpkg returned an error code (2)</code> | <code>E: Sub-process /usr/bin/dpkg returned an error code (2)</code> | ||
| la commande qui va vous sauver est toute simple : | la commande qui va vous sauver est toute simple : | ||
| - | <code>sudo apt-get clean </code> | + | <code>sudo apt clean </code> |
| Puis réinstaller le ou les paquets qui posaient problème : | Puis réinstaller le ou les paquets qui posaient problème : | ||
| - | <code>sudo apt-get install nom_du_paquet </code> | + | <code>sudo apt install nom_du_paquet </code> |
| Si cela ne fonctionne pas, forcer la désinstallation du paquet qui pose problème : | Si cela ne fonctionne pas, forcer la désinstallation du paquet qui pose problème : | ||
| Ligne 182: | 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 207: | Ligne 215: | ||
| ===== Erreur du busistes de paquets ===== | ===== Erreur du busistes de paquets ===== | ||
| - | Si //apt-get update// vous renvoie : | + | Si //apt update// vous renvoie : |
| <code>Erreur du busistes de paquets... 0% </code> ou <code>Erreur du bus (core dumped)</code> | <code>Erreur du busistes de paquets... 0% </code> ou <code>Erreur du bus (core dumped)</code> | ||
| supprimez les fichiers **/var/cache/apt/pkgcache.bin** et **/var/cache/apt/srcpkgcache.bin** : | supprimez les fichiers **/var/cache/apt/pkgcache.bin** et **/var/cache/apt/srcpkgcache.bin** : | ||
| Ligne 215: | Ligne 223: | ||
| </code> | </code> | ||
| Puis refaites : | Puis refaites : | ||
| - | <code>sudo apt-get update</code> | + | <code>sudo apt update</code> |
| ===== Le paquet installé n’apparaît pas dans la liste de Synaptic ===== | ===== Le paquet installé n’apparaît pas dans la liste de Synaptic ===== | ||
| __Problème rencontré :__\\ | __Problème rencontré :__\\ | ||
| - | L'installation de paquets .deb avec //**[[:gdebi]]**// se passe sans souci mais ces paquets n'apparaissent pas dans [[:Synaptic]] et [[:apt-get]] ne les trouve pas non plus (par exemple pour les supprimer).\\ | + | L'installation de paquets .deb avec //**[[:gdebi]]**// se passe sans souci mais ces paquets n'apparaissent pas dans [[:Synaptic]] et [[:apt-cli|apt]] ne les trouve pas non plus (par exemple pour les supprimer).\\ |
| Ils sont pourtant installés car lorsqu'on appelle les programmes correspondants, ils se lancent sans problème. | Ils sont pourtant installés car lorsqu'on appelle les programmes correspondants, ils se lancent sans problème. | ||
| Ligne 235: | 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 247: | Ligne 255: | ||
| Une fois la modification effectuée, il faut sauver puis quitter, et faire : | Une fois la modification effectuée, il faut sauver puis quitter, et faire : | ||
| - | <code>sudo apt-get update</code> | + | <code>sudo apt update</code> |
| En cas de doute, on peut également régénérer complètement son sources.list, par exemple à partir de [[http://sources-list.ubuntu-fr-secours.org/|ce site]]. | En cas de doute, on peut également régénérer complètement son sources.list, par exemple à partir de [[http://sources-list.ubuntu-fr-secours.org/|ce site]]. | ||
| Ligne 253: | 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-get 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 261: | Ligne 269: | ||
| <code> | <code> | ||
| sudo rm /var/lib/apt/lists/* -vf | sudo rm /var/lib/apt/lists/* -vf | ||
| - | sudo apt-get 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 293: | Ligne 301: | ||
| <code>sudo rm -r /var/lib/apt/lists | <code>sudo rm -r /var/lib/apt/lists | ||
| sudo mkdir -p /var/lib/apt/lists/partial | sudo mkdir -p /var/lib/apt/lists/partial | ||
| - | sudo apt-get update</code> | + | sudo apt update</code> |
| ==== Signature non vérifiée ==== | ==== Signature non vérifiée ==== | ||
| Ligne 316: | 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 330: | 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 339: | 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 345: | Ligne 350: | ||
| sudo rm /var/cache/apt/*.bin | sudo rm /var/cache/apt/*.bin | ||
| ## et on relance | ## et on relance | ||
| - | sudo apt-get clean | + | sudo apt clean |
| - | sudo apt-get autoclean | + | sudo apt autoclean |
| - | sudo apt-get update | + | sudo apt update |
| sudo dpkg --clear-avail | sudo dpkg --clear-avail | ||
| sudo dpkg --configure -a | sudo dpkg --configure -a | ||
| - | sudo apt-get install -f | + | sudo apt install -f |
| - | sudo apt-get update | + | sudo apt update |
| - | sudo apt-get 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 ===== | ||
| Ligne 361: | Ligne 369: | ||
| <code> | <code> | ||
| - | sudo apt-get clean | ||
| cd /var/lib/apt | cd /var/lib/apt | ||
| sudo mv lists lists.old | sudo mv lists lists.old | ||
| sudo mkdir -p lists/partial | sudo mkdir -p lists/partial | ||
| - | sudo apt-get clean | + | sudo apt clean |
| - | sudo apt-get update | + | sudo apt update |
| </code> | </code> | ||
| - | ===== Autres erreurs ===== | ||
| - | |||
| - | En cas d'autres erreurs, pour tenter de débloquer apt sans devoir redémarrer : | ||
| - | |||
| - | <code> | ||
| - | sudo rm /var/lib/apt/lists/lock /var/lib/dpkg/lock /var/cache/apt/archives/lock | ||
| - | sudo killall apt-get | ||
| - | </code> | ||
| - | |||
| - | Autre solution possible : | ||
| - | |||
| - | Supprimer tous les fichiers d'installation du paquet par exemple : | ||
| - | <code> | ||
| - | sudo rm /usr/bin/[nom du PAQUET] /usr/share/doc/[nom du PAQUET] | ||
| - | sudo rm /usr/share/man/man1/[nom du PAQUET].1.gz | ||
| - | sudo rm /var/crash/[nom du PAQUET].0.crash | ||
| - | sudo rm /var/lib/dpkg/info/[nom du PAQUET].list | ||
| - | sudo rm /var/lib/dpkg/info/[nom du PAQUET].md5sums | ||
| - | sudo rm /var/lib/dpkg/info/[nom du PAQUET].postinst | ||
| - | sudo rm /var/lib/dpkg/info/[nom du PAQUET].prerm | ||
| - | </code> | ||
| - | (Pour les localiser utiliser ''# locate [nom du PAQUET]'' par exemple.) | ||
| - | |||
| - | Normalement à partir de là l'erreur a disparu. | ||
| - | |||
| - | Vous pouvez désinstaller le paquet proprement puis le réinstaller : | ||
| - | <code>sudo apt-get remove [nom du PAQUET]; sudo apt-get install [nom du PAQUET]</code> | ||
| ---- | ---- | ||
| - | //Contributeurs: [[utilisateurs:Fabien26]], [[utilisateurs:на_краю]], [[utilisateurs:sheep]], [[utilisateurs:BeAvEr]].// | + | //Contributeurs: [[:utilisateurs:Fabien26]], [[:utilisateurs:на_краю]], [[:utilisateurs:sheep]], [[:utilisateurs:BeAvEr]], [[:utilisateurs:krodelabestiole]]// |