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.