UMGUM.COM 

Apt-Cacher NG ( Свежий ветер в среде аккумулирующих серверов обновлений для Debian и Ubuntu. )

10 января 2012  (обновлено 31 января 2015)

OS: Debian GNU/Linux Lenny/Squeeze.

Предыстория: "apt-proxy", который использовался ранее в качестве корпоративного сервера обновлений для компьютеров под управлением ОС Debian, достал своей некачественной работой; в любой момент может зависнуть на загрузке "заголовков" и возобновить работу только спустя час-другой. В домашних условиях подобные задержки могли бы восприниматься даже положительно, вроде как дух приучают не привязываться к делам суетным и терпеливым призывают быть; но в рабочее время, когда план действий утверждён на часы вперёд, это неприемлемо.

Задача: найти замену не оправдавшему надежды "apt-proxy". Собственно, искать не пришлось. Давно ясно было, что единственный кандидат на роль прокси-сервера для обновления ПО в не особо большом парке (не более сотни Debian-машин) - "apt-cacher-ng". Предыдущая версия этой утилиты, "apt-cacher" (написанная на Perl), мною в своё время даже не рассматривалась, в силу причин, о которых не здесь и не сейчас, а вот её новая "генерация" - подтверждения моего наблюдения, даже за мою пока коротенькую жизнь, в том, что люди умнеют и создают всё более и более совершенные вещи и ПО.


Устанавливаем "apt-cacher-ng":

# aptitude install apt-cacher-ng

Приводим конфигурационный файл "apt-cacher-ng" к следующему виду:

# cat /etc/apt-cacher-ng/acng.conf

# Указываем место хранилищу загруженного добра
#
CacheDir: /var/cache/apt-cacher-ng

# Указываем сетевой адрес, который будет прослушивать сервер обновлений (если не указать ничего, что прослушиваться будут все доступные интерфейсы)
#
# BindAddress: localhost

# Указываем TCP порт, который будет прослушиваться нашим сервером
#
Port:3142

# Указываем адрес локального "UNIX socket", через который можно обращаться к серверу
#
SocketPath:/var/run/apt-cacher-ng/socket

# Указываем адрес pid-файла
#
PidFile: /var/run/apt-cacher-ng/pid

# Задаём условное имя страницы, на запрос которой сервер будет отдавать статистику работы (например, если клиент запросит: http://apt.local:3142/report.html - то будет отработан шаблон "/etc/apt-cacher-ng/report.html"
#
ReportPage: report.html

# Задаём срок (в сутках) хранения пакетов, которые уже не фигурируют в индексных файлах обновлений (грубо говоря, заменены более новыми). Если основная цель сервера - выступать именно в роли прокси, по минимуму используя дисковое пространство, то параметр можно выставить в районе одной недели. В мои цели входит как можно более длительное хранение загруженных данных, на тот случай, если они вдруг понадобятся (что на практике бывало, и не раз) - потому я велю серверу хранить файлы в течении года
#
ExTreshold: 365

# Здесь можно задать адрес обычного HTTP-прокси, через который наш сервер обновлений будет работать
#
# proxy: http://username:proxypassword@proxy.example.net:3128

# Указываем место расположения журнала событий
#
LogDir: /var/log/apt-cacher-ng

# Определяемся с уровнем детализации журнала событий сервера
#
VerboseLog: 1

В целом, с конфигурированием сервера - всё. Перезапускаем его и пользуемся:

# /etc/init.d/apt-cacher-ng restart

Ориентирование клиентов на сервер обновлений элементарно. Просто указываем подсистеме APT адрес прокси-сервера. Например, следующим образом.

Создаём конфигурационный файл (имя произвольное; принцип формирования подобен тому, как это делается в "/etc/rc*.d/"), который будет в общем порядке прочитан подсистемой APT при исполнении ею своих обязанностей:

# touch /etc/apt/apt.conf.d/01proxy

В файл вставляем строку указания на используемый прокси-сервер:

Acquire::http { Proxy "http://apt.local:3142"; };

Теперь на стороне клиента:

# aptitude update
# aptitude full-upgrade


Заметки и комментарии к публикации:


Оставьте свой комментарий ( выразите мнение относительно публикации, поделитесь дополнительными сведениями или укажите на ошибку )