Как создать свой репозиторий для Debian

Создание локального репозитория намного упрощает жизнь администраторов и экономит входящий трафик, защищая каналы от переполнения. Локальные репозитории пакетов – хороший выбор для крупной организации с большим количеством компьютеров, которые объединены в локальную сеть. Для Debian-based дистрибутивов Linux существуют три инструмента для создания локальных репозиториев – apt-mirror, debmirror и reprepro.
Утилита apt-mirror
Пакет apt-mirror считается самым надежным инструментом зеркалирования.
Сначала выполняем установку самого пакета:
apt-get install apt-mirrorДля хранения пакетов локального репозитория нужно создать каталоги
mkdir -p /mnt/repo/debian/{mirror,var,skel}Для надежности работы, каталог /mnt/repo/debian желательно создать на отдельном разделе смонтированного диска – тогда при переустановке либо сбое системы, все пакеты “продолжат жить”.
Предполагаем, что мы будем хранить в репозитории:
- бинарные пакеты под amd64 jessie (stable-ветка) и их исходный код
- бинарные пакеты с обновлениями безопасности под amd64 jessie (stable-ветка) и их исходный код
- бинарные пакеты с другими обновлениями под amd64 jessie (stable-ветка) и их исходный код
- бинарные Backports-пакеты под amd64 jessie (“двери” в ветки testing и unstable)
- пакеты udebs
В файле конфигурации /etc/apt/mirror.list приводим ключевые параметры к следующему виду (некоторые комментарии и опции по-умолчанию пропущены):
# основной каталог локального репозитория Debian set base_path    /mnt/repo/debian # Не выполнять пост-обработку set run_postmirror 0 # параметры set nthreads     20 set _tilde 0 # бинарные пакеты под amd64 jessie (stable-ветка) и их исходный код deb-amd64 http://httpredir.debian.org/debian jessie main contrib non-free deb-src http://httpredir.debian.org/debian jessie main contrib non-free # бинарные пакеты с обновлениями безопасности под amd64 jessie (stable-ветка) и их исходный код deb-amd64 http://security.debian.org/ jessie/updates main contrib non-free deb-src http://security.debian.org/ jessie/updates main contrib non-free # бинарные пакеты с другими обновлениями под amd64 jessie (stable-ветка) и их исходный код deb-amd64 http://httpredir.debian.org/debian/ jessie-updates main contrib non-free deb-src http://httpredir.debian.org/debian/ jessie-updates main contrib non-free # udebs-пакеты deb-amd64 http://httpredir.debian.org/debian jessie main/debian-installer # бинарные Backports-пакеты под amd64 jessie (“двери” в ветки testing и unstable) deb-amd64 http://httpredir.debian.org/debian/ jessie-backports main contrib non-free deb-src http://httpredir.debian.org/debian/ jessie-backports main contrib non-free # очистка от не-индексированных в Release файлов clean http://httpredir.debian.org/debian clean http://security.debian.org # пропускаем удаление файлов в каталоге skip-clean http://httpredir.debian.org/debian/dists/jessie/main/installer-amd64/Каждый из веб-каталогов, указанных в файле настроек, желательно проверить на существование.
В случае, если в репозиторий желательно включить еще какие-то архитектуры, релизы либо ветви – соответствующие строки добавляются сюда же по аналогии с jessie amd64.
Чтобы вручную создать и/или обновить локальный репозиторий, выполняется
# apt-mirrorБезусловно, есть смысл создать cron-правило для синхронизации локального зеркала (официальные репозитории обновляются в 3:00, 9:00, 15:00 и 21:00):
crontab -e 05 01 * * *     apt-mirror >> /var/log/apt-mirror.log 05 03 * * *     /mnt/repo/debian/var/clean.sh >> /var/log/apt-mirror.logПоследним шагом будут настройки доступа к каталогам репозитория. Например, для строки из mirror.list вида
deb-amd64 http://httpredir.debian.org/debian jessie main contrib non-free
физически файлы будут храниться в/mnt/repo/debian/mirror/httpredir.debian.org/debian
Доступ к этим каталогам может осуществляться через Web или FTP.
Также при наличии пакетов из нескольких веток, желательно добавить симлинки вида stable,testing и unstable:ln -s /media/repo/debian/mirror/httpredir.debian.org/debian/dists/jessie /media/repo/debian/mirror/httpredir.debian.org/debian/dists/jessie/stableО том, как защитить локальный репозиторий gpg-ключом, вы можете узнать на нашем авторском курсе “L2-Security. Безопасность в Linux“.