Устанавливаем операционную систему 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