Comment corriger la mise à jour apt-get «Hash Sum mismatch»

24

J'ai une boîte virtuelle virtuelle Ubuntu 12.04 que j'instancie en utilisant Vagrant.

git clone https://github.com/spuder/puppet-gitlab
vagrant up

Dès que la boîte vagabonde s'exécute apt-get update, j'obtiens l'erreur suivante.

...
W: Failed to fetch gzip:/var/lib/apt/lists/partial/apt.puppetlabs.com_dists_precise_main_binary-amd64_Packages  Hash Sum mismatch
W: Failed to fetch gzip:/var/lib/apt/lists/partial/apt.puppetlabs.com_dists_precise_main_binary-i386_Packages  Hash Sum mismatch
W: Failed to fetch gzip:/var/lib/apt/lists/partial/apt.puppetlabs.com_dists_precise_dependencies_binary-i386_Packages  Hash Sum mismatch
W: Failed to fetch http://br.archive.ubuntu.com/ubuntu/dists/precise-updates/restricted/binary-i386/Packages  404  Not Found

Les choses que j'ai essayé de contourner cette erreur.

  • Utilisé 3 boîtes ubuntu 12.04 différentes de ' http://www.vagrantbox.es '
  • solution proposée ici :

    sudo rm -rf / var / lib / apt / lists / *
    sudo apt-get update
    sudo apt-get clean

  • Suppression et réajout des packages de laboratoires de marionnettes

J'ai également essayé des suggestions similaires que j'ai trouvées dans les premières pages de Google. J'ai même essayé plusieurs ordinateurs et plusieurs connexions Internet.

Le fait que cela ait affecté plusieurs vm ubuntu sur plusieurs connexions Internet me fait penser qu'il y a quelque chose de mal avec le repo ubuntu.

Sinon, comment puis-je essayer de résoudre ce problème?

Mise à jour

J'ai essayé de nettoyer '/ var / lib / apt / lists / partial' et d'exécuter apt-get clean, puis j'ai remplacé les sources dans / etc / sources / list en utilisant les miroirs amazon suggérés ici:

Je reçois toujours une erreur similaire

Fetched 18.9 MB in 10s (1,865 kB/s)                                                                                                                                                                            
W: Failed to fetch bzip2:/var/lib/apt/lists/partial/us-west-1.ec2.archive.ubuntu.com_ubuntu_dists_precise_main_binary-amd64_Packages  Hash Sum mismatch
W: Failed to fetch bzip2:/var/lib/apt/lists/partial/us-west-1.ec2.archive.ubuntu.com_ubuntu_dists_precise_universe_binary-amd64_Packages  Hash Sum mismatch
W: Failed to fetch bzip2:/var/lib/apt/lists/partial/us-west-1.ec2.archive.ubuntu.com_ubuntu_dists_precise_multiverse_binary-amd64_Packages  Hash Sum mismatch
W: Failed to fetch bzip2:/var/lib/apt/lists/partial/us-west-1.ec2.archive.ubuntu.com_ubuntu_dists_precise_main_binary-i386_Packages  Hash Sum mismatch
E: Some index files failed to download. They have been ignored, or old ones used instead.

Update2

J'ai 2 connexions Internet à la maison, les deux ont donné la même erreur. Dès que j'ai amené mon ordinateur portable à ma connexion Internet professionnelle, le problème a disparu.

Je suis toujours curieux de comprendre pourquoi ma connexion Internet ferait une différence.

Update3

Voir ma réponse ci-dessous pour une explication. Mon filtre Internet corrompait le téléchargement.

Je vais reformuler la question car il n'y a pas encore de réponses.

Existe-t-il un moyen de remplacer les décalages Hash Sum dans apt-get?

