Не удалось загрузить список пакетов из-за ошибки "Несоответствие хэш-суммы"

Когда я проверяю наличие обновлений, я получаю сообщение об ошибке "Не удалось загрузить информацию о репозитории".

Это то, что подходит под детали:

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.

20 ответов

Решение

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

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

затем запустите:

sudo apt-get update

Это известная проблема, которая усугубляется для клиентов, использующих прокси-кэши. Некоторые крупные организации и интернет-провайдеры (особенно в удаленных частях мира) имеют прозрачные кэши, о которых вы можете не знать.

Основная проблема заключается в том, что формат хранилища apt зависит от условий гонки при обновлении зеркала. Эта проблема особенно касается быстро меняющихся репозиториев, таких как разрабатываемый выпуск.

Вы можете отслеживать прогресс в исправлении для этого в этой ошибке (пожалуйста, отметьте себя как "влияет на меня тоже" в этой ошибке) и этот план. Но имейте в виду, что это сложная проблема, и для ее решения может потребоваться более одного выпуска.

Самый простой способ это исправить:

sudo apt-get clean
sudo apt-get update

Единственное решение, которое сработало для меня - это unix.stackexchange.

Это происходит потому, что есть известная ошибка, и это решение заключается в обновлении с другим методом сжатия, чтобы файлы загружались правильно и контрольная сумма была успешной.

Попробуйте это:

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

(спасибо @brook_hong из комментариев за часть rm)

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

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

Я не знаю, если это правильный способ исправить это...
Я нашел решение здесь.

Это может произойти, если ваше зеркало не обновлено или не обслуживается из-за перегрузки. Вы можете либо подождать некоторое время и повторить попытку, либо переключиться на другое зеркало:

Если вы находитесь за прокси, то создайте файл с именем 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

Принятый ответ редко будет работать, если у вас есть проблема с CDN (сеть доставки контента - кеши / зеркала по всему миру, содержащие списки и пакеты apt). Это сработает, если а) вы используете PPA или локальные зеркала или б) есть только одно несоответствие для устранения.

Примечание: если у вас есть конкретное сообщение об ошибке, приведенное в журнале в вопросе выше, принятый ответ всегда должен работать.Но есть несколько других вопросов, которые были закрыты как дубликаты этого вопроса, где принятого ответа недостаточно.

Однако не мешает попробовать, поэтому начните с:

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

Этого может быть достаточно для продолженияsudo apt-get upgradeили другие последующие команды.

Но если это не сработает...

Вы также можете получить ошибки "Hash sum mismatch" изэтой команды. Если это произойдет, запустите:

sudo apt-get update --fix-missing

Возможно, что даже эта команда выдаст ошибки "Несоответствие хэш-суммы", поскольку проблема может быть вызвана временными ошибками сетевого содержимого. Если это так, продолжайте повторять--fix-missingКоманда, пока она не завершится успешно. Например, как:

until sudo apt-get update --fix-missing; do echo trying again; done

(Следует добиваться прогресса с каждым прогономapt-get update --fix-missing; если последовательные прогоны не уменьшают ошибки до нуля, нажмите Ctrl-c, чтобы прервать цикл. Затем вернитесь к началу этого ответа, удалив содержимое/var/lib/apt/listsи попробуй еще раз.)

После этого обновление может работать, но чтобы быть уверенным, сначала запуститеapt-get clean, а так:

sudo apt-get clean
sudo apt-get update

Обратите внимание, что если вы делаете это в рамках подготовки кapt-get upgrade, возможно (даже вероятно, если у вас было достаточно несоответствий, чтобы требовать обновления несколько раз), обновление завершится неудачно с собственными ошибками "несоответствие хэш-суммы". Если так, добавьте--fix-missingк вашей команде обновления:

sudo apt-get clean
sudo apt-get upgrade --fix-missing

и попробуй еще раз. (apt-get upgradeс--fix-missingтакже попытается сдержать сбой пакетов и продолжить работу других, так что вы должны увидеть некоторый дополнительный прогресс в выполнении этого хотя бы один раз.)

Но если это все еще не работает...

Как и раньшеuntil sudo... команда, вы можете получить дальнейший прогресс, повторив эту команду (всегда предшествует clean команда выше), которую вы можете даже автоматизировать с

until (sudo apt-get clean; sudo apt-get upgrade --fix-missing --yes); do echo trying again; done

