Comment puis-je corriger une erreur "Problème avec MergeList" ou "fichier d'état ne peut pas être analysé" lors d'une tentative de mise à jour?

341

L'ordinateur m'a donné cette sortie dans une fenêtre:

E: Encountered a section with no Package: header
E: Problem with MergeList /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_natty_main_binary-i386_Packages
E: The package lists or status file could not be parsed or opened.

Comment puis-je résoudre ce problème?

    
posée Braiam 12.03.2011 - 18:13
la source

8 réponses

472

Ces commandes de terminal devraient résoudre votre problème:

Commencez par supprimer la liste de fusion en ouvrant un terminal (appuyez sur Ctrl + Alt + T pour lancer) et exécutez cette commande *:

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

Ensuite, générez-en une nouvelle en exécutant une simple mise à jour:

sudo apt-get update

Voici le rapport de bogue (et un autre ) pour ce problème, qui est maintenant corrigé, il ne doit donc pas créer de nouveaux fichiers malformés, mais si vous avoir les fichiers malformés dont vous avez besoin pour les supprimer comme expliqué dans ce post.

* Les options utilisées pour rm sont -v verbose

  

-v, --verbose                 expliquer ce qui se fait

et -f force

  

-f, --force                 ignorer les fichiers et arguments inexistants, ne jamais inviter

Si vous n'êtes toujours pas sûr de la ligne de commande ou des options utilisées, reportez-vous toujours à la page de manuel de la commande. Celles-ci sont accessibles sur Internet en recherchant man et la commande, par exemple man rm ou vous pouvez accéder aux mêmes informations en tapant exactement la même commande dans le terminal, par exemple les instructions man rm pour quitter la page seront au bas du terminal comme ceci

    
réponse donnée Allan 13.03.2011 - 17:53
la source
80

Ouvrez un terminal et exécutez les commandes suivantes une par une:

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

Voir aussi:

  • lien
réponse donnée tommyk 08.02.2011 - 19:37
la source
23

Vous avez foiré lorsque vous avez édité /var/lib/dpkg/status . Restaurez-le à partir de la sauvegarde que vous avez effectuée avant de le modifier. Bien sûr, vous avez fait une sauvegarde, non?

Comme vous n’avez pas effectué de sauvegarde, modifiez-le à nouveau, soigneusement . Essayez de ne pas causer plus de dégâts.

Vous pouvez utiliser /var/lib/dpkg/status.old comme point de référence. Il s'agit d'une sauvegarde du fichier status avant la dernière exécution de dpkg . Run

diff /var/lib/dpkg/status.old /var/lib/dpkg/status

pour voir les différences. Annulez les modifications que vous avez apportées manuellement et conservez les modifications apportées par la dernière exécution de dpkg .

Si vous ne parvenez pas à réparer le fichier, copiez /var/lib/dpkg/status.old over /var/lib/dpkg/status . Vous obtiendrez une base de données de paquets bien formée mais obsolète.

Vous n'avez jamais besoin d'éditer /var/lib/dpkg/status en fonctionnement normal. Même si les choses tournent mal, /var/lib/dpkg/status n'est pas quelque chose qui nécessite une intervention de l'administrateur. Quels que soient vos problèmes avec crossplatformui , il existe probablement une meilleure façon de les résoudre. La seule fois où j'ai eu besoin de modifier /var/lib/dpkg/status , c'était quand un fichier Packages en amont était cassé.

    
réponse donnée Gilles 13.05.2012 - 17:37
la source
18

J'ai fait

sudo apt-get clean
sudo apt-get update

et ça a fonctionné.

    
réponse donnée psychok7 31.07.2012 - 15:34
la source
16

Les étapes 2 à 5 de la procédure de dépannage du gestionnaire de packages permettent généralement de résoudre ce problème.

Pour étape 2 , désactivez tous votre PPA. Vous pouvez tous les décocher dans les sources logicielles de la même manière que vous en avez sélectionné un; voir Comment désactiver un PPA particulier? . Vous pouvez les réactiver plus tard.

