Создание зеркала репозитория

Редактировал(а) atsarkov 25.06.2024 16:06


В статье рассмотрено создание зеркала репозитория в ЛВС ИС/АС на примере репозиториев ОСнова onyx с использованием инструмента apt-mirror и веб-сервера nginx.
Предполагается, что имя хоста, на котором выполняется установка, mirror.local.

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

  1. При отсутствии реквизитов доступа (user и password) к репозиториям dl.nppct.ru, получить их в службе поддержки АО "НППКТ";
  2. Установить apt-mirror, выполнив команду:
sudo apt install apt-mirror
  1. Для настройки зеркалирования репозиториев привести конфигурационный файл /etc/apt/mirror.list для ОСНова onyx  к следующему виду:
set base_path    /var/spool/apt-mirror
set nthreads     20

deb https://user:password@dl.nppct.ru/onyx/stable/repos/disk1/  onyx  main contrib non-free
deb https://user:password@dl.nppct.ru/onyx/stable/repos/disk2/  onyx  main contrib non-free
deb https://user:password@dl.nppct.ru/onyx/stable/repos/update/  onyx  main contrib non-free
deb https://user:password@dl.nppct.ru/onyx/stable/repos/devel-disk1/  onyx  main contrib non-free
deb https://user:password@dl.nppct.ru/onyx/stable/repos/devel-update/  onyx  main contrib non-free

clean https://dl.nppct.ru/onyx/stable/repos/disk1/
clean https://dl.nppct.ru/onyx/stable/repos/disk2/
clean https://dl.nppct.ru/onyx/stable/repos/update/
clean https://dl.nppct.ru/onyx/stable/repos/devel-disk1/
clean https://dl.nppct.ru/onyx/stable/repos/devel-update/

Необходимые параметры конфигурационного файл /etc/apt/mirror.list:

  • set base_path /var/spool/apt-mirror  - базовый каталог, в котором хранятся зеркала репозиториев, рабочие файлы и каталоги системы apt-mirror;
  • set nthreads 20 - количество потоков (задач) для скачивания пакетов;
  • deb https://user:password@dl.nppct.ru/onyx/stable/repos/disk1/  onyx  main contrib non-free
  • deb https://user:password@dl.nppct.ru/onyx/stable/repos/disk2/  onyx  main contrib non-free - репозитории основных дисков для зеркалирования;
  • deb https://user:password@dl.nppct.ru/onyx/stable/repos/update/  onyx  main contrib non-free - репозиторий  диска обновления для зеркалирования;
  • deb https://user:password@dl.nppct.ru/onyx/stable/repos/devel-disk1/  onyx  main contrib non-free - репозиторий диска со средствами разработки для зеркалирования;
  • deb https://user:password@dl.nppct.ru/onyx/stable/repos/devel-update/  onyx  main contrib non-free - репозиторий диска обновления средств разработки для зеркалирования;
  • clean https://dl.nppct.ru/onyx/stable/repos/disk1/
  • clean https://dl.nppct.ru/onyx/stable/repos/disk2/
  • clean https://dl.nppct.ru/onyx/stable/repos/update/
  • clean https://dl.nppct.ru/onyx/stable/repos/devel-disk1/
  • clean https://dl.nppct.ru/onyx/stable/repos/devel-update/ - опция необходимая для удаления пакетов из локального зеркала репозитория, если пакеты были удалены в зеркалируемом (upstream) репозитории;
  1. Выполнить команду apt-mirror для зеркалирования репозиториев от имени пользователя apt-mirror:
sudo -u apt-mirror apt-mirror

После окончания работы, зеркалируемые репозитории будут располагаться в каталоге, указанном в переменной base_path. Для приведенной выше конфигурации, в каталоге /var/spool/apt-mirror.

  1. Для переодического зеркалирования репозиториев необходимо активировать задание планировщика cron, для этого отредактировать файл /etc/cron.d/apt-mirror, раскомментировав строку:
0 4    * * *   apt-mirror      /usr/bin/apt-mirror > /var/spool/apt-mirror/var/cron.log

При необходимости изменить время выполнения задания (по умолчанию - в 04:00 каждый день).  

Раздача зеркала репозитория с помощью nginx

  1. Установить веб-сервер nginx, выполнив команду:
sudo apt install nginx
  1. Удалить конфигурацию по умолчанию, выполнив команду:
sudo rm /etc/nginx/sites-enabled/default
  1. Создать файл конфигурацию /etc/nginx/conf.d/mirror.conf следующего вида:
server {
  listen 80;

  location / {
    root /var/spool/apt-mirror/mirror/dl.nppct.ru;
    autoindex on;
  }
}
  1. Верифицировать конфигурацию mirror.conf, выполнив команду:
sudo nginx -t
  1. Перезагрузить конфигурацию nginx, выполнив команду:
sudo systemctl reload nginx

Настройка apt-репозиториев на клиенте

  1. Закомментировать в файле /etc/apt/sources.list строки с установочными дисками ОС:
#deb cdrom:[OSNova Linux onyx - amd64 DVD disk1]/ onyx contrib main non-free
#deb cdrom:[OSNova Linux onyx - amd64 DVD disk2]/ onyx contrib main non-free

либо удалить файл /etc/apt/sources.list командой:

sudo rm /etc/apt/sources.list
  1. Подключить apt-репозитории, расположенные на локальном зеркале. Для этого создать файл /etc/apt/sources.list.d/onyx_mirror.list следующего вида:
# Базовые  репозитории и обновления
deb http://mirror.local/onyx/stable/repos/disk1/        onyx  main contrib non-free
deb http://mirror.local/onyx/stable/repos/disk2/        onyx  main contrib non-free
deb http://mirror.local/onyx/stable/repos/update/       onyx  main contrib non-free

# Средства разработки и обновления
deb http://mirror.local/onyx/stable/repos/devel-disk1/  onyx  main contrib non-free
deb http://mirror.local/onyx/stable/repos/devel-update/ onyx  main contrib non-free

Имя хоста mirror.local заменить на имя созданного зеркала репозитория.
При необходимости можно добавлять и удалять apt-репозитории при помощи символа комментария "#" в начале строки.

  1. Выполнить обновление apt-репозиториев командой:
sudo apt update