Утилита 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

Спасибо за внимание!

Сводка
Linux, apt-mirror + nginx. Локальный репозиторий
Имя статьи
Linux, apt-mirror + nginx. Локальный репозиторий
Описание
Утилита apt-mirror используется для создания локального зеркала репозитория Linux. Локальный репозиторий синхронизируется с официальными репозиториями

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *