Problème lors du téléchargement de la liste des packages en raison d'une erreur «incompatibilité de somme de hachage»

389

Lorsque je vérifie la présence de mises à jour, le message d'erreur "Impossible de télécharger les informations du référentiel" s'affiche.

Voici ce qui se passe sous les détails:

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.
Rob
la source

Réponses:

461

Il suffit de supprimer tout le contenu du /var/lib/apt/listsrépertoire:

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

puis lancez:

sudo apt-get update
Lorem
la source
69
Si vous supprimez tous les fichiers, vous devez les télécharger à nouveau. Vous pouvez simplement supprimer le fichier non valide pour accélérer ce processus.
Behrang
9
Je me souviens de ce qui s'est passé avec Debian aussi. La solution consistait à changer de référentiel (par exemple, de us.ubuntu.com à XX.ubuntu.com où XX est le code de votre pays) ou d’attendre. La meilleure idée serait d'attendre un peu et de réessayer plus tard. En supprimant les listes, il est possible de réparer les listes brisées, mais c'est rarement le cas.
f.ardelian
4
Vieille question, mais sur certaines distributions (comme emdebian), après cela, vous aurez besoin de " mkdir /var/lib/apt/lists/partial" (en tant que root, évidemment.), Sinon vous ne pouvez pas " apt-get update" ou utiliser autrement apt.
Archenoth
7
@AlyssaGono si c'est un dossier, vous devez exécuter rm avec le drapeau récursif comme ceci: sudo rm -R /var/lib/apt/lists/*cependant, même cela n'a pas fonctionné pour moi.
mchid
2
Nous avons besoin du préfixe -rf , ainsi il ressemblerasudo rm -rf /var/lib/apt/lists/*
Askar
127

Ce problème est connu et est exacerbé pour les clients derrière des caches de proxy. Certaines grandes organisations et fournisseurs de services Internet (en particulier dans les régions isolées du monde) ont des caches transparentes dont vous ignorez peut-être l'existence.

Le problème fondamental est que le format du référentiel apt est soumis à des conditions de concurrence lorsqu'un miroir est mis à jour. Ce problème concerne particulièrement les référentiels qui changent rapidement, tels que la version de développement.

Vous pouvez suivre la progression du correctif dans ce bogue (veuillez vous marquer comme "m'affecte aussi" dans le bogue) et dans ce plan . Sachez toutefois qu'il s'agit d'un problème complexe qui peut prendre plus d'une version à résoudre.

Robie Basak
la source
4
Ce plan n'est plus accessible; voici une copie archivée .
Eliah Kagan
16
Ce bug existe aussi sur Ubuntu 16.04
Scott Stensland
1
Le bogue a été marqué comme "Fix Released".
Je viens de changer mon miroir par défaut sur le meilleur serveur et son travail pour moi.
Habibun
99

Le moyen le plus simple de résoudre ce problème est:

sudo apt-get clean
sudo apt-get update
realhu
la source
12
Après avoir essayé la réponse acceptée, j'avais toujours les mêmes erreurs, mais cela immédiatement après a corrigé le problème
Alex
17
Faire sudo rm -rf /var/lib/apt/lists/*alors sudo apto-get cleancorrigé le problème pour moi aussi. Ni a travaillé en vase clos.
Cam
3
ne pas aider sur Ubuntu 16.04 ... pas plus que le commentaire ci-dessus n'a aidé
Scott Stensland
3
sudo apt-get cleann'a pas aidé avec 16.04, mais l'a sudo rm -rf /var/lib/apt/lists/*corrigé
sdaffa23fdsf
2
Pour moi, la réponse acceptée ne fonctionnait pas, mais celle-ci fonctionnait (Ubuntu 16.04).
JCasso le
54

La seule solution qui a fonctionné pour moi provient de unix.stackexchange .

Cela se produit car il existe un bogue connu, il est possible, et la solution consiste à mettre à jour avec une méthode de compression différente, afin que les fichiers se chargent correctement et que la somme de contrôle aboutisse.

Essayez ceci:

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

(merci @brook_hong des commentaires pour la partie rm)

Amir Uval
la source
9
C'est la seule solution qui a fonctionné pour moi. Merci.
Cerin
3
Il a travaillé pour moi aussi. Notez que vous ne devez pas toujours exécuter cette commande. Il suffit de l’exécuter une fois et vous pouvez ensuite exécuter «apt-get update» sans erreur.
dalf
2
J'ai essayé d'utiliser la solution générique de divers forums, mais cela fonctionne immédiatement. Je vous remercie.
wkhwilo
2
Travaillé pour moi sur Ubuntu 16.04 / Linux
David Okwii
3
C'est la seule solution qui a fonctionné pour moi, j'utilise Ubuntu 16.04
Sunny Shukla le
44

J'ai toujours eu le problème après avoir supprimé les répertoires et fait sudo apt-get update.
Seule l'étape suivante a résolu mon problème:

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

Je ne sais pas si c'est la bonne façon de régler
le problème ... J'ai trouvé la solution ici .

m13r
la source
13
Il est à noter que de-part indique un serveur pour l'Allemagne et que ce script remplace le serveur local par le serveur principal. Le passage aux sources logicielles par le biais de l’interface graphique et la modification du paramètre seraient plus sûrs et réversibles pour de nombreux utilisateurs. Ce qui suit devrait fonctionner dans presque tous les pays:sudo sed -i 's/[a-z][a-z].archive.ubuntu.com/archive.ubuntu.com/g' /etc/apt/sources.list
LiveWireBT le
23

Cela peut se produire lorsque votre miroir n’est pas à jour ou si des erreurs ne sont pas surchargées. Vous pouvez attendre un moment et réessayer ou passer à un autre miroir:

Jorge Castro
la source
2
Pourquoi un serveur ne pas être à jour, ou surcharge, causer un fichier avec le nom correct avec succès télécharger (au sens que la connexion ne se termine pas jusqu'à ce que tous les octets sont envoyés et reçus), mais être corrompu? (Je ne suis pas en train d'affirmer que cela n'arrive pas, j'espère juste que vous pourrez expliquer pourquoi.)
Eliah Kagan
3
@EliahKagan Le problème n'est normalement pas que le fichier lui-même est corrompu, mais qu'il existe un fichier de données (je simplifie mais pas trop) et un fichier d'index contenant le hachage (empreinte digitale) du fichier de données. Lorsque les référentiels sont mis à jour (toutes les heures), sur le serveur, un fichier après la mise à jour de l'autre. Maintenant, il peut arriver que votre client (apt-get ou similaire) accède au serveur lorsque le fichier de données a été mis à jour mais que le fichier d’index n’a pas encore été mis à jour (ou inversement). Ensuite, le hachage ne correspond pas au fichier de données et le client (faussement) suppose que le fichier de données est corrompu.
Patrick Häcker
1
Changer le miroir a fonctionné pour moi alors qu'aucune des réponses ci-dessus ne le faisait.
mangue
10

Si vous êtes derrière un proxy, créez un fichier nommé 99fixbadproxydans /etc/apt/apt.conf.d/:

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

Collez ceci dans 99fixbadproxyet enregistrez-le:

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

Maintenant, lancez la commande de mise à jour:

sudo apt-get update
Musaffa
la source
1
Wow, j'essayais chaque réponse, il est étrange de voir combien de problèmes différents semblent provoquer le même symptôme.
jumelé
1
Je suis très reconnaissant de cette réponse
bremen_matt
5

Les commandes suivantes peuvent résoudre votre problème.

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

puis

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

cela résoudra votre problème. J'ai également rencontré le même problème, mais les commandes ci-dessus ont résolu le problème pour moi. Alors essayez-les.

Référence de la solution

Shaharia Azam
la source
4
J'ai juste essayé et cela n'a pas fonctionné; Le premier apt-get updatecrée à nouveau les fichiers au même endroit dans ce répertoire.
Volker Siegel le
3

J'ai eu exactement le même problème et toutes les solutions fournies à l'aide du terminal n'ont pas aidé.

Pour moi, c'était en allant dans:

Paramètres → Logiciels et mises à jour → Logiciel Ubuntu: Télécharger de: Change Localà Main Server.

Il commence à recharger les dépôts et à mettre à jour. Quand j'entre:

sudo apt-get update

Après cela, il n'y avait plus aucun problème. J'utilise Ubuntu 14.04.4 LTS.

Habibun
la source
1

Je ne sais pas si c'est la bonne solution ou non, mais j'ai fait ce qui suit et le message d'erreur est parti:

Après avoir tapé sudo apt-get updateterminal, il me donne les noms de certains paquets qui causent l’erreur puis j’ai fait ce qui suit:

Gestionnaire de mise à jour (mise à jour logicielle) → Paramétrage → Configurer les sources de logiciels → Autres logiciels [onglet] → Désélectionnez les packages.

Après avoir appuyé sur le bouton "Fermer", le gestionnaire de mise à jour a commencé à vérifier automatiquement la mise à jour et j'ai vu le message suivant: "le logiciel de cet ordinateur est à jour. Dernière vérification il y a 2 secondes."

Kubuntu 12.04

Hassan.J.
la source
Cela a fonctionné pour moi et aucune autre solution affichée ici n'a fonctionné. Sauf que je n'ai pas l'interface utilisateur Ubuntu (la ligne de commande ne fonctionnant que sous WSL), donc à la place, pour chaque paquetage <pkg>où l'erreur s'est produite, j'ai exécuté «sudo apt-get install <pkg>». Je suis sur Ubuntu 16.04.
Yitz
1

J'ai eu exactement le même problème et toutes les solutions fournies à l'aide du terminal n'ont pas aidé.

Pour moi, c'était en allant dans:

Paramètres → Logiciels et mises à jour → Autres logiciels: décochez toutes les cases et appuyez sur fermer.

Il commence à recharger les dépôts et à mettre à jour. Quand j'entre:

sudo apt-get update

Après cela, il n'y avait plus aucun problème. J'utilise Ubuntu 13.10.

Paul London
la source
Cela fonctionne, mais empêche effectivement la machine d’installer des paquets ne faisant pas partie de la construction principale (jusqu’à ce que ces cases soient réactivées ultérieurement). installation de paquets ciblés
Scott Stensland
1

J'ai eu un problème similaire et je l'ai résolu en ouvrant l'application "Logiciels et mises à jour" et, dans l'onglet "Logiciels Ubuntu", en modifiant la valeur de "Télécharger de" (dans cette liste déroulante, essayez de sélectionner, par exemple, Fenêtre principale). Serveur si ce n'était pas comme ça).

Andrea Pravato
la source
Oui, seule chose qui a fonctionné pour moi. Le serveur suisse semble cassé.
Eric MORAND
1

Comme suit @ robie-basak, j'ai utilisé apt-cacher-ngcomme mise en cache miroir. Donc, je supprime le proxy et le problème résolu.

Je supprime le proxy dans le fichier /etc/apt/apt.conf.d/01proxy:

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

Alors besoin de:

sudo rm -rf /var/lib/apt/lists/*
sudo aptitude update
sudo aptitude upgrade
shgnInc
la source
1

Je venais tout juste d'installer Ubuntu 17.10 et j'obtenais la même erreur de Hash Sum Mismatch pour un certain référentiel.

Mon logiciel et section de mise à jour

Rahul Soshte
la source
0

Cela peut arriver si vous utilisez un routeur avec des contrôles parentaux et que vous n'avez pas ajouté votre framboise pi à une liste "non gérée". Pour moi, je pouvais voir que l'URL était redirigé vers un domaine de cercle, géré par le routeur.

Donc, je viens d'ajouter mon pi à la liste non gérée, et cela a bien fonctionné.

Brad Park
la source
0

J'ai résolu tous les packages qui ne sont pas installés en exécutant cette commande:

sudo apt-get install PACKAGENAME

Pour chacun des forfaits. Ils sont maintenant installés et l'erreur "Hash Sum mismatch" a disparu.

BiggJJ
la source
0

Rien n'a fonctionné pour moi. Après avoir essayé les solutions suggérées, finalement, j'avais téléchargé manuellement les paquets cassés, les copiez dans / var / cache / apt / archives et retirais les paquets cassés de / var / cache / apt / archives / partial.

Ravi Misra
la source
0

J'ai rencontré le même problème dans mon Ubuntu 18.04, voici mon expérience pratique:

  1. Supprimer le proxy dans /etc/apt/apt.conf
  2. Passer à la source officielle d'apt /etc/apt/sources.list
  3. Courir sudo rm -rf /var/lib/apt/lists/*
  4. Forfaits propres sudo apt autoremove -y && sudo apt autoclean -y
  5. Mise à jour et mise à niveau. sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y && sudo apt autoclean -y

Terminé!

JsonBruce
la source
0

Cela m'est arrivé sur Ubuntu 16.04, et aucune des solutions les plus votées n'a fonctionné. La solution consistait à mettre à jour des paquets:

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

Je ne sais pas si le nettoyage des anciennes listes ( sudo rm -rf /var/lib/apt/lists/*et / ou sudo apt-get clean) vous a aidé ou non! Utilisez-les si nécessaire.

Mohammad Dehghan
la source
0

20190112 #Errors #apt #Fix #Updates Echec de l'extraction ... Incompatibilité de la somme de hachage

  1. Lancez apt-get et découvrez quels mots clés rechercher /etc/apt:
    • $ sudo apt-get -y update
    • ...
    • Err: 77 http://au.archive.ubuntu.com/ubuntu xenial-updates / multiverse Icônes DEP-11 64x64
    • Incohérence de la somme de hachage
    • ...
    • Dans ce cas, le mot clé est "DEP-11"
  2. Recherchez dans l' /etc/aptarbre des mots-clés:
    • $ sudo trouve / etc / apt -type f -exec egrep -in "DEP-11" "{}" / dev / null ";"
    • /apt.conf.d/50appstream:1:## Ce fichier est fourni par appstreamcli (1) pour télécharger le fichier DEP-11.
    • /apt.conf.d/50appstream:6: deb :: DEP-11 {
    • /apt.conf.d/50appstream:9: Description "$ (RELEASE) / $ (COMPONENT) $ (NATIVE_ARCHITECTURE) Métadonnées DEP-11";
    • /apt.conf.d/50appstream:15: # Icônes de taille normale pour les composants d'interface graphique décrits dans le DEP-11
    • /apt.conf.d/50appstream:17: deb :: DEP-11-icons {
    • /apt.conf.d/50appstream:20: Description "Icônes $ (RELEASE) / $ (COMPONENT) DEP-11 64x64";
    • /apt.conf.d/50appstream:27: # les métadonnées YAML DEP-11.
    • /apt.conf.d/50appstream:28: deb :: DEP-11-icons-hidpi {
    • /apt.conf.d/50appstream:31: Description "Icônes $ (RELEASE) / $ (COMPONENT) DEP-11 128x128";
  3. Après avoir trouvé la liste incriminée, déplacez-la quelque part au cas où cela ne fonctionnerait pas:

    sudo mv -f /apt.conf.d/50appstream /tmp  
    
  4. Nettoyer /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. Essayez de mettre à jour maintenant, cela devrait fonctionner maintenant:

    sudo apt-get -y update  
    
Malcolm Boekhoff
la source