Domanda Come posso risolvere un errore "Problema con MergeList" o "file di stato non può essere analizzato" quando provo a fare un aggiornamento?


Il computer mi ha dato questa uscita in una finestra:

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.

Come posso risolvere questo?


342
2018-03-12 17:13


origine


Continua a sconcertarmi sul fatto che questo sistema operativo gestisca i suoi aggiornamenti, anche ora, in modo inopportuno che questo e altri aspetti simili sono necessari dopo l'uso improprio da parte dell'utente. - matt


risposte:


Questi comandi del terminale dovrebbero risolvere il tuo problema:

Per prima cosa rimuovere la Merge List aprendo un terminale (premere Ctrl+alt+T lanciare) ed eseguire questo comando *:

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

Successivamente, generane uno nuovo eseguendo un semplice aggiornamento:

sudo apt-get update

Ecco il riportare un errore (e un altro) per questo problema, che è stato corretto quindi non dovrebbe creare nuovi file malformati, tuttavia se hai già i file malformati devi rimuoverli come spiegato in questo post.


* Le opzioni utilizzate per rm sono -v verboso

-v, --verbose                 spiegare cosa si sta facendo

e -f vigore

-f, --force                 ignora file e argomenti inesistenti, non richiede mai

Se non sei mai sicuro di una riga di comando o se le opzioni in uso si riferiscono sempre al pagina di manuale per il comando. Questi possono essere consultati su Internet cercando per esempio man e il comando amico oppure è possibile accedere alle stesse informazioni digitando esattamente lo stesso comando nel terminale, ad esempio man rm le istruzioni per uscire dalla pagina saranno nella parte inferiore del terminale come questo

picture of man page options


473
2018-03-13 16:53



Un individuo ha scoperto che doveva fare questi due passaggi più volte, ma che alla fine ha funzionato. - John S Gruber
È strano mettere il -vf alla fine di rm comando. - Keith Thompson
Non ha risolto il problema per me. l'aggiornamento mi mostra ancora quell'errore. - marines
Questo è un problema ricorrente. Continua a succedere una volta ogni tanto. Qualcuno è a conoscenza della causa di questo problema? - Rushil
Ho modificato la risposta per capire l'abilità @jasser - Allan


Apri un terminale ed esegui i seguenti comandi uno alla volta:

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

Guarda anche:


80
2018-02-08 18:37



cosa fa il -vf? - speedox
@speedox, secondo man rm, -v significa 'verboso', e -f significa 'forza'. In altre parole, rimuovi tutti i file designati senza chiedere conferma e informa l'utente su cosa sta facendo. - fouric
Nel mio caso, solo facendo il sudo apt-get update risolto il problema Penso che Allan abbia menzionato le versioni più recenti di apt correggendolo automaticamente, quindi forse prova prima solo l'aggiornamento. - ThorSummoner


Hai sbagliato quando hai montato /var/lib/dpkg/status. Ripristinalo dal backup che hai creato prima di modificarlo. Certo, hai fatto un backup, giusto?

Dato che non hai fatto un backup, modificalo di nuovo, accuratamente. Cerca di non causare più danni.

Puoi usare /var/lib/dpkg/status.old come punto di riferimento. Questo è un backup del status file da prima dell'ultima volta dpkg è stato eseguito. Correre

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

per vedere le differenze. Annullare le modifiche apportate manualmente e conservare le modifiche apportate dall'ultima dpkg correre.

Se davvero non riesci a riparare il file, copia /var/lib/dpkg/status.old al di sopra di /var/lib/dpkg/status. Otterrai un database dei pacchetti ben formato, ma non aggiornato.

Non hai mai bisogno di modificare /var/lib/dpkg/status nel normale funzionamento. Anche se le cose vanno seriamente male, /var/lib/dpkg/status non è qualcosa che tende a richiedere l'intervento dell'amministratore. Qualunque sia il tuo problema crossplatformui erano, probabilmente c'è un modo migliore per risolverli. L'unica volta che ho avuto bisogno di modificare /var/lib/dpkg/status era quando un upstream Packages il file era rotto


23
2018-05-13 15:37



Mi piacerebbe anche sapere il modo migliore in cui hai menzionato per rimuovere crossplatformui se potessi aiutare coz ho provato ogni possibile modo per rimuoverlo e ho provato a trovare molte soluzioni ma solo quello che ho menzionato ha funzionato ... - Nirmik
@Nirmik Non ne ho idea crossplatformui. Chiedilo come una domanda separata. Posso dirvi che in oltre un decennio di utilizzo dpkg, tra cui molte fonti non ufficiali, ho molto raramente bisogno di modificare il status file, e solo quando c'era un repository di terze parti guasto. - Gilles
Okay ... Grazie mille ancora una volta .... come suggerirai lo posterò come una nuova domanda :) anche se sembri un utente molto avanzato vorrei chiederti se sai qualcosa su come rendere non funzionante HOT -KTEYS funzionano ?? (il mio key key wireless funziona) - Nirmik
Ho cercato di mettere il vecchio al posto del nuovo, non ha risolto per me. :-( - Stéphane Gourichon
re: {Ti sei rovinato quando hai modificato / var / lib / dpkg / status} come per me - no, non lo sono, non ho toccato questo file :) Comunque questa è solo una soluzione che risolve il problema nel mio Astuccio. Grazie. - ruslo


