Як виправити оновлення apt-get "Невідповідність суми Hash"


24

У мене є віртуальна скринька VM для Ubuntu 12.04, яку я створюю за допомогою Vagrant.

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

Як тільки бродячий ящик працює apt-get update, я отримую таку помилку.

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

Те, що я намагався обійти цю помилку.

  • Використовували 3 різних коробки ubuntu 12.04 від " http://www.vagrantbox.es "
  • тут запропоноване рішення :

    sudo rm -rf / var / lib / apt / list / *
    sudo apt-отримати оновлення
    sudo apt-очистити

  • Вилучили та перечитали пакети лялькових лабораторій

Я також спробував подібні пропозиції, які знайшов на перших кількох сторінках google. Я навіть спробував кілька комп’ютерів і безліч підключень до Інтернету.

Той факт, що це вплинуло на декілька вму-файлів ubuntu на декількох підключеннях до Інтернету, змушує мене думати, що з repo ubuntu щось не так.

Як ще можна спробувати виправити цю проблему?

Оновлення

Я спробував очистити '/ var / lib / apt / списки / частково' та запустити apt-get clean, а потім замінив джерела в / etc / source / list, використовуючи запропоновані тут дзеркала amazon :

Я все одно отримую подібну помилку

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.

Оновлення2

У мене вдома є 2 підключення до Інтернету, вони обоє дали однакову помилку. Як тільки я взяв свій ноутбук на робочий інтернет-з'єднання, проблема пішла.

Мені все ще цікаво зрозуміти, чому мій зв’язок з Інтернетом матиме значення.

Оновлення3

Дивіться мою відповідь нижче для пояснення. Мій Інтернет-фільтр зіпсував завантаження.

Я перефразую питання, оскільки відповіді ще немає.

Чи є спосіб усунути невідповідність Hash Sum у apt-get?


чистіть ви кеш, як тут запропоновано ?
Ківі

Також ваш дистрибутив включає в себе apt-cacher NG? бо це здається ненадійним
Ківі

Я натрапив на цей блог, і я переконався, що apt-cache-ng не встановлений. Проблема усунулася, коли я спробував інший гіпервізор на іншому підключенні до Інтернету.
спудер

можливо, зламана реалізація одного конкретного хешу на гіпервізорі, але це все ще дуже дивно.
Ківі

Ваше рішення також працювало на мене. Я працював через сервер TinyProxy, розміщений на AWS, і мав кілька налаштувань фільтрів оголошень. Як тільки я позбувся проксі-сервера в apt.conf, все працює добре.

Відповіді:


21

Спочатку слід зрозуміти, чому трапляються помилки невідповідності хеш-суми. Загалом, є дві причини:

По-перше, деякі схожі сховища використовують стиснуті метадані LZMA (.xz). apt до версії 1.0 не вдасться декомпресувати архіви LZMA (іноді), що дає помилку невідповідності хеш-суми.

Для цього є два робочих напрямки:

  1. Скажіть своєму підходящому клієнту не використовувати стиснуті метадані XZ
  2. Оновіть apt у вашій системі до версії, новішої ніж 1.0

Перегляньте цю публікацію в блозі, про яку я писав із цього питання, де детальніше пояснюються обидві роботи.

По-друге, сховища APT за своєю суттю є раціональними . Фактичні метадані APT є помилковими, і його дизайн унеможливлює можливість підходящих клієнтів завантажувати метадані сховища послідовно, якщо це apt-get updateвідбувається під час оновлення сховища.

Для цього є два робочих напрямки:

  1. Оновіть до нової версії APT і переконайтесь, що створений вами сховище (або його потрібно використовувати) підтримує функцію Acquire-by-hash . Це вирішує проблему в основі, але в деяких випадках неможливо, якщо ви не контролюєте сховище.
  2. Ви можете видалити кешовані метадані у вашій системі та спробуйте ще раз. Для цього спочатку пробіг, apt-get cleanа потім rm -rf /var/lib/apt/lists/*. Далі бігайте apt-get update. Це відновить усі метадані. Якщо сховище, до якого ви намагаєтеся підключитися, не оновлюється під час роботи apt-get update, вам буде добре. Інакше вам доведеться це зробити ще раз.

Це єдине рішення, яке працювало на мене! Дякую за повідомлення в блозі
Амір Уваль

Ви прокоментували, що кращою може бути остання версія. Скажіть, будь ласка, як її оновити?
Амір Уваль

Як саме ви використовуєте функцію Acquire-by-hash? Я бачив про це блоги, але вони не кажуть, у який саме файл вкласти його, і вони не показують приклад.
LINUX G33NYUS

6

Зрозумів це.

Мої два комп’ютери всі однакові, за винятком того, що на особистому комп’ютері я встановив Інтернет-фільтр.

Інтернет-фільтр k9 встановив розширення ядра, яке, мабуть, псується з трафіком.

Як тільки я видалив фільтр, проблема пішла.

Я все ще досліджую, чи є спосіб apt-get updateігнорувати невідповідність суми Hash як вирішення.


Це насправді має багато сенсу, тому що я нещодавно почав мати цю проблему після встановлення k9; але я не зробив зв’язок на той час. Уподобання було б непогано, тому що я, очевидно, вважаю за краще не відключати фільтр (адже він там є чомусь).
MuffinTheMan

Так, але як я міг це зробити (видаліть фільтр), тому що у мене є така ж проблема з вами, але все одно я все-таки застряг у

Завантажте останню версію k9 з їх веб-сайту. Всередині інсталяційного пакета буде видалення.
spuder
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.