Problemi durante il download dell'elenco dei pacchetti a causa di un errore "Mancata corrispondenza somma hash"


389

Quando controllo gli aggiornamenti, viene visualizzato l'errore "Impossibile scaricare le informazioni sul repository".

Questo è ciò che emerge nei dettagli:

W: Failed to fetch gzip:/var/lib/apt/lists/partial/us.archive.ubuntu.com_ubuntu_dists_natty_main_source_Sources  Hash Sum mismatch, 
E: Some index files failed to download. They have been ignored, or old ones used instead.

Risposte:


461

Basta rimuovere tutto il contenuto della /var/lib/apt/listsdirectory:

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

quindi eseguire:

sudo apt-get update

69
Se rimuovi tutti i file, devi scaricarli di nuovo. Puoi semplicemente rimuovere il file non valido per rendere questo processo più veloce.
Behrang,

9
Ricordo che questo accadeva anche con Debian. La soluzione è stata quella di passare ai repository (ad esempio, da us.ubuntu.com a XX.ubuntu.com dove XX è il codice del proprio paese) o in attesa. L'idea migliore sarebbe quella di aspettare un po 'e riprovare più tardi. La rimozione degli elenchi potrebbe correggere gli elenchi non funzionanti, ma raramente è così.
f.ardelian,

4
Vecchia domanda, ma su alcune distro (come emdebian), dopo aver fatto questo dovrai " mkdir /var/lib/apt/lists/partial" (come root, ovviamente.), Altrimenti non puoi " apt-get update" o altrimenti usare apt.
Archenoth,

