web-dev-qa-db-fra.com

Comment corriger une erreur «Problème avec MergeList» ou «Le fichier d'état n'a pas pu être analysé» lors d'une tentative de mise à jour?

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éparer cela?

352
user12250

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 lancer) et lancer cette commande *:

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

Ensuite, générez un nouveau en exécutant une simple mise à jour:

Sudo apt-get update

Voici le rapport de bogue (et n autre ) pour ce problème, qui est maintenant corrigé, il ne devrait donc pas créer de nouveaux fichiers malformés. Toutefois, si vous avez déjà ces fichiers malformés, besoin de les supprimer comme expliqué dans ce post.


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

-v, --verbose explique ce qui se fait

et -f force

-f, --force ignore les fichiers et arguments inexistants, jamais Invite

Si vous avez des doutes sur une ligne de commande ou sur les options utilisées, reportez-vous toujours à la page de manuel de la commande. Vous pouvez y accéder sur Internet en cherchant 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 man rm des instructions pour quitter la page seront au bas du terminal, comme ceci

picture of man page options

481
Allan

Ouvrez un terminal et exécutez les commandes suivantes une à la fois:

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

Voir également:

82
tommyk

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

Puisque vous n’avez pas fait de sauvegarde, modifiez-la à nouveau, avec soin. 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 statusd'avant la dernière exécution de dpkgname__. Courir

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 celles effectuées lors de la dernière exécution de dpkgname__.

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

Vous n'avez jamais besoin de modifier /var/lib/dpkg/status en fonctionnement normal. Même lorsque les choses tournent mal, /var/lib/dpkg/status n’a pas tendance à demander l’intervention de l’administrateur. Quels que soient vos problèmes avec crossplatformuiname__, il existe probablement un meilleur moyen de les résoudre. La seule fois où j'ai eu besoin d'éditer /var/lib/dpkg/status était quand un fichier Packagesen amont était cassé.

23
Gilles

J'ai fait

Sudo apt-get clean
Sudo apt-get update

et cela a fonctionné.

18
psychok7

Suivre les étapes 2 à 5 de la procédure Procédure de dépannage du gestionnaire de package résout généralement ce problème.

Pour étape 2 , désactivez all vos PPA. Vous pouvez les désélectionner toutes dans les sources de logiciels de la même manière que vous en désélectionnez une seule; voir Comment désactiver un PPA particulier? . Vous pouvez les réactiver plus tard.

Pour étape 3 , fermez tous les programmes ouverts que vous pouvez. Il est probablement prudent de garder votre navigateur Web ouvert pour avoir vos instructions sous les yeux. Mais il est particulièrement important de s’assurer que tous les gestionnaires de paquets sont ne tourne pas . Cela inclut le centre de logiciels, le programme de mise à jour de logiciels (gestionnaire de mises à jour dans les versions antérieures d'Ubuntu), Synaptic et Gdebi. Il inclut également des utilitaires de gestion de packages en ligne de commande tels que apt-get, dpkg et aptitude.

Notez que si autres utilisateurs sont connectés en même temps, ils doivent se déconnecter si possible.

Pour étape 4 , ouvrez une fenêtre de terminal. Une façon de le faire qui fonctionne, quel que soit l'environnement de bureau utilisé, consiste à 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$1\n"; cat -n "$1"' _ '{}' \;

J'ai copié ce compte rendu textuel de PackageManagementTroubleshoootingProcedure le 2 mars 2014. Ces commandes ont évolué dans le passé et les commandes recommandées dans cet article peuvent être modifiées ou développées à nouveau dans avenir . Donc, vous voudrez peut-être travailler à partir de étape 5 ici . (Cet article, créé/édité par "Les contributeurs du wiki de la documentation Ubuntu" - en particulier Mark Rijckenberg - est sous licence CC-BY-SA 3. , qui permet l'inclusion ici avec une 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 fournir autrement à une personne qui vous aide. (Ou, selon vos compétences, peut permettre vous == de le diagnostiquer et de le résoudre.)

Souvent, cela corrige le problème, mais lorsqu'il ne le fait pas, il donne souvent suffisamment d'informations pour le résoudre.

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

16
Eliah Kagan

J'ai également vu ce problème se produire lorsque vous avez trop de sources dans votre dépôt.

Essayez la solution indiquée ci-dessus et/ou peut-être aussi ce qui est parfois recommandé dans 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

Fais nous savoir comment tu reussis.

11
andybleaden

Je courais dans 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 de statut étaient vierges pour une raison quelconque. Heureusement, j'ai découvert qu'il existe 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. J'ai donc décompressé un fichier plus ancien ...

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

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

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

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

Le crédit va à ce poste.

4
Andrew

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

  • Allez dans Logiciels et mises à jour -> Logiciel Ubuntu -> Télécharger de -> Autres -> Sélectionnez Meilleur serveur.

  • Attendez les tests. À la fin des tests, le meilleur serveur sera sélectionné, pas nécessairement le serveur le plus proche, ni le serveur principal, ni le serveur de votre région.

  • Maintenant, rechargez les données de mise en pension, elles se termineront correctement.

3
Mohamed El-Nakeep