Come si risolve un errore "Problema con MergeList" o "Impossibile analizzare il file di stato" quando si tenta di eseguire un aggiornamento?

341

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 problema?

    
posta Braiam 12.03.2011 - 18:13

8 risposte

472

Questi comandi del terminale dovrebbero risolvere il tuo problema:

Prima rimuovi la Merge List aprendo un terminale (premi Ctrl + Alt + T per lanciare) ed esegui questo comando *:

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

Successivamente, generane uno nuovo eseguendo un semplice aggiornamento:

sudo apt-get update

Ecco la segnalazione di bug (e altro ) per questo problema, che è stato corretto quindi non dovrebbe creare nuovi file malformati, tuttavia se già avere i file non corretti necessari per rimuoverli come spiegato in questo post.

* Le opzioni utilizzate per rm sono -v verbose

  

-v, --verbose                 spiega cosa si sta facendo

e -f force

  

-f, --force                 ignora file e argomenti inesistenti, mai prompt

Se non sei mai sicuro di una riga di comando o se le opzioni in uso si riferiscono sempre alla pagina di manuale per il comando. Questi possono essere consultati su Internet cercando man e il comando ad esempio man rm oppure puoi 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

    
risposta data Allan 13.03.2011 - 17:53
80

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

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

Vedi anche:

  • link
risposta data tommyk 08.02.2011 - 19:37
23

Ti sei rovinato quando hai modificato /var/lib/dpkg/status . Ripristinalo dal backup che hai creato prima di modificarlo. Certo, hai fatto un backup, vero?

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

Puoi usare /var/lib/dpkg/status.old come punto di riferimento. Si tratta di un backup del file status precedente all'ultima volta in cui è stato eseguito dpkg . Esegui

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

per vedere le differenze. Annulla le modifiche apportate manualmente e mantieni le modifiche apportate dall'ultimo dpkg eseguito.

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

Non è mai necessario 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. A prescindere dai tuoi problemi con crossplatformui , probabilmente c'è un modo migliore per risolverli. L'unica volta che ho avuto bisogno di modificare /var/lib/dpkg/status era quando un file Packages upstream era rotto.

    
risposta data Gilles 13.05.2012 - 17:37
18

Ho fatto

sudo apt-get clean
sudo apt-get update

e ha funzionato.

    
risposta data psychok7 31.07.2012 - 15:34
16

I seguenti passaggi 2-5 nella procedura di risoluzione dei problemi di Gestione pacchetti in genere risolvono questo problema.

Per passaggio 2 , disattiva tutti tuo PPA. Puoi deselezionarli tutti in Sorgenti software allo stesso modo in cui deselezioneresti solo uno; vedi 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 i gestori di pacchetti siano non in esecuzione . Questo include il Centro Software, il Software Updater (Update Manager nelle versioni precedenti di Ubuntu), Synaptic e Gdebi. Include anche utility di gestione dei pacchetti da riga di comando come apt-get , dpkg e aptitude .

Nota che se altri utenti sono connessi allo stesso tempo, dovrebbero disconnettersi se possibile.

Per passaggio 4 , apri una finestra di terminale. Un modo per farlo, indipendentemente dall'ambiente desktop che usi, è 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\n"; cat -n ""' _ '{}' \;

L'ho copiato letteralmente da PackageManagementTroubleshoootingProcedure il 2 marzo 2014. Questi comandi si sono evoluti in passato e i comandi consigliati in quell'articolo potrebbe essere cambiato o ampliato di nuovo in futuro . Quindi potresti voler lavorare da passaggio 5 lì . (Quell'articolo, creato / modificato da "Collaboratori alla wiki della documentazione di Ubuntu" - in particolare Mark Rijckenberg --is concesso in 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 capacità, puoi abilitare tu per diagnosticare e risolverlo.)

Spesso questo lo risolve ma, quando non succede, fornisce spesso informazioni sufficienti per risolverlo.

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

    
risposta data Eliah Kagan 28.11.2011 - 03:36
11

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

Prova la soluzione pubblicata sopra e / o forse anche quella che a volte è raccomandata 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 ti metti.

    
risposta data andybleaden 08.05.2011 - 12:19
4

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. Così 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

Quindi apt-get update ha funzionato senza problemi.

Il credito va a questo post

    
risposta data Andrew 12.04.2014 - 00:43
3

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

  • Vai a Software & amp; aggiornamenti - & gt; Software Ubuntu - & gt; Scarica da - & gt; Altro- & gt; Seleziona il miglior server

  • Attendi 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 internazionali.

  • Ora ricarica i dati Repo, finirà correttamente.

risposta data Muhammad El Nakeep 11.11.2015 - 05:12

Leggi altre domande sui tag