но, как правило, он обновляет большинство обновляемых пакетов при первом запуске с --fix-missing и после этого застрять на тех же пакетах, не делая дальнейшего прогресса. На этом этапе вам нужно вернуться к началу с sudo rm -rf /var/lib/apt/lists/* и попробуй еще раз. Стоит попробовать весь этот процесс два или три раза, особенно если у вас есть десятки или сотни обновляемых пакетов.

Следующие команды могут решить вашу проблему.

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

а потом

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

это решит вашу проблему. Я также столкнулся с той же проблемой, но вышеуказанные команды решили эту проблему для меня. Так что дайте им попробовать.

Ссылка на решение

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

Для меня это было, зайдя в:

Настройки → Программное обеспечение и обновления → Программное обеспечение Ubuntu: Загрузить с: Change Local в Main Server,

Начинается перезагрузка репозитория и обновление. Когда я вхожу:

sudo apt-get update

После этого проблем не было вообще. Я использую Ubuntu 14.04.4 LTS.

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

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

Диспетчер обновлений (обновление программного обеспечения) → Настройка → Настройка источников программного обеспечения → Другое программное обеспечение [вкладка] → Снимите флажки с пакетов

После нажатия кнопки "закрыть" диспетчер обновлений снова начал автоматически проверять наличие обновлений, и я увидел это сообщение:"программное обеспечение на этом компьютере обновлено. Последняя проверка 2 секунды назад".

Kubuntu 12.04

У меня была похожая проблема, и я решил ее, открыв приложение "Software & Updates" и на вкладке "Ubuntu Software" изменив значение "Download from" (в этом раскрывающемся списке попробуйте выбрать, например, Main Сервер если не было так).

Если вы используете Linux внутри VirtualBox в Windows и в то же время включили Hyper-V (или WSL 2, который использует Hyper-V), вы попадете в мир боли. Это один из симптомов. VirtualBox 6.1 говорит на жестяной банке, что он поддерживает Hyper-V, но это просто неправда (по крайней мере, с Windows v2040 2020-08-25). Отключите Hyper-V, и вы золотой. Из другого ответа:

В командной строке с повышенными привилегиями напишите следующее:

Отключить:

bcdedit /set hypervisorlaunchtype off

Включить:

bcdedit /set hypervisorlaunchtype auto 

перезапустите, чтобы вступить в силу

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

Для меня это было, зайдя в:

Настройки → Программное обеспечение и обновления → Другое программное обеспечение: снимите все флажки и нажмите Закрыть.

Начинается перезагрузка репозитория и обновление. Когда я вхожу:

sudo apt-get update

После этого проблем не было вообще. Я использую Ubuntu 13.10.

Я только недавно установил Ubuntu 17.10 и получал ту же ошибку Hash Sum Mismatch для некоторого репозитория. Я перешел на Software and Checked Source, как показано ниже, и больше не было проблем с загрузкой репозитория из терминала.

Как следует @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

Это произошло для меня в 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) помогло или нет! Используйте их при необходимости.

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

Это может произойти, если вы используете маршрутизатор с родительским контролем и не поместили свой Raspberry Pi в список "неуправляемых". Я мог видеть, что URL перенаправлял на круговой домен, управляемый маршрутизатором.

Поэтому я просто добавил свой пи в неуправляемый список, и он работал нормально.

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

  1. Удалить прокси в /etc/apt/apt.conf
  2. Перейдите на официальный apt sources.list /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

Готово!

20190112 # Ошибки #apt # Исправление # Обновления Не удалось получить... Несоответствие хэш-суммы

  1. Запустите apt-get и выясните, какие ключевые слова искать в /etc/apt:
    • $ sudo apt-get -y update
    • ...
    • Ошибка: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 -in "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: Описание "Метаданные DEP-11"$(RELEASE)/$(COMPONENT) $(NATIVE_ARCHITECTURE) DEP-11 ";
    • /apt.conf.d/50appstream:15: # Значки обычного размера для компонентов графического интерфейса, описанные в DEP-11
    • /apt.conf.d/50appstream:17: deb:: DEP-11-icons {
    • /apt.conf.d/50appstream:20: Описание "$ (RELEASE) / $ (COMPONENT) DEP-11 64x64 Icons";
    • /apt.conf.d/50appstream:27: # метаданные DEP-11 YAML.
    • /apt.conf.d/50appstream:28: deb:: DEP-11-icons-hidpi {
    • /apt.conf.d/50appstream:31: Описание "$(RELEASE)/$(COMPONENT) 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  
    

Я решил все пакеты не были установлены с помощью этой команды:

sudo apt-get install PACKAGENAME

Для каждого из пакетов. Теперь они установлены, и ошибка "Несоответствие хэш-суммы" исчезла.

Другие вопросы по тегам