spuder
la source
avez-vous nettoyé le cache comme suggéré ici ?
Kiwy
Votre distribution comprend-elle également apt-cacher NG? car cela semble peu fiable
Kiwy
J'ai rencontré ce blog et j'ai vérifié qu'apt-cache-ng n'est pas installé. Le problème a disparu lorsque j'ai essayé un autre hyperviseur sur une autre connexion Internet.
spuder le
peut-être une implémentation cassée d'un hachage spécifique sur un hyperviseur, mais c'est toujours très étrange.
Kiwy
Votre solution a également fonctionné pour moi. Je passais par un serveur TinyProxy hébergé sur AWS et j'avais une configuration de filtres publicitaires. Une fois que je me suis débarrassé du proxy dans apt.conf, tout fonctionne bien.

Réponses:

21

Tout d'abord, vous devez comprendre pourquoi des erreurs de non-concordance de somme de hachage se produisent. En général, il y a 2 raisons:

Premièrement, certains référentiels apt utilisent des métadonnées compressées LZMA (.xz). apt avant que la version 1.0 ne parvienne pas à décompresser les archives LZMA correctement (parfois), donnant l'erreur de non-concordance de la somme de hachage.

Il existe deux solutions pour cela:

  1. Dites à votre client apt de ne pas utiliser les métadonnées compressées XZ
  2. Mettre à niveau apt sur votre système vers une version plus récente que 1.0

Consultez ce billet de blog que j'ai écrit sur ce problème, qui explique les deux solutions plus en détail.

Deuxièmement, les référentiels APT sont intrinsèquement racés . Les métadonnées APT réelles sont boguées et leur conception empêche les clients apt de télécharger les métadonnées du référentiel de manière cohérente si apt-get updatecela se produit pendant la mise à jour du référentiel.

Il existe deux solutions pour cela:

  1. Mettez à niveau vers une version plus récente d'APT et assurez-vous que le référentiel que vous créez (ou souhaitez utiliser) prend en charge la fonction Acquérir par hachage . Cela corrige le problème dans son cœur, mais n'est pas possible dans certains cas si vous ne contrôlez pas le référentiel.
  2. Vous pouvez supprimer les métadonnées mises en cache sur votre système et réessayer. Pour ce faire, exécutez d'abord apt-get cleansuivi de rm -rf /var/lib/apt/lists/*. Ensuite, exécutez apt-get update. Cela téléchargera à nouveau toutes les métadonnées. Si le référentiel auquel vous essayez de vous connecter ne se met pas à jour pendant que vous exécutez apt-get update, tout ira bien. Sinon, vous devrez recommencer.
Joe Damato
la source
C'est la seule solution qui a fonctionné pour moi! Merci pour le billet de blog
Amir Uval
Vous avez dit qu'il valait mieux être la dernière version. Pourriez-vous me dire comment le mettre à jour?
Amir Uval
Comment utilisez-vous exactement la fonction Acquérir par hachage? J'ai vu des blogs à ce sujet mais ils ne disent pas dans quel fichier exactement le mettre et ils ne montrent pas d'exemple.
LINUX G33NYUS
6

Deviner.

Mes deux ordinateurs sont identiques dans tous les sens sauf sur mon ordinateur personnel j'ai installé un filtre internet.

Le filtre Internet k9 a installé une extension du noyau qui perturbe apparemment le trafic.

Dès que j'ai désinstallé le filtre, le problème a disparu.

Je recherche toujours s'il existe un moyen de faire apt-get updateignorer les décalages de somme de hachage comme solution de contournement.

spuder
la source
Cela a en fait beaucoup de sens, car j'ai récemment commencé à avoir ce problème après l'installation de k9; mais je n'ai pas fait le lien à l'époque. Une solution de contournement serait bien, car je préférerais évidemment ne pas désactiver le filtre (après tout, il est là pour une raison).
MuffinTheMan
Ouais mais comment pourrais-je faire ça (enlever le filtre), parce que j'ai le même problème de toi, mais de toute façon je suis toujours coincé dedans
Téléchargez la dernière version de k9 sur leur site Web. Il y aura un programme de désinstallation à l'intérieur du package d'installation.
spuder