Введение.
Вопросы создания локального репозитория для серверов и рабочих станций Linux, в настоящее время становится актуальным. Многие организации, выполняя федеральный закон, не имеют прямого доступа к ресурсам Интернет. Общая сеть предприятия делится на локальную и интернет. В статье блога, рассматриваются методика создания зеркала репозитория (repo), в закрытой сети предприятия.
Порядок действий.
Действия при планировании работ создания локального зеркала репозитория.
- выбор источника repo
- создание копии зеркала repo
- развёртывание локального сервера repo
- выбор устройства для перемещения repo
- копирование репозитория на локальное зеркало
- Стенд:
- ALT Linux сервер, имя repo-basic; ip-192.167.100.99;
- ALT Linux сервер, имя repo-local; ip-10.0.2.8;
- Альт Рабочая станция, имя: lin-kde, IP=10.0.2.33;
Выбор источника.
В качестве источника репозитория, используем Sysiphus (Сизиф) — имеет хорошею историю, широко используется в линейки продуктов «Базальт СПО». Проект Sysiphus имеет несколько веток (срезов) пакетов, для обновления серверов и рабочих станций, выбираем стабильную ветку, Branch.
Создание базового зеркала.
Под базовым зеркалом репозитория, подразумеваем сервер «выставленный» в интернет. Задача сервера — по расписанию зеркалировать пакеты с сайта «Базальт СПО». В качестве базового, используем сервер минимальной конфигурации, о котором говорилось ранние. Добавим, только, инструкцию по установке модуля пакетов обновления для ЦУС.
ЦУС — вэб интерфейс, центра управления системой.
# apt-get update
# apt-get install alterator-mirror
После подготовки сервера, переходим к конфигурации архитектуры скачиваемых пакетов. Для этого в браузере, печатаем адрес ЦУС сервера, где будут хранится пакеты.

Для выбора архитектуры, щёлкнуть по названию репозитория.
В каталоге /srv/public/mirror создаётся папка pX — внутри структура пакетов. X — версия репозитория.
GUI — графический интерфейс пользователя.
Локальный сервер репозитория.
Локальный сервер устанавливаем по той же инструкции, что и базовый. Этот сервер будет отвечать за обновление рабочих станций и серверов внутри LAN предприятия. Для локального сервера необходимо выделить отдельное устройство. Размер дискового пространства должно быть достаточным, чтобы хранить пакеты различных архитектур.
Размер одного репозитория составляет ~ 100-120Гб
Перемещене репозитория.
Наполнять хранилище repo-local будем с помощью переносного носителя, т.к по условию, сеть Интернет и LAN предприятия разделены. Сейчас рынок предлагает достаточно много переносных устройств хранения информации. Остановимся на одном из них, хорошо зарекомендовавшим себя в работе с большими данными.

Этот портативный SSD работает чисто, надёжно, без обрывов, имеет приятную эргономику и дизайн.
Копирование репозитория.
После того, как работы по установке, настройке и тестированию серверов для репозиториев закончены, переходим к операции копирования. Действия по перемещению repo-basic в repo-local носит рутинный характер. Примерно один раз в неделю, если нет важных обновлений, ответственный сотрудник производит операцию зеркалирования, отмечая свои действия в файле README; дата, время.
Порядок действия.
- копирование пакетов с repo-basic на USB диск
- перемещение пакетов c USB диска на repo-local
Операцию копирования repo-basic, при создании первой копии, в виду большого размера хранилища, можно произвести двумя способами:
- с рабочей станции, подключаемся к repo-basic, копировать F5
- подключить диск к USB порту repo-basic, копировать F5
Всё зависит от пропускной способности LAN вашего предприятия. В дальнейшем операция зеркалирования будут иметь инкрементальный характер — новые версии пакетов добавляются, старые удаляются.
Скрипты.
Для автоматизации выполняемых операций обновления репозиториев, приводятся два сценария — inmir и outmir. Скрипты inmir и outmir использует возможности утилиты rsync, для передачи больших объёмов данных.
Rsync — быстрый и универсальный инструмент для копирования и зеркалирования файлов.
inmir
Выполняет копирование пакетов сервера repo-basic на usb диск. Скрипт следует поместить в каталог /usr/local/bin сервера repo-basic.
#! /bin/bash
# скрипт inmir
# копирование пакетов branch pX из repo-basic
echo 1.пожалуйста ведите пароль sudo рабочей станции
echo 2.обновление branch pX, пожалуйста ведите пароль пользователя bk
# выполнение копирования\зеркалирования
sudo rsync -r -t -p -o -g -v --progress -l -D bk@repo-basic:
/srv/public/mirror/pX /media/user/usb
- pX — текущая ветка branch, пример p10
- bk — уч. запись пользователя выполняющего операцию
- rsync — список используемых ключей:
- -r рекурсия каталогов (копирование под папок и файлов)
- -t сохранять время изменения пакетов
- -p сохранить первоначальные права пакетов
- -o сохранить владельца (только для root)
- -q печать, только ошибки
- -v печатать подробную информацию
- —progress показывать процесс передачи
- -l копировать символические ссылки
- -D сохранять файлы устройств, копировать спец. файлы
Пользователь выполняющий операцию зеркалирования, в примере bk, должен иметь права доступа к папке репозитория.
outmir
После заполнения диска USB свежей версией пакетов репозитория, аккуратно извлекаем и переносим его на repo-local. При создании новой копии хранилища repo-local, можно действовать по рекомендации, приводимой выше. В дальнейшем, все действия выполняются с рабочей станции, с помощью сценария outmir. Скрипт outmir должен находится в каталоге /usr/local/bin, сервера repo-local.
#! /bin/bash
# скрипт outnmir
# копирование пакетов branch pX с usb диска
echo 1.пожалуйста ведите пароль sudo рабочей станции
echo 2.обновление branch pX, пожалуйста ведите пароль пользователя bk
# выполнение копирования\зеркалирования
sudo rsync -r -t -p -o -g -v --progress -l -D bk@repo-basic:
/media/user/usb /srv/public/mirror/pX
Заключение.
Построение локального репозитория в закрытой LAN сети, позволяет обезопасить устройства вычислительной сети предприятия от действий связанных с Интернет. У администратора появляется своё хранилище, всегда готовое к работе. Требования ФЗ предусматривает формирование локального зеркало из проверенного источника — репозиторий Sysiphus включён в реестр программного обеспечения. Операцию переноса пакетов с базового сервера на локальный, производится один раз в неделю, если нет важных пакетов. В каталог mirror, repo-local, можно поместить файл README, где будут стоять отметки о времени и дате обновления.