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?


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.

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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.