7
@AlyssaGono se è una cartella, devi eseguire rm con il flag ricorsivo in questo modo: sudo rm -R /var/lib/apt/lists/*tuttavia, anche farlo non ha funzionato per me.
mchid,

2
Abbiamo bisogno del prefisso -rf , quindi sarà simile asudo rm -rf /var/lib/apt/lists/*
Askar

127

Questo è un problema noto ed è esacerbato per i client dietro le cache proxy. Alcune grandi organizzazioni e ISP (specialmente in parti remote del mondo) hanno cache trasparenti di cui potresti non essere a conoscenza.

Il problema fondamentale è che il formato del repository apt è soggetto alle condizioni di competizione quando viene aggiornato un mirror. Questo problema riguarda in particolare i repository che cambiano rapidamente, come la versione di sviluppo.

È possibile tenere traccia dei progressi relativi alla correzione per questo in questo bug (si prega di contrassegnarsi come "influenza anche me" nel bug) e questo progetto . Tuttavia, tieni presente che si tratta di un problema complesso e potrebbe richiedere più di una versione per risolverlo.


4
Quel progetto non è più accessibile; ecco una copia archiviata .
Eliah Kagan,

16
questo errore esiste anche su Ubuntu 16.04
Scott Stensland

1
Il bug è stato contrassegnato come "Fix Release".

Ho appena cambiato il mio mirror predefinito al miglior server e il suo lavoro per me.
Habibun,

99

Il modo più semplice per risolvere questo problema è:

sudo apt-get clean
sudo apt-get update

12
Dopo aver provato la risposta accettata, continuavo a riscontrare gli stessi errori, e subito dopo ho risolto il problema
Alex,

17
Facendo sudo rm -rf /var/lib/apt/lists/*quindi sudo apto-get cleanrisolto il problema anche per me. Né ha funzionato in isolamento.
Cam

3
non aiuta su Ubuntu 16.04 ... né il commento sopra aiuta nessuno
Scott Stensland

3
sudo apt-get cleannon ha aiutato con 16.04, ma sudo rm -rf /var/lib/apt/lists/*risolto
sdaffa23fdsf

2
Per me, la risposta accettata non ha funzionato, ma questa ha funzionato (Ubuntu 16.04).
JCasso,

52

L'unica soluzione che ha funzionato per me è unix.stackexchange .

Succede perché esiste un bug noto, e la soluzione è aggiornare con un metodo di compressione diverso, quindi i file si caricano correttamente e il checksum ha esito positivo.

Prova questo:

sudo rm -rf /var/lib/apt/lists/partial
sudo apt-get update -o Acquire::CompressionTypes::Order::=gz

(grazie @brook_hong dai commenti per la parte rm)


9
Questa è l'unica soluzione qui che ha funzionato per me. Grazie.
Cerin,

3
Ha funzionato anche per me. Si noti che non è necessario eseguire sempre questo comando. Basta eseguirlo una volta, quindi è possibile eseguire "apt-get update" senza errori.
Dalf

2
Ho provato a utilizzare la soluzione generica da vari forum, ma questo funziona immediatamente. Grazie.
wkhwilo,

2
Ha funzionato per me su Ubuntu 16.04 / Linux Mint
David Okwii,

3
Questa è l'unica soluzione che ha funzionato per me, sto usando Ubuntu 16.04
Sunny Shukla il

44

Ho ancora avuto il problema dopo aver rimosso le directory e averlo fatto sudo apt-get update.
Solo il passaggio seguente ha risolto il mio problema:

sudo sed -i -re 's/\w+\.archive\.ubuntu\.com/archive.ubuntu.com/g' /etc/apt/sources.list

Non so se questo è il modo giusto di risolverlo ...
Ho trovato la soluzione qui .


13
Si dovrebbe notare che de-part indica un server per la Germania e che questo script sostituisce il server locale con il server principale. Passare a Sorgenti software tramite la GUI e cambiare l'impostazione sarebbe più sicuro e reversibile per molti utenti. Quanto segue dovrebbe funzionare per quasi tutti i paesi:sudo sed -i 's/[a-z][a-z].archive.ubuntu.com/archive.ubuntu.com/g' /etc/apt/sources.list
LiveWireBT

23

Ciò può accadere quando il mirror non è aggiornato o se gli errori di pubblicazione sono sovraccarichi. Puoi aspettare un po 'e riprovare oppure passare a un altro mirror:


2
Perché un server di non essere al corrente, o di sovraccarico, provocare un file con il nome corretto di successo scaricare (nel senso che il collegamento non termina fino a quando tutti i byte vengono inviati e ricevuti), ma essere danneggiato? (Non sto affermando che ciò non accada, spero solo che tu possa essere in grado di spiegare il perché.)
Eliah Kagan,

3
@EliahKagan Il problema normalmente non è che il file stesso è corrotto, ma che esiste un file di dati (sto semplificando ma non troppo) e un file di indice contenente l'hash (impronta digitale) del file di dati. Quando i repository vengono aggiornati (accade ogni ora) sul server, un file dopo l'altro viene aggiornato. Ora può succedere che il tuo client (apt-get o simile) acceda al server quando il file di dati è stato aggiornato ma il file di indice non è stato ancora aggiornato (o viceversa). Quindi l'hash non corrisponde al file di dati e il client (falsamente) presuppone che il file di dati sia danneggiato.
Patrick Häcker,

1
Cambiare lo specchio ha funzionato per me quando nessuna delle risposte sopra ha fatto.
mango,

10

Se sei dietro un proxy, quindi crea un file chiamato 99fixbadproxyin /etc/apt/apt.conf.d/:

sudo gedit /etc/apt/apt.conf.d/99fixbadproxy

Incollalo 99fixbadproxye salvalo:

Acquire::http::Pipeline-Depth 0;
Acquire::http::No-Cache true;
Acquire::BrokenProxy    true;

Ora esegui il comando di aggiornamento:

sudo apt-get update

1
Caspita, stavo provando ogni risposta, è strano quante diverse problematiche sembrino sfociare nello stesso sintomo.
raddoppiato il

1
Sono molto in debito con questa risposta
bremen_matt

5

I seguenti comandi possono risolvere il problema.

sudo rm -R /var/lib/apt/lists/partial/*

e poi

sudo apt-get update && sudo apt-get upgrade

risolverà il tuo problema. Ho anche affrontato lo stesso problema, ma i comandi precedenti hanno risolto il problema per me. Quindi provali.

Riferimento soluzione


4
Ho appena provato, e non ha funzionato; I primi apt-get updatefile creati nuovamente nello stesso posto in quella directory.
Volker Siegel,

3

Ho avuto lo stesso identico problema e tutte le soluzioni fornite utilizzando il terminale non sono state di aiuto.

Per me, è stato andando in:

Impostazioni → Software e aggiornamenti → Software Ubuntu: Scarica da: Change Locala Main Server.

Inizia a ricaricare i repository e l'aggiornamento. Quando entro:

sudo apt-get update

Dopo ciò, non ci sono stati problemi. Sto usando Ubuntu 14.04.4 LTS.


1

Non so che sia la soluzione corretta o meno, ma ho fatto quanto segue e il messaggio di errore è andato:

Dopo aver digitato il sudo apt-get updateterminale, mi dà i nomi di alcuni pacchetti che causano l'errore, quindi ho fatto quanto segue:

Gestione aggiornamenti (aggiornamento software) → Impostazione → Configura origini software → Altro software [scheda] → Deseleziona i pacchetti

Dopo aver premuto il pulsante "chiudi" in basso, il gestore aggiornamenti ha iniziato a verificare nuovamente l'aggiornamento automaticamente e ho visualizzato questo messaggio: "il software su questo computer è aggiornato. Ultimo controllo 2 secondi fa."

Kubuntu 12.04


Questo ha funzionato per me e nessun'altra soluzione pubblicata qui ha funzionato. Tranne che non ho l'interfaccia utente di Ubuntu (che esegue la riga di comando solo in WSL), quindi invece, per ogni pacchetto in <pkg>cui si è verificato l'errore, ho eseguito `sudo apt-get install <pkg> '. Sono su Ubuntu 16.04.
Yitz,

1

Ho avuto lo stesso identico problema e tutte le soluzioni fornite utilizzando il terminale non sono state di aiuto.

Per me, è stato andando in:

Impostazioni → Software e aggiornamenti → Altro software: deseleziona tutte le caselle e premi chiudi.

Inizia a ricaricare i repository e l'aggiornamento. Quando entro:

sudo apt-get update

Dopo ciò, non ci sono stati problemi. Sto usando Ubuntu 13.10.


Questo funziona ma acceca efficacemente la macchina dalla possibilità di installare pacchetti che non fanno parte della build principale (fino a quando quelle caselle di controllo non verranno riattivate in seguito) ... ma a volte è necessario solo per ottenere un aggiornamento apt-get privo di errori che consenta installazione di pacchetti mirati
Scott Stensland

1

Ho avuto un problema simile e l'ho risolto aprendo l'applicazione "Software e aggiornamenti" e, nella scheda "Software Ubuntu", cambiando il valore di "Scarica da" (in quell'elenco a discesa, prova a selezionare, ad esempio, Principale Server se non fosse così).


Sì, l'unica cosa che ha funzionato per me. Il server svizzero sembra rotto.
Eric MORAND,

1

Come follow @ robie-basak, ho usato apt-cacher-ngcome cache di mirroring. Quindi rimuovo il proxy e il problema è stato risolto.

Rimuovo il proxy nel file /etc/apt/apt.conf.d/01proxy:

#Acquire::http::Proxy "http://xxx.xx.xx.xx:4321";

Quindi è necessario:

sudo rm -rf /var/lib/apt/lists/*
sudo aptitude update
sudo aptitude upgrade

1

Avevo appena installato Ubuntu 17.10 e stavo ottenendo lo stesso errore di Hash Sum Mismatch per alcuni repository. Sono andato su Software e Checked Source come mostrato di seguito e non ci sono stati ulteriori problemi per il download di repository dal terminale.

La mia sezione Software e aggiornamenti


0

Questo può accadere se stai utilizzando un router con controllo genitori e non hai mai inserito il tuo lampone pi in un elenco "non gestito". Per me, ho visto che l'URL stava reindirizzando a un dominio circolare, gestito dal router.

Quindi ho appena aggiunto il mio pi alla lista non gestita, e ha funzionato bene.


0

Ho risolto tutti i pacchetti che non venivano installati eseguendo questo comando:

sudo apt-get install PACKAGENAME

Per ciascuno dei pacchetti. Ora sono installati e l'errore "Mancata corrispondenza somma hash" è andato.


0

Niente ha funzionato per me. Dopo aver provato e le soluzioni suggerite, finalmente, avevo scaricato manualmente i pacchetti rotti, li avevo copiati in / var / cache / apt / archives e rimosso i pacchetti rotti da / var / cache / apt / archives / partial.


0

Ho riscontrato lo stesso problema nel mio Ubuntu 18.04, di seguito è la mia esperienza pratica:

  1. Rimuovi il proxy in /etc/apt/apt.conf
  2. Passa a source.list ufficiale di apt /etc/apt/sources.list
  3. Correre sudo rm -rf /var/lib/apt/lists/*
  4. Pacchetti puliti sudo apt autoremove -y && sudo apt autoclean -y
  5. Aggiorna e aggiorna. sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y && sudo apt autoclean -y

Fatto!


0

Questo è successo per me su Ubuntu 16.04 e nessuna delle soluzioni più votate ha funzionato. La soluzione stava aggiornando i pacchetti:

sudo apt-get update    # this will fail
sudo apt-get upgrade
sudo apt-get update    # this will succeed

Non sono sicuro se la pulizia di vecchi elenchi ( sudo rm -rf /var/lib/apt/lists/*e / o sudo apt-get clean) abbia aiutato o meno! Usali se necessario.


0

20190112 #Errors #apt #Fix #Updates Impossibile recuperare ... Mancata corrispondenza somma hash

  1. Esegui apt-get e scopri quali parole chiave cercare in /etc/apt:
    • $ sudo apt-get -y update
    • ...
    • Err: 77 http://au.archive.ubuntu.com/ubuntu xenial-updates / multiverse DEP-11 64x64 icone
    • Mancata corrispondenza della somma hash
    • ...
    • In questo caso, la parola chiave è "DEP-11"
  2. Cerca /etc/aptnell'albero le parole chiave:
    • $ sudo find / etc / apt -type f -exec egrep -in "DEP-11" "{}" / dev / null ";"
    • /apt.conf.d/50appstream:1:## Questo file è fornito da appstreamcli (1) per scaricare DEP-11
    • /apt.conf.d/50appstream:6: deb :: DEP-11 {
    • /apt.conf.d/50appstream:9: Descrizione "$ (RELEASE) / $ (COMPONENT) $ (NATIVE_ARCHITECTURE) DEP-11 Metadata";
    • /apt.conf.d/50appstream:15: # Icone di dimensioni normali per i componenti della GUI descritti nel DEP-11
    • /apt.conf.d/50appstream:17: deb :: DEP-11-icons {
    • /apt.conf.d/50appstream:20: Descrizione "$ (RELEASE) / $ (COMPONENT) DEP-11 64x64 icone";
    • /apt.conf.d/50appstream:27: # i metadati YAML DEP-11.
    • /apt.conf.d/50appstream:28: deb :: DEP-11-icons-hidpi {
    • /apt.conf.d/50appstream:31: Descrizione "$ (RELEASE) / $ (COMPONENT) DEP-11 128x128 icone";
  3. Dopo aver trovato l'elenco offensivo, spostalo da qualche parte nel caso in cui non funzioni:

    sudo mv -f /apt.conf.d/50appstream /tmp  
    
  4. Ripulire /var/lib/apt:

    sudo apt-get -y clean  
    sudo rm -rf /var/lib/apt/lists/*  
    sudo find /var/lib/apt -type d -name "partial" -exec rm -rf "{}" ";"  
    
  5. Prova ad aggiornare ora, dovrebbe funzionare ora:

    sudo apt-get -y update  
    
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.