Ceci est une ancienne révision du document !



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.
 E: Impossible de verrouiller /var/lib/dpkg/lock - open (11 Ressource temporairement non disponible)
 E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
  • Sinon effectuez ceci dans un terminal :
sudo rm -rf /var/lib/apt/lists/lock

Si un gestionnaire de paquets vous dit quelque chose comme ça :

E: dpkg was interrupted, you must manually run 'dpkg --configure -a' to correct the problem. 
E: _cache->open(!) failed, please report.

Enfin en tous cas quelque chose qui dit dpkg –configure -a dans le texte.

  • Faites :
sudo dpkg --configure -a
  • Si ça ne marche toujours pas faites :
sudo apt-get install -f
  • Si ça ne marche toujours pas (encore… cas rare) :
sudo dpkg --force-all --configure -a
  • Sinon :
sudo dpkg -P --force-all 'le paquet qui bloque'
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 :

dudumomo@dudumomo-laptop:~$ sudo dpkg --configure -a
dpkg: dependency problems prevent configuration of skype:
 skype depends on libqt4-core (>= 4.2.1); however:
  Package libqt4-core is not installed.
 skype depends on libqt4-gui (>= 4.2.1); however:
  Package libqt4-gui is not installed.
dpkg: error processing skype (--configure):
 dependency problems - leaving unconfigured
Setting up initramfs-tools (0.85eubuntu19) ...
update-initramfs: deferring update (trigger activated)

Setting up lm-sensors (1:2.10.4-1ubuntu1) ...
/usr/bin/ucf: line 351: getopt: command not found
dpkg: error processing lm-sensors (--configure):
 subprocess post-installation script returned error exit status 127
Setting up libpaper1 (1.1.22ubuntu1) ...
/usr/bin/ucf: line 351: getopt: command not found
dpkg: error processing libpaper1 (--configure):
 subprocess post-installation script returned error exit status 127
dpkg: dependency problems prevent configuration of libpaper-utils:
 libpaper-utils depends on libpaper1; however:
  Package libpaper1 is not configured yet.
dpkg: error processing libpaper-utils (--configure):
 dependency problems - leaving unconfigured
Processing trigers for initramfs-tools ...
update-initramfs: Generating /boot/initrd.img-2.6.22-12-generic
/usr/sbin/mkinitramfs: 13: getopt: not found
Terminating...
update-initramfs: failed for /boot/initrd.img-2.6.22-12-generic
dpkg: subprocess post-installation script returned error exit status 1

Là le paquet en question c'est skype

 le sous-processus post-installation script a retourné une erreur de sortie d'état 127
 Des erreurs ont été rencontrées pendant l'exécution : 'le paquet qui bloque'

Faites :

 sudo dpkg -r --force-remove-reinstreq 'le paquet qui bloque'

cas 1

