Vraag Hoe los ik een fout "Probleem met samenvoegingslijst" of "statusbestand kan niet worden geparseerd" op wanneer ik probeer een update uit te voeren?


De computer gaf me deze uitvoer in een venster:

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.

Hoe kan ik dit oplossen?


342
2018-03-12 17:13


oorsprong


Het blijft me verbazen hoe onhandig dit besturingssysteem met zijn updates omgaat, zelfs nu, dat dit en soortgelijke dingen zijn vereist zonder speciaal misbruik door de gebruiker. - matt


antwoorden:


Deze terminalopdrachten zouden je probleem moeten oplossen:

Verwijder eerst de samenvoeglijst door een terminal te openen (druk op Ctrl+alt+T om te starten) en voer dit commando * uit:

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

Maak vervolgens een nieuwe aan door een eenvoudige update uit te voeren:

sudo apt-get update

Hier is de bug report (en een ander) voor dit probleem, dat nu is opgelost, zodat het geen nieuwe verkeerd ingedeelde bestanden moet maken, maar als je al de verkeerd ingedeelde bestanden hebt, moet je deze verwijderen zoals uitgelegd in dit bericht.


* De opties die voor rm worden gebruikt zijn -v breedsprakig

-v, --verbose                 leg uit wat er wordt gedaan

en -f dwingen

-f, --force                 negeer niet-bestaande bestanden en argumenten, nooit vragen

Als u twijfelt over een opdrachtregel of de opties die worden gebruikt, raadpleegt u altijd de handmatige pagina voor het commando. Deze kunnen op internet worden geopend door te zoeken naar man en de opdracht bijvoorbeeld man rm of u hebt toegang tot dezelfde informatie door bijvoorbeeld exact dezelfde opdracht in de terminal te typen man rm instructies voor het afsluiten van de pagina bevinden zich onderaan deze terminal

picture of man page options


473
2018-03-13 16:53



Eén persoon vond dat hij deze twee stappen meerdere keren moest uitvoeren, maar dat het uiteindelijk werkte. - John S Gruber
Het is vreemd om de -vf aan het einde van de rm opdracht. - Keith Thompson
Het loste het probleem niet voor mij op. update laat me nog steeds die fout zien. - marines
Dit is een terugkerend probleem. Het gebeurt zo nu en dan. Is iemand op de hoogte van de oorzaak van dit probleem? - Rushil
Ik heb het antwoord bewerkt voor begrip @jasser - Allan


Open een Terminal en voer de volgende opdrachten één voor één uit:

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

Zie ook:


80
2018-02-08 18:37



wat doet de -vf? - speedox
@speedox, volgens man rm, -v betekent 'breedsprakig', en -f betekent 'kracht'. Met andere woorden, verwijder alle aangewezen bestanden zonder vragen en vertel de gebruiker wat hij doet. - fouric
In mijn geval alleen het doen sudo apt-get update repareerde het probleem. Ik denk dat Allan zei dat nieuwere versies van apt dit automatisch corrigeren, dus probeer misschien eerst de update. - ThorSummoner


Je hebt het verprutst toen je het redde /var/lib/dpkg/status. Herstel het van de back-up die u hebt gemaakt voordat u het bewerkt. Natuurlijk heb je een back-up gemaakt, toch?

Aangezien je geen back-up hebt gemaakt, moet je hem opnieuw bewerken, voorzichtig. Probeer niet meer schade aan te richten.

Je kunt gebruiken /var/lib/dpkg/status.old als een referentiepunt. Dit is een back-up van de status bestand van vóór de laatste keer dpkg werd uitgevoerd. Rennen

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

om de verschillen te zien. Maak de wijzigingen ongedaan die u handmatig hebt aangebracht en bewaar de wijzigingen die door de laatste zijn aangebracht dpkg rennen.

Als het echt niet lukt om het bestand te repareren, kopieer /var/lib/dpkg/status.old over- /var/lib/dpkg/status. U krijgt een goedgevormde, maar verouderde pakketdatabase.

U hoeft nooit te bewerken /var/lib/dpkg/status bij normaal gebruik. Zelfs als dingen serieus fout gaan, /var/lib/dpkg/status is niet iets dat de neiging heeft om tussenkomst van de beheerder te vereisen. Waar je problemen ook mee zijn crossplatformui waren, er is waarschijnlijk een betere manier om ze op te lossen. De enige keer dat ik ooit heb moeten bewerken /var/lib/dpkg/status was toen een stroomopwaartse Packages bestand was gebroken.


23
2018-05-13 15:37



Ik zou ook graag willen weten hoe je crossplatformui hebt verwijderd als je kon helpen omdat ik alle mogelijke manieren heb geprobeerd om het te verwijderen en heb geprobeerd veel oplossingen te vinden, maar alleen degene die ik heb genoemd, heeft gewerkt ... - Nirmik
@Nirmik Geen idee over crossplatformui. Vraag dat als een afzonderlijke vraag. Ik kan je vertellen dat in meer dan een decennium van gebruik dpkg, inclusief veel niet-officiële bronnen, heb ik heel zelden het status bestand, en alleen als er een repository van derden was. - Gilles
Oké ... weer heel veel .... zoals je suggereert, zal ik het plaatsen als een nieuwe vraag :) ook als je een zeer gevorderde gebruiker lijkt zou ik je willen vragen of je iets weet over het maken van niet-functionerende HOT -KLEYS werken ?? (mijn draadloze sleutel werkt) - Nirmik
Geprobeerd om de oude in plaats van de nieuwe te zetten, loste niet voor mij op. :-( - Stéphane Gourichon
re: {Je hebt het verprutst als je / var / lib / dpkg / status} hebt bewerkt - nee, dat ben ik niet, ik heb dit bestand niet aangeraakt :) Dit is echter alleen een oplossing die het probleem in mijn geval. Dank je. - ruslo


