373 votes

Comment corriger une erreur "Problem with MergeList" ou "status file could not be parsed" lorsque j'essaie de faire 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 ?

8 votes

Je suis toujours déconcerté par la façon maladroite dont ce système d'exploitation gère ses mises à jour, même maintenant, que cette chose et d'autres similaires sont nécessaires après aucun abus particulier de la part de l'utilisateur.

503voto

Allan Points 11332

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

Supprimez d'abord la liste de fusion en ouvrant un terminal (appuyez sur Ctrl + Alt + T pour le lancer) et exécutez cette commande* :

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

Ensuite, générez-en un nouveau 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é de sorte qu'il ne devrait pas créer de nouveaux fichiers malformés, cependant si vous avez déjà les fichiers malformés, vous devez les supprimer comme expliqué dans cet article.


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

-v, --verbose explique ce qui est fait

y -f force

-f, --force ignore les fichiers et les arguments inexistants, ne demande jamais l'avis de l'utilisateur.

Si vous n'êtes pas sûr d'une ligne de commande ou des options utilisées, reportez-vous toujours à l'onglet page de manuel pour la commande. Vous pouvez y accéder sur Internet en recherchant man 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 se trouveront en bas du terminal, comme ceci

picture of man page options

8 votes

Une personne a constaté qu'elle a dû effectuer ces deux étapes plusieurs fois, mais que cela a fini par fonctionner.

0 votes

Cela fonctionne également pour les erreurs Reading package lists... Error! E: Malformed Description-md5 line; includes invalid character 'fc1f7600accbcc"07ef9954ba3306c14' E: The package lists or status file could not be parsed or opened. dans une Ubuntu 13.04 prête à l'emploi (sources.list jamais édité manuellement)

5 votes

C'est bizarre de mettre le -vf à la fin de la rm commandement.

86voto

Alexandre Points 600

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 :

1 votes

Que fait le -vf ?

5 votes

@speedox, selon man rm , -v signifie "verbeux", et -f signifie "force". En d'autres termes, il supprime tous les fichiers désignés sans demander l'avis de l'utilisateur et lui dit ce qu'il fait.

0 votes

Dans mon cas, il suffit de faire le sudo apt-get update a réglé le problème. Je crois qu'Allan a mentionné que les nouvelles versions d'Apt corrigent ce problème automatiquement, alors essayez d'abord la mise à jour.

23voto

Schof Points 952

Tu t'es planté quand tu as édité /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, éditez-la à nouveau, soigneusement . Essayez de ne pas causer plus de dommages.

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

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

pour voir les différences. Annulez les modifications que vous avez effectuées manuellement, et conservez les modifications effectuées par la dernière version du logiciel. dpkg courir.

Si vous n'arrivez vraiment 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 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 tend à nécessiter l'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 d'éditer /var/lib/dpkg/status c'est lorsqu'une personne en amont Packages a été cassé.

0 votes

J'aimerais également connaître la meilleure méthode que vous avez mentionnée pour supprimer crossplatformui si vous pouvez m'aider car j'ai essayé toutes les méthodes possibles pour le supprimer et j'ai essayé de trouver de nombreuses solutions mais seule celle que j'ai mentionnée a fonctionné...

1 votes

@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 de dpkg y compris de nombreuses sources non officielles, je n'ai que très rarement eu besoin d'éditer la page d'accueil du site. status et seulement quand il y avait un dépôt tiers cassé.

0 votes

Ok...Merci beaucoup encore une fois.... comme vous le suggérez je vais le poster comme une nouvelle question :) aussi comme vous semblez être un utilisateur très avancé je voudrais vous demander si vous savez quelque chose sur la façon de faire fonctionner des HOT-KTEYS qui ne fonctionnent pas ? (ma clé sans fil ne fonctionne pas)

20voto

robsku Points 17

Je l'ai fait.

sudo apt-get clean
sudo apt-get update

et ça a marché.

2 votes

Ça n'a pas marché pour moi. :-(

16voto

Eliah Kagan Points 111731

En suivant les étapes 2 à 5 de l Procédure de dépannage du gestionnaire de paquets résout généralement ce problème.

Para étape 2 , désactiver todo vos AAE. Vous pouvez les décocher tous dans Sources logicielles de la même manière que vous en décocheriez un seul ; voir Comment désactiver un PPA particulier ? . Vous pouvez les réactiver ultérieurement.

Para étape 3 fermez tous les programmes ouverts que vous pouvez. Il est probablement prudent de garder votre navigateur web ouvert afin d'avoir vos instructions sous les yeux. Mais il est particulièrement important de s'assurer que tous les gestionnaires de paquets sont fermés. ne fonctionne pas . Il s'agit notamment du Centre de logiciels, du Software Updater (Update Manager dans les anciennes versions d'Ubuntu), de Synaptic et de Gdebi. Il comprend également des utilitaires de gestion de paquets en ligne de commande tels que apt-get , dpkg y aptitude .

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

Para étape 4 ouvrir 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 .

Para é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"' _ '{}' \;

Je l'ai copié mot pour mot de Procédure de gestion des paquets et de dépannage 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 à l'avenir . Vous pouvez donc travailler à partir étape 5 là . (Cet article, créé/édité par "Contributeurs au wiki de documentation d'Ubuntu", en particulier Mark Rijckenberg -- est sous licence CC-BY-SA 3.0 ce qui permet de l'inclure 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 à une personne qui vous aide. (Ou, en fonction de vos compétences, peuvent permettre à vous pour le diagnostiquer et le résoudre).

Souvent, cela résout le problème, mais quand ce n'est pas le cas, cela donne 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 vous recommande cependant de les coller et de les exécuter séparément. Cela permet d'identifier plus clairement les résultats de chaque commande.

0 votes

J'ai copié le bloc entier et le coller au lieu de l'exécuter un par un. Bien que plusieurs commandes soient inutiles et que certaines échouent, cela m'a finalement aidé dans mon cas.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X