Локальный репозиторий необходим для экономии трафика в корпоративной сети. Вдобавок, значительно ускоряется время обновления серверов и рабочих станций.

Вариант с созданием локального зеркала репозитория был сразу отвергнут, потому что при этом трафик не экономился, а совсем наоборот. Зеркало содержало бы избыточный набор пакетов для разных архитектур, плюс каждый день обновлялись бы даже те пакеты, которые в локальной сети не использовались. Теоретически, конечно, можно было настроить и зеркало, но я пошёл по другому пути и установил apt-cacher.

По непроверенной (пока) информации apt-cacher больше не поддерживается, вместо него надо использовать apt-cacher-ng

Как работает apt-cacher

Cтоит на сервере и производит кэширование установочных пакетов (или пакетов обновления) .deb. Этот же сервер прописан на клиентских машинах как источник репозиториев.

Когда пользователь клиентской машины инициирует обновление или установку ПО, его машина подключается к серверу и запрашивает необходимые пакеты. При запрашивании пакета сервер проверяет, есть ли его последняя версия в локальном кэше и если есть, то пакет отправляется пользователю немедленно. В противном случае apt-cacher (apt-cacher-ng) скачивает обновлённую версию пакета, одновременно транслируя его пользователю. Новая версия остаётся в кэше для дальнейшего использования.

То есть, по сути, apt-cacher - это прокси для .deb-пакетов.

Настройка сервера

server - имя локального сервера обновлений.
192.168.0.0/24 - IP-адреса нашей сети.

Запускаем от имени суперпользователя:

apt-get install apt-cacher /etc/init.d/apt-cacher start

Локальный репозиторий почти готов. Осталось отредактировать файл конфигурации /etc/apt-cacher/apt-cacher.conf:

# Задаём путь к каталогу, где будет находиться кэш. Должно хватать свободного места. cache_dir=/полный/путь/к/каталогу/кэша/
# Обращаем внимание на эту строку. Это пользователь, от имени которого будет запускаться apt-cacher. # Этому пользователю надо будет дать права доступа на запись в каталог /полный/путь/к/каталогу/кэша/ group=www-data user=www-data
# Разрешаем нужные адреса. allowed_hosts=192.168.0.0/24, 127.0.0.1
# Личные враги в организации :) Как пример задания адресов. denied_hosts=192.168.0.12, 192.168.0.15-192.168.0.18

В большинстве случаев этого достаточно.

Ставим apt-cacher на автозапуск. Для этого в файле /etc/default/apt-cacher определяем переменную AUTOSTART.

AUTOSTART=1

Для порядка можно сразу добавить в кэш пакеты, которые уже установлены на сервер. Выполняем в консоли:

/usr/share/apt-cacher/apt-cacher-import.pl /полный/путь/к/каталогу/кэша/

Чтобы все изменения вступили в силу и сервер репозиториев заработал, надо перезапустить демона.

/etc/init.d/apt-cacher restart

Настройка клиентов

Способ «в лоб» - это отредактировать файл источников приложений /etc/apt/sources.list. В этом файле каждый адрес типа:

deb http://ru.archive.ubuntu.com/...

Надо заменить на

deb http://server:3142/ru.archive.ubuntu.com/...

3142 - номер порта, который по умолчанию слушает apt-cacher.

Второй способ (предпочтительнее) - вместо того, чтобы менять каждую запись в sources.list и в каждом из дополнительных репозиториев, можно в /etc/apt/apt.conf добавить строчку:

Acquire::http::Proxy "http://server:3142/";

Для этого можно выполнить команду:

echo 'Acquire::http::Proxy "http://server:3142/";'>>/etc/apt/apt.conf

для apt-cacher или

echo 'Acquire::http { Proxy "http://127.0.0.1:3142"; };'>>/etc/apt/apt.conf

для apt-cacher-ng.

Более того, если при установке системы выбрать, что работаем через прокси и указать сервер server и порт 3142, то эта запись в установленной системе появится автоматически.

Чтобы проверить связь с репозиторием и обновить источники, выполняем:

apt-get update

Первый способ полезен, если планируется кэшировать не все источники приложений. (Я не могу придумать такую ситуацию, но мало ли.)

Второй способ удобнее в подключении рабочей станции к локальному репозиторию и позволяет быстро вернуть всё как было в случае сбоев.

Оба способа подключения нельзя использовать одновременно. Или один, или другой. Иначе не будет работать.

Ссылки