Apt-Get с использованием Apt-Cacher NG не может получить пакеты с несоответствием хэш-суммы

8

У меня есть машина, которая использует Apt-Cacher NG, работающий на другой машине, в качестве кеширующего прокси.

При попытке запустить sudo apt-get updateя получаю следующие ошибки:

W: Failed to fetch gzip:/var/lib/apt/lists/partial/it.archive.ubuntu.com_ubuntu_dists_oneiric-updates_main_source_Sources  Hash Sum mismatch
W: Failed to fetch gzip:/var/lib/apt/lists/partial/it.archive.ubuntu.com_ubuntu_dists_oneiric-updates_main_binary-amd64_Packages  Hash Sum mismatch
W: Failed to fetch gzip:/var/lib/apt/lists/partial/it.archive.ubuntu.com_ubuntu_dists_oneiric-updates_universe_binary-amd64_Packages  Hash Sum mismatch
W: Failed to fetch gzip:/var/lib/apt/lists/partial/it.archive.ubuntu.com_ubuntu_dists_oneiric-updates_main_binary-i386_Packages  Hash Sum mismatch
E: Some index files failed to download. They have been ignored, or old ones used instead.

Каталог /etc/apt/sources.list.d пуст.

Чтобы исправить это, я уже попробовал следующее безуспешно:

Решение 1:

sudo rm -fr /var/lib/apt/lists
sudo mkdir -p /var/lib/apt/lists/partial
sudo apt-get clean
sudo apt-get autoclean

Решение 2:

sudo apt-get update -o Acquire::http::No-Cache=True

Любое предложение?

Марко Лацкович
источник
Я видел такое поведение иногда. Запуск sudo apt-get update несколько раз подряд помог в этом случае, но я не знаю почему, никогда не изучал эту проблему более внимательно.
oddfellow
1
Это происходит также на машинах, которые не используют Apt-Cacher NG. В этих случаях Решение 1 решает проблему.
Марко Лацкович

Ответы:

11

Я бы предложил отключиться от APT-cacher-ng и проверить Squid-deb-proxy.

В моем опыте APT-cacher-ng оказался очень ошибочным, и множество сообщений об ошибках выдаются. Лишь недавно было предложено снова разблокировать Debian, когда некоторые серьезные ошибки устранены. Для Ubuntu я давно перешел на Squid-deb-proxy и не жалею об этом. Это отличная альтернатива и лучший APT-кешер, которого я когда-либо встречал.

Для Squid-deb-proxy просто установите пакет squid-deb-proxyи добавьте разрешенные целевые домены в новый файл в /etc/squid-deb-proxy/mirror-dstdomain.acl.d. В качестве бонуса клиенты могут автоматически обнаруживать машины с поддержкой кэширования в локальной сети, установив squid-deb-proxy-clientпакет.

gertvdijk
источник
6

Вы можете исправить это прямо сейчас, запустив:

http://your-cache-server:3142/acng-report.html?abortOnErrors=aOe&byPath=bP&byChecksum=bS&truncNow=tN&incomAsDamaged=iad&purgeNow=pN&doExpire=Start+Scan+and%2For+Expiration&calcSize=cs&asNeeded=an#bottom

Это удалит все битые файлы в вашем кеше.

Чтобы создать этот пермананет, взгляните на https://www.unix-ag.uni-kl.de/~bloch/acng/html/maint.html#auto-cleanup.

По сути, вы можете настроить cron для ежедневной очистки кэша, чтобы он соответствовал полной контрольной сумме всего вашего кэша. Это отловит все плохие размеры и любые другие повреждения и очистит эти файлы. Я отредактировал /etc/cron.daily/apt-cacher-ngи добавил следующее после комментариев:

export ACNGREQ="abortOnErrors=aOe&byPath=bP&byChecksum=bS&truncNow=tN&incomAsDamaged=iad&purgeNow=pN&doExpire=Start+Scan+and%2For+Expiration&calcSize=cs&asNeeded=an"

Это эквивалентно щелчку всех параметров истечения срока действия на странице обслуживания, кроме «Пропускать проверки заголовков ...»

Марк Портер
источник
1
Это был единственный ответ, который избавился от ошибки в моих системах!
Янв
Я думаю, что вам может понадобиться ?в начале вашей строки экспорта.
TafT
3

Предложение 1

sudo rm /var/lib/apt/lists/*gzip*
sudo rm /var/lib/apt/lists/partial/*gzip*
sudo apt-get update

Предложение 2

sudo rm -f /var/cache/apt/partial/*
sudo rm -f /var/cache/apt/*.deb
sudo apt-get update

Предложение 3

sudo touch /etc/apt/apt.conf.d/no-cache
sudo nano /etc/apt/apt.conf.d/no-cache

И вставьте это в:

Acquire::http {No-Cache=True;};

Теперь попробуйте:

sudo apt-get update
SirCharlo
источник
1
Спасибо, но никто из трех не работал.
Марко Лацкович
Работал как брелок, установив no-cache в true! Бесконечно благодарен! :)
mhenrixon
3

apt-cacher-ngСо дня обновления дистрибутива я ОЧЕНЬ часто (1 из 50 скачиваний) боролся с ошибками "Hash Sum Mismatch" и "Invalid Header", использующимися в Ubuntu Precise 12.04 LTS. Ubuntu Precise использует apt-cacher-ngверсию 0.7.2-1, на сегодняшний день существует множество исправлений ошибок в этом программном обеспечении, и более новая версия: 0.7.26-1 намного стабильнее.

Я установил Ubuntu Quantal версию apt-cacher-ngиз packages.ubuntu.com, которая является версией 0.7.26-1.

Я настоятельно рекомендую взять будущую / тестовую версию apt-cacher-ngи вручную установить этот новый пакет.

Рон Оллред
источник
1

Мои обновления всегда будут почти успешными - 95% файлов будут загружаться через прокси-сервер, в результате чего, возможно, последние ~ 100 файлов потерпят неудачу с «несоответствием хэш-суммы», и ни одно из предложенных решений никогда не будет работать.

А потом, просто ради смеха, я перешел 01proxyк 01proxy.ng, побежал aptitude update, затем update-managerи выбрал дистрибутив-апгрейд. Он продолжил загрузку оставшихся файлов с archive.ubuntu.com (~ 70M, а не ~ 1G), а остальная часть обновления прошла гладко. После перезагрузки я переместил 01proxy.ng обратно на 01proxy, и все вернулось на круги своя.

Я сделал это дважды сейчас, один раз на самом прокси-сервере и один раз на клиенте, и оба преуспели просто великолепно после сбоя (с этой отметкой 95%) при прохождении через прокси.

user117247
источник
1

Удаление /var/cache/apt-cacher-ng/download.virtualbox.orgпапки была помочь мне решить эту проблему с Failed to fetch ... Hash Sum mismatchна apt-get updateэтом предотвратить virtualbox-4.3пакет от сервера Oracle.

Адам Рычковски
источник
0

Предложение 4

Работа sudo apt-get update && sudo apt-get upgrade -yна сервере Apt-Cacher NG может решить проблему. Вы должны делать это каждый раз, когда возникает проблема.

Предложение 5

Иногда проблема заключается в зеркале: изменение зеркала /etc/apt/sources.listкак на сервере, так и на клиентах может решить эту проблему.

Марко Лацкович
источник
0

Вы также можете удалить всю папку хранилища

rm -r /var/cache/apt-cacher-ng/<repository_folder>

где хранится пакет с несоответствием хэш-суммы.

При следующем запросе apt новая папка с чистой хэш-суммой будет автоматически создана apt-cacher-ng.

panticz.de
источник