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

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

Это то, что появляется в разделе подробности:

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.

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

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

затем бегите:

sudo apt-get update

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

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

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

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

sudo apt-get cleansudo apt-get update

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

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

Попробуйте это сделать:

sudo rm -rf /var/lib/apt/lists/partialsudo 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 или другие последующие команды.

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

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

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 cleansudo apt-get update

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

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