Problemy z pobieraniem listy pakietów z powodu błędu „Niezgodność sumy skrótu”


387

Kiedy sprawdzam dostępność aktualizacji, pojawia się błąd „Nie udało się pobrać informacji o repozytorium”.

Oto, co pojawia się w szczegółach:

W: Failed to fetch gzip:/var/lib/apt/lists/partial/us.archive.ubuntu.com_ubuntu_dists_natty_main_source_Sources  Hash Sum mismatch, 
E: Some index files failed to download. They have been ignored, or old ones used instead.

Odpowiedzi:


459

Po prostu usuń całą zawartość /var/lib/apt/listskatalogu:

sudo rm -rf /var/lib/apt/lists/*

następnie uruchomić:

sudo apt-get update

69
Jeśli usuniesz wszystkie pliki, musisz je pobrać ponownie. Możesz po prostu usunąć nieprawidłowy plik, aby przyspieszyć ten proces.
Behrang

9
Pamiętam, że działo się to również z Debianem. Rozwiązaniem było przełączenie repozytoriów (np. Z us.ubuntu.com na XX.ubuntu.com, gdzie XX to kod kraju) lub oczekiwanie. Najlepiej byłoby poczekać chwilę i spróbować ponownie później. Usunięcie list może naprawić uszkodzone listy, ale rzadko tak jest.
f.ardelian

4
Stare pytanie, ale w niektórych dystrybucjach (jak emdebian), po zrobieniu tego musisz " mkdir /var/lib/apt/lists/partial" (Oczywiście jako root). W apt-get updateprzeciwnym razie nie możesz " " lub w inny sposób użyć apt.
Archenoth,

7
@AlyssaGono, jeśli jest to folder, musisz uruchomić rm z flagą rekurencyjną w ten sposób: sudo rm -R /var/lib/apt/lists/*jednak nawet to nie zadziałało dla mnie.
mchid

2
Potrzebujemy prefiksu -rf , więc będzie wyglądać następującosudo rm -rf /var/lib/apt/lists/*
Askar

127

Jest to znany problem, który nasila się w przypadku klientów stojących za buforami proxy. Niektóre duże organizacje i dostawcy usług internetowych (szczególnie w odległych częściach świata) mają przezroczyste pamięci podręczne, o których możesz nie wiedzieć.

Podstawową kwestią jest to, że format repozytorium apt podlega warunkom wyścigu, gdy lustro jest aktualizowane. Ten problem dotyczy szczególnie szybko zmieniających się repozytoriów, takich jak wydanie programistyczne.

Możesz śledzić postępy w usuwaniu tego błędu w tym błędzie (zaznacz się jako „wpływa również na mnie” w błędzie) i ten plan . Pamiętaj jednak, że jest to złożony problem i jego rozwiązanie może zająć więcej niż jedną wersję.


4
Ten plan nie jest już dostępny; oto zarchiwizowana kopia .
Eliah Kagan

16
ten błąd występuje również na Ubuntu 16.04
Scott Stensland

1
Błąd został oznaczony jako „Poprawka wydana”.

Po prostu zmieniam domyślny serwer lustrzany na najlepszy serwer i jego działanie dla mnie.
habibun

99

Najłatwiej to naprawić:

sudo apt-get clean
sudo apt-get update

12
Po wypróbowaniu zaakceptowanej odpowiedzi wciąż miałem te same błędy, próbując tego natychmiast potem naprawiłem problem
Alex

17
Robi sudo rm -rf /var/lib/apt/lists/*wtedy sudo apto-get cleanrozwiązaniu problemu dla mnie również. Żaden nie działał w izolacji.
Cam

3
nie pomaga w Ubuntu 16.04 ... ani powyższy komentarz nie pomaga nikomu
Scott Stensland

3
sudo apt-get cleannie pomógł z 16.04, ale sudo rm -rf /var/lib/apt/lists/*naprawił go
sdaffa23fdsf

2
Dla mnie zaakceptowana odpowiedź nie działała, ale ta działała (Ubuntu 16.04).
JCasso

52

Jedyne rozwiązanie, które zadziałało dla mnie, to unix.stackexchange .

Dzieje się tak, ponieważ istnieje znany błąd, który można zastosować, a rozwiązaniem jest aktualizacja przy użyciu innej metody kompresji, aby pliki ładowały się poprawnie, a suma kontrolna się powiodła.

Wypróbuj to:

sudo rm -rf /var/lib/apt/lists/partial
sudo apt-get update -o Acquire::CompressionTypes::Order::=gz

(dzięki @brook_hong z komentarzy do części RM)


9
To jest jedyne rozwiązanie, które dla mnie zadziałało. Dzięki.
Cerin,

3
Dla mnie też zadziałało. Pamiętaj, że nie zawsze musisz uruchamiać to polecenie. Po prostu uruchom go raz, a następnie możesz uruchomić „apt-get update” bez błędów.
dalf

2
Próbowałem użyć ogólnego rozwiązania z różnych forów, ale działa to od razu po wyjęciu z pudełka. Dziękuję Ci.
wkhwilo

2
Pracowałem dla mnie nad Ubuntu 16.04 / linux mint
David Okwii

3
To jedyne rozwiązanie, które działało dla mnie, używam Ubuntu 16.04
Sunny Shukla

44

Nadal miałem problem po usunięciu katalogów i zrobieniu sudo apt-get update.
Tylko następujący krok rozwiązał mój problem:

sudo sed -i -re 's/\w+\.archive\.ubuntu\.com/archive.ubuntu.com/g' /etc/apt/sources.list

Nie wiem, czy to jest właściwy sposób, aby to naprawić ...
Znalazłem rozwiązanie tutaj .


13
Należy zauważyć, że de-part wskazuje serwer dla Niemiec i że ten skrypt zastępuje serwer lokalny serwerem głównym. Przejście do źródeł oprogramowania w trybie GUI i zmiana tego ustawienia byłaby bezpieczniejsza i odwracalna dla wielu użytkowników. Następujące elementy powinny działać w prawie każdym kraju:sudo sed -i 's/[a-z][a-z].archive.ubuntu.com/archive.ubuntu.com/g' /etc/apt/sources.list
LiveWireBT

23

Może się to zdarzyć, gdy lustro jest nieaktualne lub błędy wyświetlania są przeciążone. Możesz albo chwilę poczekać i spróbować ponownie, albo przełączyć się na inne lustro:


2
Dlaczego serwer jest nieaktualny lub przeciążony powoduje, że plik o prawidłowej nazwie został pomyślnie pobrany (w tym sensie, że połączenie nie kończy się, dopóki wszystkie bajty nie zostaną wysłane i odebrane), ale zostanie uszkodzony? (Nie twierdzę, że tak się nie dzieje, mam tylko nadzieję, że możesz wyjaśnić, dlaczego tak się dzieje).
Eliah Kagan

3
@EliahKagan Problem zwykle nie polega na tym, że sam plik jest uszkodzony, ale na tym, że istnieje (upraszczam, ale nie za dużo) plik danych i plik indeksu zawierający skrót (odcisk palca) pliku danych. Gdy repozytoria są aktualizowane (co godzinę) na serwerze, jeden plik po drugim jest aktualizowany. Teraz może się zdarzyć, że Twój klient (apt-get lub podobny) uzyskuje dostęp do serwera, gdy plik danych został zaktualizowany, ale plik indeksu nie został jeszcze zaktualizowany (lub odwrotnie). Następnie skrót nie pasuje do pliku danych, a klient (fałszywie) zakłada, że ​​plik danych jest uszkodzony.
Patrick Häcker

1
Zmiana lustra działała dla mnie, gdy żadna z powyższych odpowiedzi nie działała.
mango,

10

Jeśli jesteś za serwerem proxy, a następnie utworzyć plik o nazwie 99fixbadproxyw /etc/apt/apt.conf.d/:

sudo gedit /etc/apt/apt.conf.d/99fixbadproxy

Wklej to 99fixbadproxyi zapisz:

Acquire::http::Pipeline-Depth 0;
Acquire::http::No-Cache true;
Acquire::BrokenProxy    true;

Teraz uruchom polecenie aktualizacji:

sudo apt-get update

1
Wow, próbowałem każdej odpowiedzi, to dziwne, jak wiele różnych problemów wydaje się powodować ten sam objaw.
dualed

1
Jestem bardzo wdzięczny tej odpowiedzi
bremen_matt,

5

Następujące polecenia mogą rozwiązać problem.

sudo rm -R /var/lib/apt/lists/partial/*

i wtedy

sudo apt-get update && sudo apt-get upgrade

rozwiąże twój problem. Napotkałem również ten sam problem, ale powyższe polecenia rozwiązały problem dla mnie. Więc spróbuj.

Dokumentacja rozwiązania


4
Właśnie próbowałem i to nie zadziałało; Pierwsze apt-get updateutworzone pliki ponownie w tym samym miejscu w tym katalogu.
Volker Siegel

3

Miałem dokładnie ten sam problem i wszystkie rozwiązania dostarczone przy użyciu terminala nie pomogły.

Dla mnie chodziło o:

Ustawienia → Oprogramowanie i aktualizacje → Oprogramowanie Ubuntu: Pobierz z: Change Localdo Main Server.

Zaczyna przeładowywanie repozytoriów i aktualizację. Kiedy wejdę:

sudo apt-get update

Po tym nie było już żadnego problemu. Używam Ubuntu 14.04.4 LTS.


1

Nie wiem, czy to właściwe rozwiązanie, czy nie, ale zrobiłem następujące i komunikat o błędzie zniknął:

Po wpisaniu sudo apt-get updateterminala podaje mi nazwy niektórych pakietów, które powodują błąd, a następnie wykonałem następujące czynności:

Menedżer aktualizacji (aktualizacja oprogramowania) → Ustawienia → Konfiguruj źródła oprogramowania → Inne oprogramowanie [karta] → Odznacz pakiety

Po naciśnięciu przycisku „zamknij” menedżer aktualizacji ponownie zaczął automatycznie sprawdzać dostępność aktualizacji i zobaczyłem komunikat: „Oprogramowanie na tym komputerze jest aktualne. Ostatnie sprawdzenie 2 sekundy temu”.

Kubuntu 12.04


To działało dla mnie i żadne inne opublikowane tutaj rozwiązanie nie działało. Tyle że nie mam interfejsu użytkownika Ubuntu (uruchomionego wiersza polecenia tylko w WSL), więc zamiast tego dla każdego pakietu, w <pkg>którym wystąpił błąd, uruchomiłem `sudo apt-get install <pkg> '. Jestem na Ubuntu 16.04.
Yitz

1

Miałem dokładnie ten sam problem i wszystkie rozwiązania dostarczone przy użyciu terminala nie pomogły.

Dla mnie chodziło o:

Ustawienia → Oprogramowanie i aktualizacje → Inne oprogramowanie: Odznacz wszystkie pola i naciśnij zamknij.

Zaczyna przeładowywanie repozytoriów i aktualizację. Kiedy wejdę:

sudo apt-get update

Po tym nie było już żadnego problemu. Używam Ubuntu 13.10.


Działa to jeszcze, skutecznie zaślepia maszynę przed możliwością instalowania pakietów nie będących częścią kompilacji rdzenia (dopóki te pola wyboru nie zostaną ponownie aktywowane później) ... ale jest to czasami konieczne tylko w celu uzyskania bezbłędnej aktualizacji apt-get, która umożliwia instalacja ukierunkowanych pakietów
Scott Stensland,

1

Miałem podobny problem i rozwiązałem go, otwierając aplikację h „Oprogramowanie i aktualizacje”, a na karcie „Oprogramowanie Ubuntu” zmieniając wartość „Pobierz z” (na tej liście rozwijanej spróbuj wybrać na przykład opcję Main Serwer, jeśli tak nie było).


Tak, jedyna rzecz, która działała dla mnie. Serwer Szwajcarii wydaje się zepsuty.
Eric MORAND

1

W następujący sposób @ robie-basak użyłem apt-cacher-ngjako buforowania lustrzanego. Więc usuwam proxy i problem rozwiązany.

Usuwam proxy w pliku /etc/apt/apt.conf.d/01proxy:

#Acquire::http::Proxy "http://xxx.xx.xx.xx:4321";

Następnie musisz:

sudo rm -rf /var/lib/apt/lists/*
sudo aptitude update
sudo aptitude upgrade

1

Niedawno zainstalowałem Ubuntu 17.10 i otrzymywałem ten sam błąd Hash Sum Mismatch dla jakiegoś repozytorium. Poszedłem do Software i Checked Source, jak pokazano poniżej i nie było żadnych problemów z pobieraniem repozytorium z terminala.

Moje oprogramowanie i sekcja aktualizacji


0

Może się to zdarzyć, jeśli używasz routera z kontrolą rodzicielską i nie umieściłeś swojego malinowego pi na liście „niezarządzanej”. Widziałem, że adres URL przekierowuje do domeny okręgu zarządzanej przez router.

Właśnie dodałem moje pi do listy niezarządzanej i działało dobrze.


0

Rozwiązałem wszystkie nie instalowane pakiety, uruchamiając następującą komendę:

sudo apt-get install PACKAGENAME

Dla każdego z pakietów. Są teraz zainstalowane i zniknął błąd „Niezgodność sumy mieszania”.


0

Nic mi nie działało. Po wypróbowaniu i zaproponowaniu rozwiązań w końcu ręcznie pobrałem uszkodzone pakiety, skopiowałem je do / var / cache / apt / archives i usunąłem uszkodzone pakiety z / var / cache / apt / archives / częściowo.


0

W moim Ubuntu 18.04 napotkałem ten sam problem, poniżej przedstawiam moje praktyczne doświadczenia:

  1. Usuń proxy w /etc/apt/apt.conf
  2. Zmień na oficjalną apt sources.list /etc/apt/sources.list
  3. Biegać sudo rm -rf /var/lib/apt/lists/*
  4. Czyste paczki sudo apt autoremove -y && sudo apt autoclean -y
  5. Aktualizacja i aktualizacja. sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y && sudo apt autoclean -y

Gotowy!


0

Zdarzyło mi się to na Ubuntu 16.04 i żadne z najlepiej ocenianych rozwiązań nie zadziałało. Rozwiązaniem była aktualizacja pakietów:

sudo apt-get update    # this will fail
sudo apt-get upgrade
sudo apt-get update    # this will succeed

Nie jestem pewien, czy czyszczenie starych list ( sudo rm -rf /var/lib/apt/lists/*i / lub sudo apt-get clean) pomogło czy nie! Użyj ich, jeśli to konieczne.


0

20190112 # Błędy # adapt # Poprawka # Aktualizacje Nie udało się pobrać ... Niezgodność sumy skrótu

  1. Uruchom apt-get i dowiedz się, jakich słów kluczowych szukać w /etc/apt:
    • $ sudo apt-get -y update
    • ...
    • Błąd: 77 http://au.archive.ubuntu.com/ubuntu xenial-updates / multiverse DEP-11 64x64 Ikony
    • Niezgodność sumy mieszania
    • ...
    • W tym przypadku słowem kluczowym jest „DEP-11”
  2. Wyszukaj w /etc/aptdrzewie słowa kluczowe:
    • $ sudo find / etc / apt -type f -exec egrep -in "DEP-11" "{}" / dev / null ";"
    • /apt.conf.d/50appstream:1:## Ten plik jest dostarczany przez appstreamcli (1) do pobrania DEP-11
    • /apt.conf.d/50appstream:6: deb :: DEP-11 {
    • /apt.conf.d/50appstream:9: Opis "$ (RELEASE) / $ (COMPONENT) $ (NATIVE_ARCHITECTURE) DEP-11 Metadane";
    • /apt.conf.d/50appstream:15: # Ikony normalnej wielkości dla komponentów GUI opisanych w DEP-11
    • /apt.conf.d/50appstream:17: deb :: DEP-11-icons {
    • /apt.conf.d/50appstream:20: Opis "$ (RELEASE) / $ (COMPONENT) DEP-11 64x64 Icons";
    • /apt.conf.d/50appstream:27: # metadane DEP-11 YAML.
    • /apt.conf.d/50appstream:28: deb :: DEP-11-icons-hidpi {
    • /apt.conf.d/50appstream:31: Opis „$ (RELEASE) / $ (COMPONENT) DEP-11 128x128 Ikony”;
  3. Po znalezieniu listy przestępców przenieś ją gdzieś na wypadek, gdyby to nie zadziałało:

    sudo mv -f /apt.conf.d/50appstream /tmp  
    
  4. Posprzątać /var/lib/apt:

    sudo apt-get -y clean  
    sudo rm -rf /var/lib/apt/lists/*  
    sudo find /var/lib/apt -type d -name "partial" -exec rm -rf "{}" ";"  
    
  5. Spróbuj zaktualizować teraz, powinno działać teraz:

    sudo apt-get -y update  
    
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.