Обычно пакеты Apt обслуживаются по "голому" HTTP, а загруженное содержимое проверяется подписями GPG. Это упрощает для apt-cacher-ng проксирование HTTP-соединений и добавление загруженных пакетов в свой кэш.
apt-cacher-ng не может напрямую MITM HTTPS соединения, созданного Apt. Возможно настроить HTTPS соединения на прохождение через apt-cacher-ng, но тогда содержимое не будет кэшироваться - оно будет каждый раз перезагружаться с удаленного сервера. Это быстро раздражает при перестройке контейнеров Docker, которые устанавливают множество пакетов из Apt-репозиториев, обслуживаемых по HTTPS.
Есть ли способ заставить apt-cacher-ng кэшировать пакеты, загруженные из репозиториев HTTPS?
Допустим, URL-адрес вашей службы APT-CACHER-NG http: // localhost: 3000
, и вы храните его в переменной Bash $ {Local_apt_cache_url}
.
Затем вы должны переписать файл Sources.list
и файл файлов каталога
. List.d
файлы каталога со следующими двумя преобразованиями:
Эта команда переписывает URL-адрес репозитория APT на http://example.com
- http: http: // localhost: 3000 / example.com
:
find /etc/apt/sources.list /etc/apt/sources.list.d/ \
-type f -exec sed -Ei 's!http://!'${LOCAL_APT_CACHE_URL}'/!g' {} \;
Эта команда переписывает репозиторий APT В HTTPS://example.com
- http: // localhost: 3000 / https /// example.com
. APT-CACHER-NG получает HTTP-запрос, а затем инициирует свой собственный запрос HTTPS - удаление потребности в любой MITM или Passthrough. Пакеты HTTPS правильно кэшируются.
find /etc/apt/sources.list /etc/apt/sources.list.d/ \
-type f -exec sed -Ei 's!https://!'${LOCAL_APT_CACHE_URL}'/HTTPS///!g' {} \;
Это преобразование должно быть сделано для любых новых репозиториев, которые добавляются позже - будь то непосредственно изменение источников .List
или через утилиту Add-APT-Repository
Отказ