Как я могу устранить неполадки в `apt-get update`, приводящие к несоответствию Hash Sum
Когда я бегу apt-get update
Я получаю в конце
Fetched 22.4 MB in 4s (4,659 kB/s)
W: Failed to fetch http://192.168.1.11/ubuntu/dists/utopic/main/binary-amd64/Packages Hash Sum mismatch
W: Failed to fetch http://192.168.1.11/ubuntu/dists/utopic-updates/main/binary-amd64/Packages Hash Sum mismatch
E: Some index files failed to download. They have been ignored, or old ones used instead.
Я сделал все танцы под дождем из этого вопроса:
sudo rm -rf /var/lib/apt/lists
sudo apt-get clean
sudo apt-get update
но не повезло.
Сосредоточив внимание на первой ошибке, сначала я попытался вытащить файлы вручную и проверить sha256
:
> wget http://192.168.1.11/ubuntu/dists/utopic/main/binary-amd64/Packages
> wget http://192.168.1.11/ubuntu/dists/utopic/main/binary-amd64/Packages.gz
> wget http://192.168.1.11/ubuntu/dists/utopic/main/binary-amd64 /Packages.bz2
> wget http://192.168.1.11/ubuntu/dists/utopic/Release
> sha256sum Package*
31f1f45c6873c3df36e5aeeee360ed02378f8c4c3c8c9a35e9adeaaf1cb0cf27 Packages
9650775abec90a24c26dbb03f91a488180309144338f64f7044f7119d60d7182 Packages.bz2
228df8d823f966152f19bb460c02f3237854000d551d9247bf35eed8088c2d3d Packages.gz
> grep main/binary-amd64/Package
6a571ce0ef1d641ddc70536d6d5f549e07a89c93 8116687 main/binary-amd64/Packages
7144392ea4463fb14ac32f2571001075c072e181 1708299 main/binary-amd64/Packages.gz
3e69d6803d7ec76cd7fc28675078b7307d1f68a1 1330583 main/binary-amd64/Packages.bz2
31f1f45c6873c3df36e5aeeee360ed02378f8c4c3c8c9a35e9adeaaf1cb0cf27 8116687 main/binary-amd64/Packages
228df8d823f966152f19bb460c02f3237854000d551d9247bf35eed8088c2d3d 1708299 main/binary-amd64/Packages.gz
9650775abec90a24c26dbb03f91a488180309144338f64f7044f7119d60d7182 1330583 main/binary-amd64/Packages.bz2
c39f5e994e08eda7ada6744c4e830611 8116687 main/binary-amd64/Packages
8a0c176a456a83fa4f327ea0e8f897d6 1708299 main/binary-amd64/Packages.gz
8160d18474db0b9e36af68aacb62605b 1330583 main/binary-amd64/Packages.bz2
Я также посмотрел в /var/lib/apt/lists/partial
и нашел
192.168.1.11_ubuntu_dists_utopic_main_binary-amd64_Packages.bz2 192.168.1.11_ubuntu_dists_utopic-updates_main_binary-amd64_Packages.bz2
192.168.1.11_ubuntu_dists_utopic_main_binary-amd64_Packages.bz2.decomp.FAILED 192.168.1.11_ubuntu_dists_utopic-updates_main_binary-amd64_Packages.bz2.decomp.FAILED
.bz2
файлы кажутся такими же, как я вытащил вручную, а также Release
файл найден там.
Куда я могу пойти дальше? Могу ли я получить файл apt-get
проверяет хеш-сумму, какую хеш-сумму он получил и что ожидал (и почему он ожидал этого значения)?
Также обратите внимание, что я ограничен в использовании командной строки для окончательного решения.
3 ответа
Я столкнулся с такой же ситуацией.
W: Failed to fetch http://security.ubuntu.com/ubuntu/dists/vivid-security/main/binary-amd64/Packages Hash Sum mismatch
W: Failed to fetch http://security.ubuntu.com/ubuntu/dists/vivid-security/main/binary-i386/Packages Hash Sum mismatch
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/vivid-updates/main/binary-amd64/Packages Hash Sum mismatch
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/vivid-updates/universe/binary-amd64/Packages Hash Sum mismatch
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/vivid-updates/universe/binary-i386/Packages Hash Sum mismatch
E: Some index files failed to download. They have been ignored, or old ones used instead.
Сначала я отредактировал apt.conf
Debug::Acquire::http true;
Debug::pkgAcquire::Auth true;
Debug::Hashs true;
то, что искали http://security.ubuntu.com/ubuntu/dists/vivid-security/main/binary-amd64/Packages
в apt-get update
вывод команды и нашел это:
Get:1 http://security.ubuntu.com vivid-security/main amd64 Packages [115 kB]
100% [1 Packages 115 kB/115 kB 100%] [Waiting for headers] [Connecting to security.ubuntu.com (91.189.91.15)]201 URI Done: http://security.ubuntu.com/ubuntu/dists/vivid-security/main/binary-amd64/Packages.bz2
RecivedHash: SHA256:0460b45fe9ace5ddb1e2080df5f75a6ee5d950fa451733991ec1b2b303bd16f6
ExpectedHash: SHA256:9daf23b84605ff833d1d280f837bd87fcbc3c7e0ca9403590985f970ee561f61
100% [1 Packages bzip2 0 B] [Waiting for headers] [Connecting to security.ubuntu.com (91.189.91.15)]201 URI Done: bzip2:/var/lib/apt/lists/partial/security.ubuntu.com_ubuntu_dists_vivid-security_main_binary-amd64_Packages.bz2
RecivedHash: SHA256:f10f6ef0486182bc9369e7912ddb9cf536c3049813ffd169b84f34dcda540ace
ExpectedHash: SHA256:9daf23b84605ff833d1d280f837bd87fcbc3c7e0ca9403590985f970ee561f61
http://security.ubuntu.com/ubuntu/dists/vivid-security/main/binary-amd64/Packages: Computed Hash: SHA256:f10f6ef0486182bc9369e7912ddb9cf536c3049813ffd169b84f34dcda540ace Expected Hash: SHA256:9daf23b84605ff833d1d280f837bd87fcbc3c7e0ca9403590985f970ee561f61
100% [Waiting for headers] [Connecting to security.ubuntu.com (91.189.91.15)]GET /ubuntu/dists/vivid-security/multiverse/binary-amd64/Packages.bz2 HTTP/1.1
Host: security.ubuntu.com
Cache-Control: max-age=0
Range: bytes=5195-
If-Range: Mon, 28 Sep 2015 14:33:00 GMT
User-Agent: Debian APT-HTTP/1.3 (1.0.9.7ubuntu4)
Очевидно, что скачанный файл Packages был неверным. Итак, я скачал http://security.ubuntu.com/ubuntu/dists/vivid-security/main/binary-amd64/Packages.bz2
а также http://security.ubuntu.com/ubuntu/dists/vivid-security/main/binary-amd64/Packages.gz
, разархивировал их и проверил хэш-сумму вручную:
$ wget http://security.ubuntu.com/ubuntu/dists/vivid-security/main/binary-amd64/Packages.bz2
$ wget http://security.ubuntu.com/ubuntu/dists/vivid-security/main/binary-amd64/Packages.gz
$ sha256sum Packages*
0460b45fe9ace5ddb1e2080df5f75a6ee5d950fa451733991ec1b2b303bd16f6 Packages.bz2
f10f6ef0486182bc9369e7912ddb9cf536c3049813ffd169b84f34dcda540ace Packages.from.bz2
9daf23b84605ff833d1d280f837bd87fcbc3c7e0ca9403590985f970ee561f61 Packages.from.gz
b6b70b8f7838d742104904d461677652cf5120f9b8302841cb017c0c5c9dea40 Packages.gz
Оказалось, что http://security.ubuntu.com/ubuntu/dists/vivid-security/main/binary-amd64/Packages.bz2
содержит неверный файл пакетов, но http://security.ubuntu.com/ubuntu/dists/vivid-security/main/binary-amd64/Packages.gz
содержит правильный, который не загружен по умолчанию.
Поэтому отредактируйте apt.conf:
Acquire::CompressionTypes::Order:: "gz";
Это сработало для меня. Удачи!
Есть параметры отладки, которые можно установить на apt-get
как описано в man apt.conf
, они могут быть установлены в командной строке с помощью -o
флаг.
Особенно, если кто-то хочет увидеть реальные хеши и ожидаемые хеши, можно использовать sudo apt-get -o Debug::pkgAcquire::Auth=true update
,
Как оказалось, хеш, который сравнивается для http://192.168.1.11/ubuntu/dists/utopic/main/binary-amd64/Packages
в данном случае это не хеш указанного файла. Это хеш распакованного Package.bz2
файл, который сравнивается с ожидаемым хешем для Package
файл.
Вы за прокси? Если это так, попробуйте эту последовательность:
sudo apt update
sudo apt upgrade --fix-missing --fix-broken
Когда есть много ожидающих обновлений, я обнаружил, что для обновления всех пакетов необходимо запустить эту последовательность дважды.
Надеюсь это поможет.
Примечание. Моя система представляет собой консоль Ubuntu 20.04 LTS, работающую на промышленном ПК в частном и защищенном сегменте сети. Он имеет доступ только к одной машине в корпоративной сети, на которой работает прокси для этой единственной машины.