Question Comment puis-je corriger une erreur «Problème avec MergeList» ou «fichier d'état ne peut pas être analysé» lorsque vous essayez d'effectuer une 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?


342
2018-03-12 17:13


origine


Cela me déconcerte à quel point ce système d'exploitation gère maladroitement ses mises à jour, même maintenant, que cela et d'autres choses similaires sont nécessaires après aucune utilisation abusive particulière par l'utilisateur. - matt


Réponses:


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 lancez cette commande *:

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

Ensuite, créez-en un nouveau en exécutant une simple mise à jour:

sudo apt-get update

Voici la rapport d'erreur (et un autre) pour ce problème, qui est maintenant corrigé, il ne devrait pas créer de nouveaux fichiers malformés, mais si vous avez déjà les fichiers malformés, vous devez les supprimer comme expliqué dans ce post.


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

-v, --verbose                 expliquer ce qui se fait

et -f Obliger

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

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

picture of man page options


473
2018-03-13 16:53



Un individu a trouvé qu'il devait faire ces deux étapes plusieurs fois, mais que cela a finalement fonctionné. - John S Gruber
C'est bizarre de mettre le -vfà la fin de rm commander. - Keith Thompson
Cela n'a pas résolu le problème pour moi. mise à jour me montre toujours cette erreur. - marines
C'est un problème récurrent. Il continue à arriver de temps en temps. Quelqu'un est-il conscient de la cause de ce problème? - Rushil
J'ai édité la réponse pour comprendre la capacité @jasser - Allan


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

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

Voir également:


80
2018-02-08 18:37



Que fait le -vf? - speedox
@speedox, selon man rm, -v signifie «verbeux» et -f signifie «force». En d'autres termes, supprimez tous les fichiers désignés sans demander d'avertissement et indiquez à l'utilisateur ce qu'il fait. - fouric
Dans mon cas, juste faire la sudo apt-get update résolu le problème. Je pense qu'Allan a mentionné les nouvelles versions d'apt corrigées automatiquement, alors essayez simplement la mise à jour en premier. - ThorSummoner


Vous avez foiré quand 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. Ceci est une sauvegarde du status déposer avant la dernière fois dpkg Était dirigé. 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 les modifications apportées par la dernière dpkg courir.

Si vous n'arrivez pas vraiment à réparer le fichier, copiez /var/lib/dpkg/status.old plus de /var/lib/dpkg/status. Vous obtiendrez une base de données de packages bien formée mais obsolète.

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


23
2018-05-13 15:37



Je voudrais aussi savoir la meilleure façon dont vous avez mentionné pour supprimer crossplatformui si vous pouviez aider coz j'ai essayé tous les moyens possibles pour le supprimer et essayé de trouver de nombreuses solutions, mais seul celui que j'ai mentionné a fonctionné ... - Nirmik
@Nirmik Aucune idée sur crossplatformui. Posez cette question séparément. Je peux vous dire qu'en plus d'une décennie d'utilisation dpkg, y compris de nombreuses sources non officielles, j'ai très rarement besoin de modifier le status fichier, et seulement quand il y avait un référentiel tiers cassé. - Gilles
Okay ... Merci encore une fois ... comme vous me le proposez, je vais le poster comme une nouvelle question :) aussi que vous semblez être un utilisateur très expérimenté, je voudrais vous demander si vous savez quelque chose sur le fait que HOT ne fonctionne pas -KTEYS travail ?? (mon clé sans fil fonctionne) - Nirmik
J'ai essayé de mettre l'ancien à la place du nouveau, je ne l'ai pas réparé. :-( - Stéphane Gourichon
re: {Vous avez foiré quand vous avez édité / var / lib / dpkg / status} comme pour moi - non, je ne l'ai pas fait, je n'ai pas touché ce fichier :) Cependant, c'est la seule solution qui résout le problème Cas. Je vous remercie. - ruslo


J'ai fait

sudo apt-get clean
sudo apt-get update

et ça a fonctionné.


18
2017-07-31 13:34



N'a pas réparer pour moi. :-( - Stéphane Gourichon


Suivez les étapes 2 à 5 du Procédure de dépannage du gestionnaire de packages résout généralement ce problème.

Pour étape 2, désactiver tout vos AAE. Vous pouvez tous les décocher dans les sources logicielles de la même manière que vous en décochez une seule; voir Comment désactiver un PPA particulier?. Vous pouvez les réactiver ultérieurement.

Pour étape 3, fermez tous les programmes ouverts possibles. 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 sont ne pas courrir. Cela inclut le Software Center, Software Updater (Update Manager dans les anciennes versions d'Ubuntu), Synaptic et Gdebi. Il comprend également des utilitaires de gestion de paquets 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. Un moyen d'y parvenir, quel que soit l'environnement de bureau que vous utilisez, 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 verbatim de PackageManagementTroubleshoootingProcedure le 2 mars 2014. Ces commandes ont évolué dans le passé et les commandes recommandées dans cet article peut être modifié ou élargi à l'avenir. Donc, vous voudrez peut-être travailler à partir de étape 5 il y a. (Cet article, créé / édité par "Contributors to the Ubuntu documentation wiki" - 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 toi pour le diagnostiquer et 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.


16
2017-11-28 02:36



J'ai copié tout le bloc et le collage au lieu de les exécuter un par un. Bien que plusieurs commandes soient inutiles et que certaines échouent, mais finalement cela aide dans mon cas - phuclv


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

Fais nous savoir comment tu reussis.


11
2018-05-08 10:19



Je vous remercie! Cela n'a pas fonctionné avec DSL sans le makedir aussi. - Doug


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 de statut étaient vierges 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. Alors je l'ai copié ...

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

alors apt-get update couru sans problèmes.

Le crédit va à cet article.


4
2018-04-11 22:43