web-dev-qa-db-fra.com

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

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 suggéré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é 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.

Mise à jour3

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 asymétries de Hash Sum dans apt-get?

24
spuder

Deviner.

Mes deux ordinateurs sont identiques à tous points de vue 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 update ignorer les décalages de somme de hachage comme solution de contournement.

6
spuder

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 correctement les archives LZMA (donnant parfois) 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 à jour apt sur votre système vers une version plus récente que 1.0

Découvrez ceci article de blog J'ai écrit sur ce problème qui explique les deux contournements plus en détail.

Deuxièmement, les référentiels APT sont intrinsèquement racés . Les métadonnées réelles APT 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 le apt-get update se produit pendant la mise à jour du référentiel.

Il existe deux solutions pour cela:

  1. Mettez à niveau vers ne 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 Acquire-by-hash . 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 clean suivi par 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, tu seras bien. Sinon, vous devrez recommencer.
22
Joe Damato