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édentesRévision précédente
Prochaine révision
Révision précédente
probleme_apt [Le 02/03/2016, 20:13] – [Problèmes avec les gestionnaires de paquets] 90.31.21.77probleme_apt [Le 25/04/2023, 09:20] (Version actuelle) – lien vers la logithèque frombenny
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 ouvertSi 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]]//