Локальный сервер обновления Debian

Ещё одна мини-памятка, теперь про создание локального зеркала репозиториев, актуальна для Debian Wheezy, описывается момент, на котором пришлось задуматься - раздача пакетов. Теперь оно работает, однако, вполне возможно, есть лучшие и более правильные способы решение этой задачи. Буду рад критике.

0. Необязательное введение

Однажды захотелось странного - перевести наконец-то компьютерный класс (14 стареньких Core2Duo) на линукс. 1ГБ рам - особо не навиртуализируешься. Ведутся там в основном операционки, компьютерные сети и алгоритмизация и программирование.

Установка - силами студентов в качестве лабораторных работ. Ставили CentOS (тогда ещё 6), теперь стоит по заголовку - Debian Wheezy.

Настройка/управление - Ansible, возможно, будет SaltStack, но это уже другая история. Посмотрим на локальный репозиторий.

1.  Создание зеркала с помощью apt-mirror

Создаём его с помощью apt-mirror. Двум статьям за это большое спасибо: https://wiki.debian.org/ru/CreateLocalRepo и http://mydrafts.ru/debian-sozdanie-lokalnogo-repozitoriya-apt-mirror/. Ниже будут отличия от этих статей.

Важное из конфига /etc/apt/mirror.list:
set base_path    /mnt/repo/debian
# Зеркало с пакетами wheezy x64
deb-amd64 ftp://debian.nsu.ru/debian wheezy main contrib non-free
# Зеркало с обновлениями безопасности wheezy x64
deb-amd64 http://security.debian.org/ wheezy/updates main contrib non-free
set base_path - репозитории хранятся на отдельном разделе, монтирующемся в /mnt/repo/, загружаются в debian/.
Зеркала для скачивания репозиториев - debian.nsu.ru и security.debian.org.

С чувством глубокого удовлетворения запускаем
# apt-mirror
Ждём загрузки 40+ ГБ и думаем, что же делать дальше.

2. Настройка веб-сервера (nginx)

А дальше по структуре файлов видим, что нужно предоставить доступ к двум появившимся каталогам:
  • /mnt/repo/debian/mirror/debian.nsu.ru/debian/ (в котором есть подкаталог dists/wheezy/)
  • /mnt/repo/debian/mirror/security.debian.org/ (в котором есть подкаталог dists/wheezy/updates/)
Сделать это можно с помощью nginx (или любым другим сервером, но я воспользовался именно им), у которого должен быть доступ на чтение к этим каталогам. Минимальная конфигурация nginx:
http {
        server {
                location / {
                        root /srv/http;
                        autoindex on;
                }
        }
}
Здесь autoindex on; позволяет отдавать файлы из каталога. В каталоге /srv/http создаём две символические ссылки debian и debian-security:
# ln -s /mnt/repo/debian/mirror/debian.nsu.ru/debian/ /srv/http/debian
# ln -s /mnt/repo/debian/mirror/security.debian.org/ /srv/http/debian-security

3. Настройка apt-get на клиентах

Теперь осталось настроить доступ к этим двум репозиториям на клиентах.

Конфиг /etc/apt/sources.list:
deb http://127.0.0.1/debian wheezy main contrib non-free
deb http://127.0.0.1/debian-security wheezy/updates main contrib non-free

В консоли клиентов:
# apt-get upgrade
# apt-get update

Вот, собственно, и всё. Конечно, остались некоторые непонятные мне моменты, но, как обычно, появились срочные дела, а обновление работает, пришлось успокоиться. Подскажете, как лучше сделать - моя благодарность. Есть непонятные вещи? Спрашивайте, подскажу, что смогу :)