dpkg : erreur de traitement de 'le paquet qui bloque' (--purge) :
 le sous-processus post-removal script a retourné une erreur de sortie d'état 1
 Des erreurs ont été rencontrées pendant l'exécution :
 'le paquet qui bloque'
 E: Sub-process /usr/bin/dpkg returned an error code (1)
  • Puis remplacez "exit 1" par "exit 0" et s'il n'y a pas "exit 1" mettez "exit 0" à la fin. (ou l'inverse, etc.)
  • Si le fichier est vide, ajoutez-y :
 #!/bin/sh
 set -e
 exit 0
 
Si cela ne fonctionne toujours pas, remplacez le contenu de /var/lib/dpkg/info/'le paquet qui bloque'.postrm par
#!/bin/bash
/bin/true

Veillez aussi à ce que le fichier soit bien exécutable, notamment si vous avez dû créer le fichier.

Dans ce cas, le script bloquant était le le sous-processus post-removal donc nous avons édité le ficher .postrm

Si nous avions eu : le sous-processus post-installation, nous aurions dû éditer le fichier .postinst

FIXME: Si celà ne marche pas, il semblerait qu'il faille 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). Si ce n'est pas mieux éditer le fichier /var/lib/dpkg/status et retirer chaque section comportant le paquet bloquant suivi d'un sudo dpkg –configure -a et d'un update.

cas2

Un problème retournant la même erreur survient si vous rajoutez un disque contenant une partition bootable avec grub-pc (grub2) http://forum.ubuntu-fr.org/viewtopic.php?pid=3642612#p3642612

Procédure à mettre au propre

La commande qui va vous sauver est toute simple :

sudo apt-get clean

Puis réinstaller le ou les paquets qui posaient problème :

sudo apt-get install "nom_du_paquet"
W: GPG error: 'adresse d'un dépôt' Release: Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 'XXXXXXXXXXXXXX'

Les dépôts utilisent des clés publiques pour authentifier leur contenu. Si vous avez ajouté un dépôt non officiel (Medibuntu, ppa.launchpad …) à votre liste de canaux logiciels, il vous faut l'authentifier. Consultez le site du dépôt en question, ou la documentation Ubuntu, afin de pouvoir récupérer la clé et l'installer.

Ce message d'erreur n'est qu'un avertissement. En effet, vous pouvez tout à fait ne pas en tenir compte et continuer vos mises à jours ou installations

L'erreur est parfois bloquante, il semblerait que ce soit un problème de proxy. Il est possible de le régler en éditant le fichier /etc/apt/apt.conf.d/90no-cache :

Acquire
{
http
{
No-Cache "true";
};
};

FIXME Vous pouvez également essayer

sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com XXXX

où XXXX est la série de chiffre après NO_PUBKEY

Si ça ne marche pas avec keyserver.ubuntu.com remplacer par hkp://subkeys.pgp.net ou hkp://pgp.mit.edu ou hkp://pool.sks-keyservers.net (serveurs aléatoires) hkp://keys.nayr.net ou encore http://keys.gnupg.net exemple:

sudo apt-key adv --recv-keys --keyserver hkp://subkeys.pgp.net XXXX

Si apt-get update vous renvoie

  Erreur du busistes de paquets... 0%

supprimez les fichiers /var/cache/apt/pkgcache.bin et /var/cache/apt/srcpkgcache.bin

  sudo mv /var/cache/apt/pkgcache.bin ~/pkgcache.bin
  sudo mv /var/cache/apt/srcpkgcache.bin ~/srcpkgcache.bin

Puis refaites

  sudo apt-get update

Probleme rencontré:

L'installation de paquets .deb avec gedebi 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).

Ils sont pourtant installés car lorsqu'on appelle les programmes correspondants, ils se lancent sans problème.

La solution consiste à:

1) localiser le binaire

2) dpkg -S /chemin/binaire

3) aptitude show nompaquet

4) ouvrir Synaptic et vérifier la présence des paquets.

Merci à PK pour la solution.

Les erreurs de type :

'E:Ligne 56 mal formée dans la liste des sources /etc/apt/sources.list (analyse de l'URI), E:La liste des sources ne peut être lue.'

indiquent une erreur dans le fichier /etc/apt/sources.list.

Il suffit de faire sous Gnome :

gksudo gedit /etc/apt/sources.list

ou sous KDE :

kdesudo kate /etc/apt/sources.list

ce qui ouvre le fichier. Il faut alors supprimer ou commenter (c'est à dire ajouter un # au début de la ligne) les lignes mal formées de ce fichier (à noter que le message d'erreur peut n'indiquer qu'une seule ligne alors que plusieurs lignes sont à supprimer).

Les lignes mal formées se reconnaissent facilement : elles ne sont pas commentées et ne respectent pas la syntaxe du sources.list (on trouve des exemples de lignes correctes ici).

FIXME ce générateur de sources.list à été mis à jour la dernière fois pour Ubuntu 10.04

Une fois la modification effectuée, il faut sauver puis quitter, et faire

sudo apt-get update

En cas de doute, on peut également régénérer complètement son sources.list, par exemple à partir de ce site.

Un bug semble parfois empêcher l'accès aux applications de la 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 :

E: Encountered a section with no Package: header
E: Problem with MergeList /var/lib/apt/lists/[...]

La suppression du contenu du dossier /var/lib/apt/lists/ règle souvent le problème :

