Утилита apt-mirror используется для создания локального зеркала репозитория Linux.
Причины использовать локальный репозиторий
Локальный репозиторий может уменьшить нагрузку на сеть. Так как обновления скачиваются всего один раз во время синхронизации локального репозитория с официальным. А остальные сервера обновляются по локальной сети.
Также локальное зеркало обеспечит идентичность пакетов на всех серверах. Например, мы можем обновить тестовый сервер, в течении нескольких дней проверить его работу. И если все нормально, следующем шагом можем обновлять боевые сервера. При этом официальные репозитории за эти дни успеют поменять версии пакетов, но наш репозиторий останется без изменения.
Установка и настройка apt-mirror
На debian и ubuntu apt-mirror устанавливается легко из официальных репозиториев:
# apt install apt-mirror
Основной конфигурационный файл — /etc/apt/mirror.list. Например нам нужно создать зеркало репозитория для proxmox ps и proxmox ve. Указываем нужные репозитории и комментирует ненужные, все остальное можно оставить по умолчанию:
# nano /etc/apt/mirror.list #deb http://ftp.us.debian.org/debian unstable main contrib non-free #deb-src http://ftp.us.debian.org/debian unstable main contrib non-free deb [arch=amd64] http://download.proxmox.com/debian/pve buster pve-no-subscription deb http://download.proxmox.com/debian/pbs buster pbs-no-subscription
Давайте разберем другие настройки в конфигурационном файле:
set base_path
— путь к основному каталогу репозитория;set mirror_path
— здесь будут складываться скаченные пакеты;set skel_path
— место для временно скачиваемых индексов;set var_path
— здесь размещены файлы журналов, url-адреса и контрольные суммы MD5. А также скрипты clean.sh, postmirror.sh;set cleanscript
— скрипт очистки, по умолчанию пустой, его ещё нужно написать;set defaultarch
— архитектура по умолчанию (i386 или x86_64)set postmirror_script
— скрипт постобработки, по умолчанию пустой;set run_postmirror
— запускать ли скрипт постобработки (0 — не запускать, 1 — запускать);set nthreads
— количество потоков при скачивании (по умолчанию 20);set _tilde
— чтобы разрешить правильную загрузку зеркал с тильдой в URL-адресе или имени пакета установите — 1, по умолчанию — 0.
Чтобы создать репозиторий выполним:
# apt-mirror
Вы увидите объём репозитория и он начнёт закачиваться к вам на сервер!
После закачки можем проверить что у нас закачалось. Для начала посмотрим на дерево скаченных каталогов:
# tree -d /var/spool/apt-mirror/ /var/spool/apt-mirror/ ├── mirror │ └── download.proxmox.com │ └── debian │ ├── pbs │ │ └── dists │ │ └── buster │ │ └── pbs-no-subscription │ │ └── binary-amd64 │ └── pve │ └── dists │ └── buster │ └── pve-no-subscription │ └── binary-amd64 ├── skel │ └── download.proxmox.com │ └── debian │ ├── pbs │ │ └── dists │ │ └── buster │ │ └── pbs-no-subscription │ │ └── binary-amd64 │ └── pve │ └── dists │ └── buster │ └── pve-no-subscription │ └── binary-amd64 └── var
И посмотрим на размер загруженных зеркал:
# du -sh /var/spool/apt-mirror/mirror/download.proxmox.com/debian/* 9.1G /var/spool/apt-mirror/mirror/download.proxmox.com/debian/pbs 11G /var/spool/apt-mirror/mirror/download.proxmox.com/debian/pve
Установка и настройка nginx
Опубликовать репозиторий можно с помощью веб сервера apache2 или naginx. Я для этой цели использовал nginx.
Для начала установим этот веб сервер:
# apt install nginx
После установки настроим, а именно укажем корневой путь «/var/spool/apt-mirror/mirror/download.proxmox.com/debian/» и в блок «location /» добавим опцию «autoindex on»:
# nano /etc/nginx/sites-enabled/default root /var/spool/apt-mirror/mirror/download.proxmox.com/debian/; location / { try_files $uri $uri/ =404; autoindex on;
Теперь перезапустим nginx:
# service nginx restart
И можем зайти в репозиторий с помощью web браузера:

Осталось только настроить сервера PVE и PBS, чтобы они обновлялись не с официального репозитория, а с локального зеркала. Для этого в sources.list на этих северах напишем следующее:
# nano /etc/apt/sources.list.d/pve-no-subscription.list deb [arch=amd64] http://xxx.xx.xx.xx/pve buster pve-no-subscription # nano /etc/apt/sources.list.d/pbs-no-subscription.list deb [arch=amd64] http://xxx.xx.xx.xx/pbs buster pbs-no-subscription
Спасибо за внимание!