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 02/03/2016, 20:13] 90.31.21.77 [Problèmes avec les gestionnaires de paquets] |
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> | + | |
- | ===== Dpkg was interrupted ===== | + | 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//) | ||
+ | |||
+ | 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). | ||
+ | |||
+ | 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 27: | Ligne 40: | ||
E: _cache->open(!) failed, please report. | E: _cache->open(!) failed, please report. | ||
</code> | </code> | ||
- | 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 42: | Ligne 55: | ||
<note> | <note> | ||
- | Pour connaître le paquet qui bloque, quand vous faites un **sudo dpkg --configure -a**, c'est simplement le premier paquet qui apparaît. | + | Pour connaître le paquet qui bloque, quand vous faites un **sudo dpkg %%--%%configure -a**, c'est simplement le premier paquet qui apparaît. |
Exemple : | Exemple : | ||
Ligne 83: | 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 102: | Ligne 115: | ||
sudo dpkg -i --force-overwrite /var/cache/apt/archives/ubuntu-mate-core_1.118~trusty4_amd64.deb | sudo dpkg -i --force-overwrite /var/cache/apt/archives/ubuntu-mate-core_1.118~trusty4_amd64.deb | ||
</code> | </code> | ||
- | Si, l'option --force-overwrite ne résout pas le problème, essayez avec --force-all. | + | Si, l'option %%--%%force-overwrite ne résout pas le problème, essayez avec %%--%%force-all. |
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 127: | Ligne 140: | ||
set -e | set -e | ||
exit 0 | exit 0 | ||
- | </file> | + | </file> |
<note> | <note> | ||
Ligne 144: | 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 161: | 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 177: | 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 202: | 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> | + | <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** : | ||
<code> | <code> | ||
Ligne 210: | 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 228: | Ligne 241: | ||
//Merci à PK pour la solution.// | //Merci à PK pour la solution.// | ||
- | ===== Erreurs dans le fichier /etc/apt/source.list ===== | + | ===== Erreurs dans le fichier /etc/apt/sources.list ===== |
- | Les erreurs de type : | + | Les erreurs de type : |
<code> | <code> | ||
Ligne 242: | 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 248: | 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 256: | 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 288: | 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 311: | 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 325: | 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 334: | 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 340: | 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 356: | 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 à disparu. | ||
- | |||
- | Vous pouvez le 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]]// |