Как создать локальный репозиторий Linux.

Введение.

Вопросы создания локального репозитория для серверов и рабочих станций 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 — версия репозитория.

Модуль evolution — ews работает с MS Exchange 2007, 2010 и новее

Локальный сервер репозитория.

Локальный сервер устанавливаем по той же инструкции, что и базовый. Этот сервер будет отвечать за обновление рабочих станций и серверов внутри LAN предприятия. Для локального сервера необходимо выделить отдельное устройство. Размер дискового пространства должно быть достаточным, чтобы хранить пакеты различных архитектур.

Размер одного репозитория составляет ~ 100-120Гб

Перемещене репозитория.

Наполнять хранилище repo-local будем с помощью переносного носителя, т.к по условию, сеть Интернет и LAN предприятия разделены. Сейчас рынок предлагает достаточно много переносных устройств хранения информации. Остановимся на одном из них, хорошо зарекомендовавшим себя в работе с большими данными.

Вид: Портативный SSD USB 3.1
Вид: Портативный SSD USB 3.1 T5/T7

Этот портативный 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, где будут стоять отметки о времени и дате обновления.