sudo rm /var/lib/apt/lists/* -vf
sudo apt-get update

Discussion à propos de ce problème sur le forum ubuntu-fr.

W: Erreur de GPG : http://archive.canonical.com oneiric Release : Les signatures suivantes ne sont pas valables : BADSIG 40976EAF437D05B5 Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>
W: Une erreur s'est produite lors du contrôle de la signature. Le dépôt n'est pas mis à jour et les fichiers d'index précédents seront utilisés. Erreur de GPG : http://extras.ubuntu.com oneiric Release : Les signatures suivantes ne sont pas valables : BADSIG 16126D3A3E5C1192 Ubuntu Extras Archive Automatic Signing Key <ftpmaster@ubuntu.com>

W: Impossible de récupérer http://extras.ubuntu.com/ubuntu/dists/oneiric/Release  

W: Le téléchargement de quelques fichiers d'index a échoué, ils ont été ignorés, ou les anciens ont été utilisés à la place.

Si vous avez ce message d'erreur et que vous avez tenté la commande apt-key comme ceci qui au final ne résout pas le problème:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5

Lancez cette série de commande:

sudo rm -r /var/lib/apt/lists
sudo mkdir -p /var/lib/apt/lists/partial
sudo apt-get update
E: Impossible de verrouiller /var/lib/dpkg/status - open (2 Aucun fichier ou répertoire de ce type)
E: Les listes de paquets ou le fichier « status » ne peuvent être analysés ou lus. 

Soit le fichier "status" est corrompu, soit il a été effacé. Ce fichier contient l'ensemble des informations relatives aux paquets installés sur votre système et toutes les manipulations que vous avez effectuées. Sans ce fichier apt et dpkg sont bloqués. Le fonctionnement de votre système est fortement compromis.

* Solution simple, utiliser le fichier status.old généré automatiquement par le système et le renommer en status :

cp /var/lib/dpkg/status.old /var/lib/dpkg/status

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.

## au cas ou un gestionnaire de paquets est encore lancé
sudo rm /var/lib/apt/lists/lock
## un petit backup au cas ou, prudence
sudo cp -arf /var/lib/dpkg /var/lib/dpkg.backup
## on remplace
sudo cp /var/lib/dpkg/status-old /var/lib/dpkg/status
sudo cp /var/lib/dpkg/available-old /var/lib/dpkg/available
## on purge
sudo rm -rf /var/lib/dpkg/updates/*
sudo rm -rf /var/lib/apt/lists
sudo mkdir /var/lib/apt/lists
sudo mkdir /var/lib/apt/lists/partial
sudo rm /var/cache/apt/*.bin
## et on relance
sudo apt-get clean
sudo apt-get autoclean
sudo apt-get update
sudo dpkg --clear-avail
sudo dpkg --configure -a
sudo apt-get install -f
sudo apt-get update
sudo apt-get upgrade

* 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.

Effectuer une copie de sauvegarde du fichier status est une bonne idée, ne pas confondre alors les commandes CP et RM !

Voici la solution trouvée sur ce forum (en)

sudo apt-get clean 
cd /var/lib/apt 
sudo mv lists lists.old 
sudo mkdir -p lists/partial 
sudo apt-get clean 
sudo apt-get update

En cas d'autres erreurs, pour faire le ménage sans devoir redémarrer :

sudo rm /var/lib/apt/lists/lock
sudo rm /var/lib/dpkg/lock
sudo rm /var/cache/apt/archives/lock
sudo killall apt-get

Autre solution possible:

Supprimer tous les fichiers d'installation du paquet par exemple:

rm /usr/bin/[nom du PAQUET] /usr/share/doc/[nom du PAQUET] /usr/share/man/man1/[nom du PAQUET].1.gz /var/crash/[nom du PAQUET].0.crash /var/lib/dpkg/info/[nom du PAQUET].list /var/lib/dpkg/info/[nom du PAQUET].md5sums /var/lib/dpkg/info/[nom du PAQUET].postinst /var/lib/dpkg/info/[nom du PAQUET].prerm

(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:

sudo apt-get remove [nom du PAQUET]; sudo apt-get install [nom du PAQUET]

Contributeurs: Fabien26, на_краю, sheep.

  • probleme_apt.1400254491.txt.gz
  • Dernière modification: Le 16/05/2014, 17:34
  • par 78.221.30.27