На кофе

Поиск

Поиск Яндекс

Вход

Зеркалирование репозитория с использованием утилиты apt-mirror

Поделиться статьей

Устанавливаем операционную систему Astra Linux.

Для репозитория желательно предусмотреть отдельный раздел на диске!!! Как сделать отдельный раздел можно прочесть тут.

И устанавливаем необходимые пакеты (для управления сервером пакеты ssh и xrdp, веб сервер Apache, утилиту создания локальных копий репозиториев):

sudo apt-get install apache2 ssh xrdp apt-mirror

Далее создаем директорию под размещение локального репозитория (зеркала) и устанавливаем владельца директории.

sudo mkdir /repo
sudo chown -R apt-mirror /repo

Если при установке системы был предусмотрен отдельный раздел под размещения репозитория, то необходимо указать его.

Настраиваем источники синхронизации репозитория и директорию размещения,

sudo nano /etc/apt/mirror.list

указываем нашу директорию для размещения репозитория, меняя строку

# set base_path /var/spool/apt-mirror

на

set base_path /repo

также меняем источники на требуемые, для примера будем использовать официальные репозиторий Astra Linux Common Edition:

deb https://download.astralinux.ru/astra/stable/orel/repository/ orel main contrib non-free

 

и для очистки локальной копии (например: устаревшие пакеты) при обновлении укажем в конце

clean deb https://download.astralinux.ru/astra/stable/orel/repository/

 

Сохраняем нажав "Cntr+O" и ввод, и выходим из редактора "Cntr+X". 

Создаем публикуемую директорию для веб-сервера

sudo mkdir /var/www/html/repo

Примечание: если планируется публиковать все содержимое mirror (без разбора), то можно создать символическую ссылку на него (sudo ln -s /repo /var/www/html/repo)

Меняем настройки веб-сервера

sudo nano /etc/apache2/sites-enabled/000-default.conf

и устанавливаем главную страницу

DocumentRoot /var/www/html/repo

и добавляем сведения о директории с репозиторием

<Directory /var/www/html/repo>
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order Deny,Allow
Allow from all
</Directory>

Сохраняем нажав "Cntr+O" и ввод, и выходим из редактора "Cntr+X". 

Перезагружаем веб-сервер

sudo systemctl restart apache2

Создадим директорию под файлы конфигурации и добавим ссылку в веб-сервер

sudo mkdir /repo/configs/
sudo ln -s /repo/configs /var/www/html/repo/configs

В данной директории удобно разместить новый sources.list для скачивания пользователями с указанием уже своего развернутого репозитория. Разместим такой лист sources.list

sudo nano /repo/configs/sources.list

И вставим (для нашего примера):

deb http://repo.entnet.ru/repo/ orel main contrib non-free

Сохраняем нажав "Cntr+O" и ввод, и выходим из редактора "Cntr+X".

Выполняем синхронизацию выбранных разделов репозиториев

sudo -u apt-mirror apt-mirror

После индексации утилита покажет объем пакетов для скачивания и прогресс выполнения задачи.

Дожидаемся завершения синхронизации (данный процесс может занять длительное время из-за скорости интернета).

Далее добавим ссылки на публикацию необходимых разделов репозитория, как в нашем примере с https://download.astralinux.ru/astra/stable/orel/repository/:

sudo ln -s /repo/mirror/download.astralinux.ru/astra/stable/orel/repository /var/www/html/repo/repo

Перезагружаем веб-сервер

sudo systemctl restart apache2

Можно синхронизировать репозитории вручную, убедившись что источник синхронизации исправен и не содержит "некорректных" пактов, либо установить задание в планировщик cron например раз в неделю в 4:00 по воскресеньям.

sudo nano /etc/cron.d/apt-mirror # Regular cron jobs for the apt-mirror package
#
0 4 * * 7 apt-mirror /usr/bin/apt-mirror > /var/spool/apt-mirror/var/cron.log

Сохраняем нажав "Cntr+O" и ввод, и выходим из редактора "Cntr+X".

Можно приступать к использованию зеркала репозитория указав соответствующие настройки в sources.list, как в нашем примере:

deb http://repo.entnet.ru/repo/ orel main contrib non-free