Wie behebt man das apt-get-Update "Hash Sum Mismatch"?

23

Ich habe eine virtuelle Ubuntu 12.04-Box, die ich mit Vagrant instanziiere.

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

Sobald die Vagrant-Box ausgeführt wird apt-get update, erhalte ich die folgende Fehlermeldung.

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

Dinge, die ich versucht habe, um diesen Fehler zu umgehen.

  • Verwendet 3 verschiedene Ubuntu 12.04 Boxen von ' http://www.vagrantbox.es '
  • Lösungsvorschlag hier :

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

  • Puppet Labs Pakete entfernt und neu eingelesen

Ich habe auch ähnliche Vorschläge ausprobiert, die ich auf den ersten Seiten von Google gefunden habe. Ich habe sogar mehrere Computer und mehrere Internetverbindungen ausprobiert.

Die Tatsache, dass dies mehrere Ubuntu-VMs auf mehreren Internetverbindungen beeinflusst hat, lässt mich denken, dass mit dem Ubuntu-Repo etwas nicht stimmt.

Wie kann ich sonst versuchen, dieses Problem zu beheben?

Aktualisieren

Ich habe versucht, '/ var / lib / apt / lists / partial' zu bereinigen und apt-get clean auszuführen. Dann habe ich die Quellen in / etc / sources / list durch die hier vorgeschlagenen Amazon Mirrors ersetzt :

Ich bekomme immer noch einen ähnlichen Fehler

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

Ich habe zu Hause 2 Internetverbindungen, beide haben den gleichen Fehler gemeldet. Sobald ich meinen Laptop zu meiner Internetverbindung mitgenommen hatte, verschwand das Problem.

Ich bin immer noch gespannt, warum meine Internetverbindung einen Unterschied macht.

Update3

Siehe meine Antwort unten für eine Erklärung. Mein Internetfilter hat den Download beschädigt.

Ich werde die Frage umformulieren, da es noch keine Antworten gibt.

Gibt es eine Möglichkeit, Hash-Summen-Fehlanpassungen in apt-get zu überschreiben?

Spuder
quelle
Haben Sie den Cache wie hier vorgeschlagen geleert ?
Kiwy
Enthält Ihre Distribution auch apt-cacher NG? weil es unzuverlässig scheint
Kiwy
Ich bin auf diesen Blog gestoßen und habe festgestellt, dass apt-cache-ng nicht installiert ist. Das Problem ging weg, als ich einen anderen Hypervisor mit einer anderen Internetverbindung ausprobierte.
Spuder
Vielleicht eine fehlerhafte Implementierung eines bestimmten Hash auf einem Hypervisor, aber es ist immer noch sehr seltsam.
Kiwy
Ihre Lösung hat auch bei mir funktioniert. Ich habe einen auf AWS gehosteten TinyProxy-Server ausgeführt und einige Anzeigenfilter eingerichtet. Sobald ich den Proxy in der apt.conf entfernt habe, funktioniert alles einwandfrei.

Antworten:

20

Zunächst sollten Sie verstehen, warum Hashsummenfehler auftreten. Im Allgemeinen gibt es zwei Gründe:

Erstens verwenden einige apt-Repositorys LZMA (.xz) -komprimierte Metadaten. apt before version 1.0 dekomprimiert LZMA-Archive nicht richtig (manchmal) und gibt den Hash-Summen-Mismatch-Fehler aus.

Hierfür gibt es zwei Möglichkeiten:

  1. Weisen Sie Ihren apt-Client an, keine XZ-komprimierten Metadaten zu verwenden
  2. Aktualisieren Sie apt auf Ihrem System auf eine neuere Version als 1.0

Schauen Sie sich diesen Blog-Beitrag an, den ich zu diesem Problem geschrieben habe, in dem beide Problemumgehungen ausführlicher erläutert werden.

Zweitens sind APT-Repositorys von Natur aus rassig . Die eigentlichen APT-Metadaten sind fehlerhaft und das Design macht es für geeignete Clients unmöglich, die Repository-Metadaten auf konsistente Weise herunterzuladen, wenn apt-get updatedies während der Aktualisierung des Repositorys geschieht.

Hierfür gibt es zwei Möglichkeiten:

  1. Aktualisieren Sie auf eine neuere Version von APT und stellen Sie sicher, dass das Repository, das Sie erstellen (oder verwenden möchten), die Funktion " Acquire-by-Hash" unterstützt . Dies behebt das Problem im Kern, ist jedoch in einigen Fällen nicht möglich, wenn Sie das Repository nicht kontrollieren.
  2. Sie können die zwischengespeicherten Metadaten auf Ihrem System löschen und es erneut versuchen. Führen Sie dazu zuerst apt-get cleangefolgt von aus rm -rf /var/lib/apt/lists/*. Als nächstes laufen apt-get update. Dadurch werden alle Metadaten erneut heruntergeladen. Wenn sich das Repository, zu dem Sie eine Verbindung herstellen möchten, während der Ausführung nicht selbst aktualisiert apt-get update, ist dies in Ordnung. Andernfalls müssen Sie dies erneut tun.
Joe Damato
quelle
Dies ist die einzige Lösung, die bei mir funktioniert hat! Vielen Dank für den Blog-Beitrag
Amir Uval
Sie haben gesagt, dass es besser ist, die neueste Version zu verwenden. Könnten Sie mir bitte sagen, wie ich es aktualisieren soll?
Amir Uval
Wie genau verwenden Sie die Funktion "Acquire-by-Hash"? Ich habe Blogs darüber gesehen, aber sie sagen nicht genau, in welcher Datei sie es ablegen sollen, und sie zeigen kein Beispiel.
Linux G33NYUS
6

Herausgefunden.

Meine beiden Computer sind in jeder Hinsicht identisch, außer dass ich auf meinem PC einen Internetfilter installiert habe.

Der k9-Internetfilter hat eine Kernel-Erweiterung installiert, die anscheinend den Datenverkehr stört.

Sobald ich den Filter deinstalliert hatte, verschwand das Problem.

Ich recherchiere immer noch, ob es eine Möglichkeit gibt apt-get update, Hash-Summen-Inkongruenzen als Workaround zu ignorieren.

Spuder
quelle
Das ist sehr sinnvoll, da ich dieses Problem erst kürzlich nach der Installation von k9 hatte. aber ich habe die Verbindung zu der Zeit nicht hergestellt. Eine Problemumgehung wäre schön, da ich es offensichtlich vorziehen würde, den Filter nicht zu deaktivieren (schließlich gibt es dafür einen Grund).
MuffinTheMan
Ja, aber wie könnte ich das tun (den Filter entfernen), weil ich das gleiche Problem von dir habe, aber trotzdem
Laden Sie die neueste Version von k9 von der Website herunter. Das Installationspaket enthält ein Deinstallationsprogramm.
Spuder