ik deed

sudo apt-get clean
sudo apt-get update

en het werkte.


18
2017-07-31 13:34



Ik heb het niet voor me opgelost. :-( - Stéphane Gourichon


Volg de stappen 2-5 in de Package Manager Troubleshooting Procedure lost meestal dit probleem op.

Voor stap 2, uitschakelen alle uw PPA's. U kunt ze allemaal deselecteren in Softwarebronnen op dezelfde manier waarop u slechts één vinkje verwijdert; zien Hoe een bepaalde PPA uit te schakelen?. Je kunt ze later opnieuw inschakelen.

Voor stap 3, sluit alle geopende programma's die je kunt. Het is waarschijnlijk veilig om je webbrowser open te houden, zodat je je instructies voor je hebt staan. Maar het is vooral belangrijk om ervoor te zorgen dat pakketbeheerders er zijn niet rennen. Dit omvat het Software Center, de Software Updater (Update Manager in oudere versies van Ubuntu), Synaptic en Gdebi. Het bevat ook commandoregel-pakketten voor pakketbeheer, zoals apt-get, dpkg, en aptitude.

Merk op dat als andere gebruikers zijn op hetzelfde moment aangemeld, ze moeten indien mogelijk uitloggen.

Voor stap 4, open een terminalvenster. Eén manier om dit te doen, dat werkt, ongeacht de bureaubladomgeving die u gebruikt, is drukken op Ctrl+alt+T.

Voor stap 5, voer deze opdrachten uit in het terminalvenster:

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

Ik heb dat woord letterlijk overgenomen van PackageManagementTroubleshoootingProcedure op 2 maart 2014. Die commando's zijn in het verleden geëvolueerd en de aanbevolen opdrachten in dat artikel kan in de toekomst opnieuw worden gewijzigd of uitgebreid. Dus je wilt misschien werken stap 5 daar. (Dat artikel, aangemaakt / bewerkt door "Contributors to the Ubuntu documentation wiki" - in het bijzonder Mark Rijckenberg--is CC-BY-SA 3.0 met licentie, wat opname hier mogelijk maakt met de juiste attributie.)

Sommige van deze commando's proberen het probleem op te lossen (en kunnen ook diagnostische informatie tonen); anderen tonen waardevolle informatie over het probleem dat u in uw vraag kunt opnemen of anderszins aan iemand die u helpt. (Of, afhankelijk van uw vaardigheden, mogelijk inschakelen u om een ​​diagnose te stellen en het op te lossen.)

Vaak wordt dit opgelost, maar als dit niet gebeurt, geeft het vaak genoeg informatie om het te repareren.

U hoeft die opdrachten niet handmatig in te voeren; je kunt ze kopiëren en plakken. Ik raad echter aan om ze allemaal afzonderlijk te plakken en te gebruiken. Dit maakt het duidelijker welke uitvoer van welke commando's afkomstig is.


16
2017-11-28 02:36



Ik heb het hele blok gekopieerd en geplakt in plaats van één voor één te draaien. Hoewel verschillende commando's nutteloos zijn en sommigen mislukt, maar uiteindelijk helpt het in mijn geval - phuclv


Ik heb ook dit probleem zien optreden wanneer u te veel bronnen in uw repo's hebt.

Probeer de oplossing die hierboven is gepost en / of misschien ook die welke soms wordt aanbevolen op het startscherm:

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

Laat ons weten hoe het met u gaat.


11
2018-05-08 10:19



Dank je! Dit werkte niet met DSL zonder de makedir. - Doug


Ik kwam een ​​soortgelijke fout tegen:

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.

Ik volgde vergelijkbare suggesties om te kopiëren status-old.

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

Al mijn statusbestanden waren om een ​​of andere reden blanco. Gelukkig kwam ik erachter dat er back-ups van deze bestanden zijn:

$ 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

Ik heb de laatste back-up gecontroleerd ...

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

... maar het was nog steeds leeg. Dus ik heb een oudere uitgepakt ...

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

Deze keer was er inhoud. Dus ik heb het gekopieerd ...

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

Dan apt-get update liep zonder problemen.

Krediet gaat naar dit bericht.


4
2018-04-11 22:43





Ik had hetzelfde probleem en probeerde alle probleemoplossing die in andere antwoorden wordt genoemd. Vreemd genoeg was de enige oplossing een andere stap:

  • Ga naar Software & updates -> Ubuntu-software -> Download van -> Andere -> Selecteer de beste server

  • Wacht op de tests. Aan het einde van de tests wordt de beste server geselecteerd, niet noodzakelijkerwijs de dichtstbijzijnde server, noch de hoofdserver noch de server voor uw landinstelling.

  • Herlaad nu Repo-gegevens, het zal correct eindigen.


3
2017-11-11 04:12