Pour étape 3 , fermez tous les programmes ouverts. Il est probablement prudent de garder votre navigateur Web ouvert pour que vous ayez vos instructions devant vous. Mais il est particulièrement important de s’assurer que tous les gestionnaires de paquets ne sont pas en cours d’exécution. Cela inclut le Software Center, Software Updater (Update Manager dans les anciennes versions d'Ubuntu), Synaptic et Gdebi. Il inclut également des utilitaires de gestion de packages de ligne de commande tels que apt-get , dpkg et aptitude .

Notez que si les autres utilisateurs sont connectés simultanément, ils doivent se déconnecter si possible.

Pour étape 4 , ouvrez une fenêtre de terminal. Une façon de procéder qui fonctionne quel que soit l'environnement de bureau que vous utilisez est d'appuyer sur Ctrl + Alt + T .

Pour étape 5 , exécutez ces commandes dans la fenêtre du terminal:

ubuntu-support-status
sudo grep -R proxy /etc/apt/*
grep proxy  /etc/environment
echo $http_proxy
echo $ftp_proxy
grep proxy /etc/bash.bashrc
grep proxy ~/.bashrc
cat /etc/apt/apt.conf
sudo fuser -vvv /var/lib/dpkg/lock
sudo fuser -vvv /var/cache/apt/archives/lock
cat /etc/lsb-release
uname -a
sudo rm /var/lib/apt/lists/lock 
sudo rm  /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
sudo cp -arf /var/lib/dpkg /var/lib/dpkg.backup
sudo mv /var/lib/dpkg/status /var/lib/dpkg/status-bad
sudo cp /var/lib/dpkg/status-old /var/lib/dpkg/status  ||  sudo cp /var/backups/apt.extended_states.0 /var/lib/dpkg/status
sudo mv /var/lib/dpkg/available /var/lib/dpkg/available-bad
sudo cp /var/lib/dpkg/available-old /var/lib/dpkg/available
sudo rm -rf /var/lib/dpkg/updates/*
sudo rm -rf /var/lib/apt/lists
sudo rm /var/cache/apt/*.bin
sudo mkdir /var/lib/apt/lists
sudo mkdir /var/lib/apt/lists/partial
LANG=C;sudo apt-get clean
LANG=C;sudo apt-get autoclean
LANG=C;sudo apt-get --purge autoremove
LANG=C;sudo apt-get --fix-missing update -o APT::Cache-Limit=100000000
sudo dpkg --configure -a
sudo dpkg --clear-avail
LANG=C;sudo apt-get -f install
LANG=C;sudo apt-get --fix-missing install
LANG=C;sudo apt-get update -o APT::Cache-Limit=100000000 && sudo apt-get dist-upgrade
find /etc/apt -name '*.list' -exec bash -c 'echo -e "\n\n"; cat -n ""' _ '{}' \;

Le 2 mars 2014, je l'ai copié intégralement à partir de PackageManagementTroubleshoootingProcedure . Ces commandes ont évolué dans le passé et les commandes recommandées dans cet article peut être modifié ou étendu à l'avenir . Donc, vous pouvez travailler à partir de étape 5 là-bas . (Cet article, créé / édité par les "contributeurs au wiki de documentation Ubuntu" - en particulier Mark Rijckenberg - est CC-BY-SA 3.0 sous licence , ce qui permet l'inclusion ici avec l'attribution appropriée.)

Certaines de ces commandes tentent de résoudre le problème (et peuvent également afficher des informations de diagnostic); d'autres affichent des informations précieuses sur le problème que vous pouvez inclure dans votre question ou fournissent à quelqu'un qui vous aide. (Ou, selon vos compétences, peut permettre à vous de le diagnostiquer et de le résoudre.)

Souvent, cela résout le problème mais quand il ne le fait pas, il fournit souvent suffisamment d’informations pour le résoudre.

Vous n'avez pas besoin de taper manuellement ces commandes; vous pouvez les copier et les coller. Je recommande cependant de coller et d'exécuter chacun d'eux séparément. Cela rend plus clair quelle sortie est de quelles commandes.

    
réponse donnée Eliah Kagan 28.11.2011 - 03:36
la source
11

J'ai également vu ce problème se produire lorsque vous avez trop de sources dans vos mises en pension.

Essayez la solution affichée ci-dessus et / ou peut-être aussi celle qui est parfois recommandée sur le tableau de bord:

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

Dites-nous comment vous vous entendez.

    
réponse donnée andybleaden 08.05.2011 - 12:19
la source
4

Je rencontrais une erreur similaire:

Reading package lists... Error!
E: Encountered a section with no Package: header
E: Problem with MergeList /var/lib/dpkg/status
E: The package lists or status file could not be parsed or opened.

J'ai suivi des suggestions similaires pour copier status-old .

$ head /var/lib/dpkg/status
$ head /var/lib/dpkg/status-old

Tous mes fichiers d’état étaient vides pour une raison quelconque. Heureusement, j'ai trouvé des sauvegardes de ces fichiers:

$ ls -l /var/backups/dpkg.status.*
-rw-r--r-- 1 root root 444620 Nov 15 06:33 /var/backups/dpkg.status.0
-rw-r--r-- 1 root root 444620 Nov 15 06:33 /var/backups/dpkg.status.1.gz
-rw-r--r-- 1 root root 128168 Sep 20  2013 /var/backups/dpkg.status.2.gz
-rw-r--r-- 1 root root 112545 Sep 16  2013 /var/backups/dpkg.status.3.gz
-rw-r--r-- 1 root root 107767 Sep 14  2013 /var/backups/dpkg.status.4.gz
-rw-r--r-- 1 root root 107766 Sep 11  2013 /var/backups/dpkg.status.5.gz
-rw-r--r-- 1 root root  94583 Sep 11  2013 /var/backups/dpkg.status.6.gz

J'ai vérifié la dernière sauvegarde ...

$ head /var/backups/dpkg.status.0

... mais c'était toujours vide. Alors j'ai décompressé un plus vieux ...

$ gunzip /var/backups/dpkg.status.1.gz
$ head /var/backups/dpkg.status.1

Cette fois, il y avait du contenu. Donc je l'ai copié ...

$ cp /var/backups/dpkg.status.1 /var/lib/dpkg/status

Alors apt-get update a fonctionné sans problème.

Le crédit va à cet article.

    
réponse donnée Andrew 12.04.2014 - 00:43
la source
3

J'ai eu le même problème et essayé tous les dépannages mentionnés dans les autres réponses. Étrangement le seul correctif était une étape différente:

  • Allez à Software & amp; mises à jour - & gt; Logiciel Ubuntu - & gt; Télécharger depuis - & gt; Autre-> Sélectionnez Meilleur serveur

  • Attendez les tests. À la fin des tests, le meilleur serveur sera sélectionné, pas nécessairement le plus proche ni le serveur principal, ni le serveur pour vos paramètres régionaux.

  • Maintenant, rechargez les données Repo, elles se termineront correctement.

réponse donnée Muhammad El Nakeep 11.11.2015 - 05:12
la source

Lire d'autres questions sur les étiquettes