Не удалось загрузить список пакетов из-за ошибки "Несоответствие хэш-суммы"
Когда я проверяю наличие обновлений, я получаю сообщение об ошибке "Не удалось загрузить информацию о репозитории".
Это то, что подходит под детали:
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, ниже приведен мой практический опыт:
- Удалить прокси в
/etc/apt/apt.conf
- Перейдите на официальный apt sources.list
/etc/apt/sources.list
- Бежать
sudo rm -rf /var/lib/apt/lists/*
- Чистые пакеты
sudo apt autoremove -y && sudo apt autoclean -y
- Обновление и обновление.
sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y && sudo apt autoclean -y
Готово!
20190112 # Ошибки #apt # Исправление # Обновления Не удалось получить... Несоответствие хэш-суммы
- Запустите apt-get и выясните, какие ключевые слова искать в
/etc/apt
:- $ sudo apt-get -y update
- ...
- Ошибка:77 http://au.archive.ubuntu.com/ubuntu xenial-updates/multiverse DEP-11 64x64 Иконки
- Несоответствие хэш-суммы
- ...
- В данном случае ключевое слово "DEP-11"
- Поиск в
/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 значки";
Найдя список нарушителей, переместите его куда-нибудь на случай, если это не сработает:
sudo mv -f /apt.conf.d/50appstream /tmp
Убирать
/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 "{}" ";"
Попробуйте обновить сейчас, оно должно работать сейчас:
sudo apt-get -y update
Я решил все пакеты не были установлены с помощью этой команды:
sudo apt-get install PACKAGENAME
Для каждого из пакетов. Теперь они установлены, и ошибка "Несоответствие хэш-суммы" исчезла.