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

У меня есть машина, которая использует 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

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

8 ответов

Решение

Я бы предложил отключиться от 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 пакет установлен.

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

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.

По сути, вы можете настроить 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 из 50 скачиваний) с ошибками "Hash Sum Mismatch" и "Invalid Header", используя apt-cacher-ng на 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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