L'ho fatto

sudo apt-get clean
sudo apt-get update

e ha funzionato.


18
2017-07-31 13:34



Non ha risolto per me. :-( - Stéphane Gourichon


Seguendo i passaggi 2-5 in Procedura di risoluzione dei problemi di Package Manager di solito risolve questo problema.

Per passo 2, disattivare tutti i tuoi PPA. Puoi deselezionarli tutti in Sorgenti software allo stesso modo in cui deselezioneresti solo uno; vedere Come disabilitare un particolare PPA?. Puoi riattivarli in seguito.

Per passaggio 3, chiudi tutti i programmi aperti che puoi. Probabilmente è sicuro tenere aperto il tuo browser in modo da avere le tue istruzioni di fronte a te. Ma è particolarmente importante assicurarsi che tutti i gestori di pacchetti siano non correndo. Questo include il Centro Software, il Software Updater (Update Manager nelle versioni precedenti di Ubuntu), Synaptic e Gdebi. Include anche utility per la gestione dei pacchetti da riga di comando apt-get, dpkg, e aptitude.

Si noti che se altri utenti sono registrati allo stesso tempo, dovrebbero disconnettersi se possibile.

Per passaggio 4, apri una finestra di terminale. Un modo per farlo funziona indipendentemente dall'ambiente desktop che si usa, è quello di premere Ctrl+alt+T.

Per passaggio 5, esegui questi comandi nella finestra del terminale:

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

Ho copiato da ciò che testuale PackageManagementTroubleshoootingProcedure il 2 marzo 2014. Questi comandi si sono evoluti in passato e i comandi consigliati in quell'articolo può essere cambiato o ampliato di nuovo in futuro. Quindi potresti voler lavorare da passo 5 lì. (Quell'articolo, creato / modificato da "Collaboratori alla wiki della documentazione di Ubuntu" - in particolare Mark Rijckenberg--è licenza CC-BY-SA 3.0, che consente l'inclusione qui con la corretta attribuzione.)

Alcuni di questi comandi tentano di risolvere il problema (e possono anche mostrare informazioni diagnostiche); altri mostrano preziose informazioni sul problema che puoi includere nella tua domanda o fornire a qualcuno che ti aiuta. (Oppure, a seconda delle tue abilità, potrebbe abilitare tu per diagnosticare e risolverlo.)

Spesso questo lo risolve ma quando non lo fa spesso fornisce abbastanza informazioni per risolverlo.

Non è necessario digitare manualmente tali comandi; puoi copiarli e incollarli. Raccomando di incollare e far funzionare ognuno separatamente, però. Ciò rende più chiaro quale output proviene da quali comandi.


16
2017-11-28 02:36



Ho copiato l'intero blocco e incolla invece di eseguire uno per uno. Anche se molti comandi in questo sono inutili e alcuni sono falliti, ma alla fine aiuta nel mio caso - phuclv


Ho anche visto che questo problema si verifica quando hai troppe fonti nei tuoi repository.

Prova la soluzione postata sopra e / o forse anche quella che a volte è consigliata su launchpad:

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

Facci sapere come vai avanti


11
2018-05-08 10:19



Grazie! Questo non ha funzionato con DSL senza il makedir. - Doug


Stavo incontrando un errore simile:

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.

Ho seguito suggerimenti simili per copiare status-old.

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

Tutti i miei file di stato erano vuoti per qualche motivo. Fortunatamente, ho scoperto che ci sono dei backup di questi file:

$ 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

Ho controllato l'ultimo backup ...

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

... ma era ancora vuoto. Quindi ho decompresso uno più vecchio ...

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

Questa volta c'era il contenuto. Così l'ho copiato ...

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

Poi apt-get update ha funzionato senza problemi

Il merito va a questo post.


4
2018-04-11 22:43





Ho avuto lo stesso problema e ho provato tutti i problemi di risoluzione menzionati in altre risposte. Stranamente l'unica soluzione era un passo diverso:

  • Vai su Software e aggiornamenti -> Software Ubuntu -> Scarica da -> Altro-> Seleziona il miglior server

  • Aspetta i test. Alla fine dei test verrà selezionato il server migliore, non necessariamente quello più vicino, né il server principale, né il server per le impostazioni locali.

  • Ora ricarica i dati Repo, finirà correttamente.


3
2017-11-11 04:12