Проблема із завантаженням пакетів пакетів через помилку "Невідповідність суми хешу"


387

Коли я перевіряю наявність оновлень, я отримую помилку "Не вдалося завантажити інформацію про сховище".

Ось що з’являється під деталями:

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.

Відповіді:


459

Просто видаліть увесь вміст /var/lib/apt/listsкаталогу:

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

потім запустіть:

sudo apt-get update

69
Якщо ви видалите всі файли, вам доведеться завантажити їх знову. Ви можете просто видалити недійсний файл, щоб зробити цей процес швидшим.
Беранг

9
Я пам’ятаю, що це сталося і з Debian. Рішенням було переключення сховищ (наприклад, з us.ubuntu.com на XX.ubuntu.com, де XX - ваш код країни) або очікування. Найкращою ідеєю було б зачекати трохи і спробувати пізніше. Видалення списків може виправити зламані списки, але це рідко.
f.ardelian

4
Старе питання, але в деяких дистрибутивах (як, наприклад, emdebian), після цього вам потрібно буде " mkdir /var/lib/apt/lists/partial" (як root, очевидно.), Інакше ви не можете " apt-get update" або іншим чином використовувати apt.
Archenoth

7
@AlyssaGono, якщо це папка, вам потрібно запустити rm з рекурсивним прапором так: sudo rm -R /var/lib/apt/lists/*однак, навіть це не працювало для мене.
mchid

2
Нам потрібен префікс -rf , щоб він виглядав такsudo rm -rf /var/lib/apt/lists/*
Аскар

127

Це відома проблема, яка посилюється для клієнтів, які стоять за кешами проксі. Деякі великі організації та Інтернет-провайдери (особливо у віддалених частинах світу) мають прозорі кеші, про які ви можете не знати.

Основоположним питанням є те, що формат сховища підходящих підлягає гоночним умовам при оновленні дзеркала. Ця проблема особливо стосується сховищ, які швидко змінюються, наприклад, реліз розробки.

Ви можете відслідковувати прогрес у виправленні цього помилки у цій помилці (будь-ласка, позначте себе як "впливає і на мене" у помилці) та у цьому кресленні . Але майте на увазі, що це складне питання та може вирішити більше одного випуску для вирішення.


4
Цей план більше не доступний; ось архівна копія .
Елія Каган

16
ця помилка існує також у ubuntu 16.04
Скотт Стенсленд

1
Помилка позначена як "Виправлено випущено".

Я просто змінюю дзеркальний замовчування на найкращий сервер і його роботу для мене.
habibun

99

Найпростіший спосіб виправити це:

sudo apt-get clean
sudo apt-get update

12
Після спробу прийнятої відповіді я все-таки мав ті самі помилки, намагаючись це одразу після цього виправити питання
Алекс

17
Після sudo rm -rf /var/lib/apt/lists/*цього sudo apto-get cleanвирішив проблему і для мене. Ні один не працював ізольовано.
Кам

3
не допомагає на ubuntu 16.04 ... ні коментар вище не допомагає
Скотт Стенсленд

3
sudo apt-get cleanне допоміг 16.04, але sudo rm -rf /var/lib/apt/lists/*виправив це
sdaffa23fdsf

2
Для мене прийнята відповідь не спрацювала, але ця спрацювала (Ubuntu 16.04).
JCasso

52

Єдине рішення, яке працювало для мене, - це від unix.stackexchange .

Це трапляється тому, що є відома помилка, яка підходить, а рішення - оновити іншим методом стиснення, щоб файли завантажувались правильно і контрольна сума була успішною.

Спробуйте:

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

(дякую @brook_hong за коментарі до rm частини)


9
Це єдине рішення, яке працювало на мене. Дякую.
Серін

3
Це працювало і для мене. Зауважте, що вам не потрібно завжди виконувати цю команду. Просто запустіть його один раз, і тоді ви можете запустити "apt-get update" без помилок.
dalf

2
Я спробував використовувати загальне рішення з різних форумів, але це працює нестандартно. Дякую.
wkhwilo

2
Працював для мене на монетному дворі Ubuntu 16.04 / linux
David Okwii

3
Це єдине рішення, яке працювало для мене, я використовую Ubuntu 16.04
Sunny Shukla,

44

У мене все-таки виникли проблеми після видалення каталогів і занять sudo apt-get update.
Тільки наступний крок вирішив мою проблему:

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

Я не знаю, чи це правильний спосіб виправити це ...
Я знайшов рішення тут .


13
Слід зазначити, що de-part вказує на сервер для Німеччини і що цей сценарій замінює локальний сервер основним сервером. Перехід до джерел програмного забезпечення, спрямований на графічний інтерфейс і перемикання налаштувань, було б більш безпечним і оборотним для багатьох користувачів. Практично для кожної країни слід працювати:sudo sed -i 's/[a-z][a-z].archive.ubuntu.com/archive.ubuntu.com/g' /etc/apt/sources.list
LiveWireBT

23

Це може статися, коли ваше дзеркало не оновлено або помилки при перезавантаженні. Можна або зачекати деякий час, і спробувати знову, або переключитися на інше дзеркало:


2
Чому сервер не є оновленим або перевантажений, викликає успішне завантаження файлу з правильним іменем (у тому сенсі, що з'єднання не припиняється, поки всі байти не будуть надіслані та отримані), а буде пошкоджено? (Я не запевняю, що цього не відбувається, я просто сподіваюся, що ви зможете пояснити, чому це відбувається.)
Елія Каган

3
@EliahKagan Проблема зазвичай полягає не в тому, що сам файл пошкоджений, а в тому, що є (я спрощую, але не надто багато) файл даних та індексний файл, що містить хеш (відбиток пальця) файлу даних. Коли репозиторії оновлюються (відбувається щогодини) на сервері один файл за іншим оновлюється. Тепер може статися, що ваш клієнт (apt-get або подібний) отримує доступ до сервера, коли файл даних було оновлено, але файл індексу ще не оновлено (або навпаки). Тоді хеш не відповідає файлу даних, і клієнт (помилково) припускає, що файл даних пошкоджений.
Патрік Хекер

1
Зміна дзеркала спрацювала для мене, коли жоден із наведених відповідей не зробив.
манго

10

Якщо ви стоїте за проксі-сервером, створіть файл, названий 99fixbadproxyу /etc/apt/apt.conf.d/:

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

Вставте це 99fixbadproxyі збережіть:

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

Тепер запустіть команду оновлення:

sudo apt-get update

1
Нічого собі, я намагався відповісти, дивно, скільки різних питань, як видається, призводять до одного і того ж симптому.
подвійний

1
Я дуже вдячний цією відповіддю
bremen_matt

5

Наступні команди можуть вирішити вашу проблему.

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

і потім

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

це вирішить вашу проблему. Я також зіткнувся з тією ж проблемою, але наведені вище команди вирішили проблему для мене. Тож спробуйте.

Довідка про рішення


4
Я просто спробував, і це не вийшло; Перші apt-get updateстворені файли знову в тому самому місці в цьому каталозі.
Volker Siegel

3

У мене була точно така ж проблема, і всі рішення, надані за допомогою терміналу, не допомогли.

Для мене це було, вдавшись до:

Налаштування → Програмне забезпечення та оновлення → Програмне забезпечення Ubuntu: Завантажте з: Change Localдо Main Server.

Починається перезавантаження репостів та оновлення. Коли я входжу:

sudo apt-get update

Після цього проблем взагалі не було. Я використовую Ubuntu 14.04.4 LTS.


1

Я не знаю, що це правильне рішення чи ні, але я зробив наступне і повідомлення про помилку минуло:

Після введення sudo apt-get updateтерміналу, він дає мені назви деяких пакетів, які викликають помилку, тоді я зробив наступне:

Менеджер оновлень (оновлення програмного забезпечення) → Налаштування → Налаштування джерел програмного забезпечення → Інше програмне забезпечення [вкладка] → Зніміть прапорець

Після натискання кнопки "закрити" внизу менеджер оновлень знову почав автоматично перевіряти оновлення, і я побачив таке повідомлення: "програмне забезпечення на цьому комп'ютері оновлено. Останнє перевірене 2 секунди тому".

Кубунту 12.04


Це працювало для мене, і жодне інше рішення, розміщене тут, не працювало. За винятком того, що у мене немає інтерфейсу Ubuntu (працює командний рядок тільки під WSL), тож замість цього для кожного пакета, <pkg>де сталася помилка, я запустив `sudo apt-get install <pkg> '. Я на Ubuntu 16.04.
Іцц

1

У мене була точно така ж проблема, і всі рішення, надані за допомогою терміналу, не допомогли.

Для мене це було, вдавшись до:

Налаштування → Програмне забезпечення та оновлення → Інше програмне забезпечення: зніміть усі прапорці та натисніть кнопку «Закрити».

Починається перезавантаження репостів та оновлення. Коли я входжу:

sudo apt-get update

Після цього проблем взагалі не було. Я використовую Ubuntu 13.10.


Це все-таки працює, але це ефективно осліплює машину від можливості встановлення пакетів, які не є частиною основної збірки (доки ці прапорці не будуть знову активовані пізніше) ... все ж потрібні часом лише для досягнення оновлення apt-get без помилок, що дозволяє встановити цільові пакети
Скотт Стенсленд

1

У мене була подібна проблема, і я вирішив її, відкривши програму "Програмне забезпечення та оновлення" і на вкладці "Програмне забезпечення Ubuntu" змінивши значення "Завантажити з" (у цьому спадному списку спробуйте вибрати, наприклад, Головне Сервер, якщо такого не було).


Так, єдине, що працювало на мене. Швейцарський сервер здається зламаним.
Ерік МОРАНД

1

Як follow @ robie-basak, я використовував apt-cacher-ngяк керування дзеркалами. Тому я видаляю проксі і проблема вирішена.

Я видаляю проксі-файл у файлі /etc/apt/apt.conf.d/01proxy:

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

Тоді потрібно:

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

1

Я нещодавно встановив Ubuntu 17.10 і отримував таку ж помилку Hash Sum Mismatch для деякого сховища. Я перейшов до програмного забезпечення та перевіреного джерела, як показано нижче, і не було проблем із завантаженням сховища з терміналу.

Мій розділ програмного забезпечення та оновлень


0

Це може статися, якщо ви працюєте з маршрутизатором з батьківським контролем, і вам не доведеться вводити малину пі в список "некерованого". Для мене я міг бачити, як URL переспрямовується до домену кола, яким керує маршрутизатор.

Тож я просто додав своє пі до некерованого списку, і воно спрацювало чудово.


0

Я вирішив, що всі пакунки не встановлюються, виконавши цю команду:

sudo apt-get install PACKAGENAME

Для кожного з пакетів. Вони зараз встановлені, і помилка "Невідповідність Hash Суми" пішла.


0

Ніщо не працювало для мене. Після спроб та запропонованих рішень, нарешті, я завантажив зламані пакунки вручну, скопіював їх у / var / cache / apt / archives та видалив зламані пакунки з / var / cache / apt / archives / part.


0

Я зіткнувся з тією ж проблемою в моєму Ubuntu 18.04, нижче - мій практичний досвід:

  1. Видаліть проксі в /etc/apt/apt.conf
  2. Перейдіть на офіційний список джерел /etc/apt/sources.list
  3. Біжи sudo rm -rf /var/lib/apt/lists/*
  4. Чисті пакети sudo apt autoremove -y && sudo apt autoclean -y
  5. Оновлення та оновлення. sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y && sudo apt autoclean -y

Готово!


0

Це сталося зі мною на Ubuntu 16.04, і жодне з найкращих проголосованих рішень не працювало. Рішенням було оновлення пакетів:

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

Не впевнений, sudo rm -rf /var/lib/apt/lists/*чи sudo apt-get cleanдопомогло чи ні чищення старих списків ( та / або )! Використовуйте їх при необхідності.


0

20190112 # Помилки #apt #Fix #Оновлення не вдалося отримати ... Невідповідність хеш-суми

  1. Запустіть apt-get і дізнайтеся, які ключові слова шукати в /etc/apt:
    • $ sudo apt-get -y оновлення
    • ...
    • Помилка: 77 http://au.archive.ubuntu.com/ubuntu xenial-updates / multiverse DEP-11 64x64 Значки
    • Невідповідність хеш-суму
    • ...
    • У цьому випадку ключове слово "DEP-11"
  2. Шукайте по /etc/aptдереву за ключовими словами:
    • $ sudo find / etc / apt -type f -exec egrep -в "DEP-11" "{}" / dev / null ";"
    • /apt.conf.d/50appstream:1:## Цей файл надається appstreamcli (1) для завантаження DEP-11
    • /apt.conf.d/50appstream:6: deb :: DEP-11 {
    • /apt.conf.d/50appstream:9: Опис "$ (ЗВ'ЯЗКУВАННЯ) / $ (КОМПОНЕНТ) $ (NATIVE_ARCHITECTURE) Метадані DEP-11";
    • /apt.conf.d/50appstream:15: # піктограми звичайного розміру для компонентів GUI описані в DEP-11
    • /apt.conf.d/50appstream:17: deb :: DEP-11-icon {
    • /apt.conf.d/50appstream:20: Опис "$ (RELEASE) / $ (COMPONENT) DEP-11 64x64 Значки";
    • /apt.conf.d/50appstream:27: # метадані DEP-11 YAML.
    • /apt.conf.d/50appstream:28: deb :: DEP-11-icons-hidpi {
    • /apt.conf.d/50appstream:31: Опис "$ (ВИПУСК) / $ (КОМПОНЕНТ) DEP-11 128x128 Значки";
  3. Знайшовши список правопорушників, перемістіть його кудись на випадок, якщо це не працює:

    sudo mv -f /apt.conf.d/50appstream /tmp  
    
  4. Прибирання /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. Спробуйте оновити зараз, воно має працювати зараз:

    sudo apt-get -y update  
    
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.