Jak naprawić aktualizację apt-get „Niezgodność sumy skrótu”

23

Mam wirtualną skrzynkę vm Ubuntu 12.04, którą tworzę za pomocą Vagrant.

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

Jak tylko włóczęga uruchomi się apt-get update, pojawia się następujący błąd.

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

Rzeczy, które próbowałem obejść ten błąd.

  • Użyto 3 różnych pudełek Ubuntu 12.04 z „ http://www.vagrantbox.es
  • rozwiązanie sugerowane tutaj :

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

  • Usunięto i ponownie przeczytałem paczki z laboratoriami lalek

Próbowałem też podobnych sugestii, które znalazłem na pierwszych stronach Google. Próbowałem nawet wielu komputerów i wielu połączeń internetowych.

Fakt, że wpłynęło to na wiele Ubuntu VM na wielu połączeniach internetowych, sprawia, że ​​myślę, że coś jest nie tak z repozytorium Ubuntu.

Jak inaczej mogę spróbować rozwiązać ten problem?

Aktualizacja

Próbowałem wyczyścić '/ var / lib / apt / list / Partial' i uruchomiłem apt-get clean, a następnie zastąpiłem źródła w / etc / sources / list za pomocą sugerowanych tutaj mirrorów amazon :

Nadal pojawia się podobny błąd

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.

Aktualizacja 2

Mam 2 połączenia internetowe w domu, oba dały ten sam błąd. Gdy tylko zabrałem laptopa do służbowego łącza internetowego, problem zniknął.

Nadal jestem ciekawy, dlaczego moje połączenie internetowe miałoby jakąkolwiek różnicę.

Aktualizacja 3

Zobacz moją odpowiedź poniżej, aby uzyskać wyjaśnienie. Mój filtr internetowy psuje pobieranie.

Przeredaguję pytanie, ponieważ nie ma jeszcze odpowiedzi.

Czy istnieje sposób na zastąpienie niedopasowania sumy skrótu w apt-get?

Spuder
źródło
czy wyczyściłeś pamięć podręczną zgodnie z sugestią tutaj ?
Kiwy
Czy twoja dystrybucja obejmuje także apt-cachera NG? ponieważ wydaje się niewiarygodne
Kiwy
Natrafiłem na tego bloga i zweryfikowałem, że apt-cache-ng nie jest zainstalowany. Problem zniknął, gdy próbowałem innego hiperwizora na innym połączeniu internetowym.
spuder
może zepsuta implementacja jednego konkretnego skrótu na hiperwizorze, ale wciąż jest bardzo dziwna.
Kiwy
Twoje rozwiązanie również dla mnie zadziałało. Pracowałem przez serwer TinyProxy na AWS i miałem ustawione filtry reklam. Kiedy pozbyłem się proxy w apt.conf, wszystko działa dobrze.

Odpowiedzi:

20

Po pierwsze, powinieneś zrozumieć, dlaczego występują błędy niedopasowania sumy kontrolnej. Zasadniczo istnieją 2 powody:

Po pierwsze, niektóre repozytoria apt używają skompresowanych metadanych LZMA (.xz). apt przed wersją 1.0 nie zdekompresuje poprawnie archiwów LZMA (czasami), co powoduje błąd niedopasowania sumy kontrolnej.

Istnieją dwa sposoby obejścia tego:

  1. Powiedz swojemu klientowi apt, aby nie używał metadanych skompresowanych XZ
  2. Zaktualizuj apt w systemie do wersji nowszej niż 1.0

Zapoznaj się z tym postem na blogu, który napisałem o tym problemie, w którym objaśniono bardziej szczegółowo oba rozwiązania.

Po drugie, repozytoria APT są z natury ryzykowne . Rzeczywiste metadane APT są błędne, a ich konstrukcja uniemożliwia apt aptowi pobieranie metadanych repozytorium w spójny sposób, jeśli apt-get updatedzieje się to podczas aktualizacji repozytorium.

Istnieją dwa sposoby obejścia tego:

  1. Uaktualnij do nowszej wersji APT i upewnij się, że repozytorium, które utworzysz (lub chcesz użyć), obsługuje funkcję Uzyskaj według skrótu . To naprawia problem u jego podstaw, ale w niektórych przypadkach nie jest możliwe, jeśli nie kontrolujesz repozytorium.
  2. Możesz usunąć buforowane metadane w systemie i spróbować ponownie. Aby to zrobić, najpierw uruchom, apt-get cleana następnie rm -rf /var/lib/apt/lists/*. Następnie uruchom apt-get update. Spowoduje to ponowne pobranie wszystkich metadanych. Jeśli repozytorium, z którym próbujesz się połączyć, nie zaktualizuje się samo podczas działania apt-get update, wszystko będzie w porządku. W przeciwnym razie będziesz musiał to zrobić ponownie.
Joe Damato
źródło
To jedyne rozwiązanie, które działało dla mnie! Dzięki za wpis na blogu
Amir Uval,
Skomentowałeś, że lepiej być najnowszą wersją. Czy możesz mi powiedzieć, jak to zaktualizować?
Amir Uval,
Jak dokładnie korzystasz z funkcji Uzyskaj według skrótu? Widziałem blogi na ten temat, ale nie mówią, który plik dokładnie umieścić, i nie pokazują przykładu.
LINUX G33NYUS
6

Domyśliłam się.

Moje dwa komputery są identyczne pod każdym względem, z wyjątkiem tego, że na komputerze osobistym zainstalowałem filtr internetowy.

Filtr internetowy k9 zainstalował rozszerzenie jądra, które najwyraźniej miesza się z ruchem.

Gdy tylko odinstalowałem filtr, problem zniknął.

Nadal badam, czy istnieje sposób, aby apt-get updatezignorować niedopasowania sumy Hash jako obejście.

Spuder
źródło
To naprawdę ma sens, ponieważ ostatnio zacząłem mieć ten problem po zainstalowaniu k9; ale wtedy nie nawiązałem połączenia. Obejście byłoby fajne, ponieważ oczywiście wolałbym nie wyłączać filtra (w końcu jest tam z jakiegoś powodu).
MuffinTheMan
Tak, ale jak mogłem to zrobić (usunąć filtr), ponieważ mam z tobą ten sam problem, ale mimo to nadal
Pobierz najnowszą wersję k9 z ich strony internetowej. W pakiecie instalacyjnym znajdzie się deinstalator.
spuder