1,1K подписчиков

Создание собственного локального и сетевого репозитория в Astra Linux 1.7

Собственный репозиторий может понадобится для уменьшения сетевого траффика, при массовом обновлении компьютеров или в случае, если по тем или иным причинам, интернет канал не доступен на машине.

Собственный репозиторий может понадобится для уменьшения сетевого траффика, при массовом обновлении компьютеров или в случае, если по тем или иным причинам, интернет канал не доступен на машине.

Создать собственный репозиторий (и управлять им) можно как полностью вручную (создать всю необходимую иерархию каталогов и метаданных), так и воспользовавшись специальной утилитой reprepro, которая сама создаст репозиторий согласно конфигурационного файла, который необходимо будет заполнить (этот способ и будет нам разобран).

Установим утилиту reprepo следующей командой:

sudo apt install reprepo

У меня пакет уже был установлен

Собственный репозиторий может понадобится для уменьшения сетевого траффика, при массовом обновлении компьютеров или в случае, если по тем или иным причинам, интернет канал не доступен на машине.-2

Процедура создания и настройки репозитория заключается в:

1. Создании ключа для репозитория.

2. Создании структуры репозитория:
- создание каталога, в котором будет размещен репозиторий
- заполнение конфигурационного файла
distributions
- создание структуры репозитория, согласно конфигурационного файла
distributions

3. Экспорта открытого ключа репозитория

4. Скачивания и добавления в репозиторий необходимых deb-пакетов

5. Организации распространения пакетов по протоколу ftp или http (опционально)

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

Для создания ключа, необходимо выполнить команду sudo gpg --gen-key. Она в интерактивном режиме запросит информацию об вашем имени, электронной почте, и фразу-пароль (необходимо её запомнить, она понадобится для дальнейших шагов). При генерации ключей, она попросит вводить текст с клавиатуры, совершать движение мышью, печатать на клавиатуре или обращаться к дискам, для генерации случайных чисел и создания достаточного количества энтропии для повышения крипто стойкости ключа.

Создание структуры репозитория

Создадим каталог для репозитория, например, /srv/repo/localrepo и в нем каталог conf. После чего перейдем в каталог conf.

sudo mkdir -p /srv/repo/localrepo/conf
cd /srv/repo/localrepo/conf
Собственный репозиторий может понадобится для уменьшения сетевого траффика, при массовом обновлении компьютеров или в случае, если по тем или иным причинам, интернет канал не доступен на машине.-4

Теперь необходимо создать конфигурационный файл distributions. Откройте любой редактор, введите или скопируйте текст из блока ниже и сохраните его как «distributions»:

sudo nano distributions

Codename: localrepo
Suite: stable
Version: 1.0
Origin: Debian
Label: localrepo Debian Repository
Description: localrepo Debian repository
Architectures: source amd64
Components: main
SignWith: yes
DebIndices: Packages Release . .gz .bz2
DscIndices: Sources Release . .gz .bz2
Contents: . .gz .bz2

Собственный репозиторий может понадобится для уменьшения сетевого траффика, при массовом обновлении компьютеров или в случае, если по тем или иным причинам, интернет канал не доступен на машине.-5

Далее создадим структуру репозитория с помощью команды:

sudo reprepro --ask-passphrase -b /srv/repo/localrepo export

утилита попросит ввести фразу-пароль из предыдущего шага и после ввода создаст структуру репозитория

Собственный репозиторий может понадобится для уменьшения сетевого траффика, при массовом обновлении компьютеров или в случае, если по тем или иным причинам, интернет канал не доступен на машине.-6

Структуру репозитория можно посмотреть утилитой tree, предварительно установив ее:

sudo apt install tree
tree
Собственный репозиторий может понадобится для уменьшения сетевого траффика, при массовом обновлении компьютеров или в случае, если по тем или иным причинам, интернет канал не доступен на машине.-7

Экспорт открытого ключа собственного локального репозитория

Для экспорта открытого ключа собственного репозитория, необходимо из каталога /srv/repo/localrepo выполнить команду:

sudo gpg --armor --output repo_gpg.key --export
Собственный репозиторий может понадобится для уменьшения сетевого траффика, при массовом обновлении компьютеров или в случае, если по тем или иным причинам, интернет канал не доступен на машине.-8

Добавления в репозиторий deb-пакетов

Добавим нужные нам пакеты в репозитории. Для начала скачаем deb-пакет (например, yandex-disk) в предварительно созданную в домашнем каталоге папку packages:

mkdir ~/packages
cd ~/packages
wget http://repo.yandex.ru/yandex-disk/yandex-disk_latest_amd64.deb
Собственный репозиторий может понадобится для уменьшения сетевого траффика, при массовом обновлении компьютеров или в случае, если по тем или иным причинам, интернет канал не доступен на машине.-9

Затем разместим скачанный пакет в репозитории командой:

sudo reprepro --ask-passphrase -b /srv/repo/localrepo/ -C main includedeb stable ~/packages/yandex-disk_latest_amd64.deb

После ввода фразы-пароля он будет размещен в репозитории

Собственный репозиторий может понадобится для уменьшения сетевого траффика, при массовом обновлении компьютеров или в случае, если по тем или иным причинам, интернет канал не доступен на машине.-10
Собственный репозиторий может понадобится для уменьшения сетевого траффика, при массовом обновлении компьютеров или в случае, если по тем или иным причинам, интернет канал не доступен на машине.-11

Для проверки, что наш репозиторий работает, пока, обратимся к нему локально. Добавим наш репозиторий в файл /etc/apt/sources.list, добавим открытый ключ репозитория в хранилище ключей для apt, обновим локальный кэш и попробуем установить пакет.

  • Добавим наш репозиторий в файл /etc/apt/sources.list:
echo "deb file:///srv/repo/localrepo localrepo main" | sudo tee --append /etc/apt/sources.list

Проверим, что ссылка на локальный репозиторий добавилась в конец файла /etc/apt/sources.list

Собственный репозиторий может понадобится для уменьшения сетевого траффика, при массовом обновлении компьютеров или в случае, если по тем или иным причинам, интернет канал не доступен на машине.-12
  • Добавим открытый ключ репозитория в хранилище ключей для apt:
sudo apt-key add /srv/repo/localrepo/repo_gpg.key
Собственный репозиторий может понадобится для уменьшения сетевого траффика, при массовом обновлении компьютеров или в случае, если по тем или иным причинам, интернет канал не доступен на машине.-13
  • Обновим локальный кэш пакетов
sudo apt update
Собственный репозиторий может понадобится для уменьшения сетевого траффика, при массовом обновлении компьютеров или в случае, если по тем или иным причинам, интернет канал не доступен на машине.-14
  • Произведем установку пакета yandex-disk_latest_amd64.deb
sudo apt install yandex-disk
Собственный репозиторий может понадобится для уменьшения сетевого траффика, при массовом обновлении компьютеров или в случае, если по тем или иным причинам, интернет канал не доступен на машине.-15

Мы видим, что пакет устанавливается из локального репозитория.

---------------------------------------------------------------------------------------------

Распространение пакетов с помощью Apache2

Если нам нужно, чтобы производить установку с нашего локального репозитория могли и другие компьютеры в сети, то нужно развернуть web-сервер Apache2. Установить Apache2 со всеми зависимостями нужно из репозитория main (тот что сертифицируется) а остальные репозитории закоментировать, чтобы из них не были установлены пакеты других версий. Это можент вызвать неработоспособность Apache2.

Оставляем только репозиторий main
Оставляем только репозиторий main
  • После чего обновляем индекс пакетов командой:
sudo apt update
Собственный репозиторий может понадобится для уменьшения сетевого траффика, при массовом обновлении компьютеров или в случае, если по тем или иным причинам, интернет канал не доступен на машине.-17
  • и производим установку apache2:
sudo apt install apache2
Собственный репозиторий может понадобится для уменьшения сетевого траффика, при массовом обновлении компьютеров или в случае, если по тем или иным причинам, интернет канал не доступен на машине.-18
  • После установки apache2 нужно в его конфигурационном файле отключить режим AstraMode:
sudo nano /etc/apache2/apache2.conf
Собственный репозиторий может понадобится для уменьшения сетевого траффика, при массовом обновлении компьютеров или в случае, если по тем или иным причинам, интернет канал не доступен на машине.-19
  • Затем необходимо перезапустить web-сервер и обязательно убедиться, что служба стартовала без ошибок:
sudo systemctl restart apache2.service
sudo systemctl status apache2.service
Собственный репозиторий может понадобится для уменьшения сетевого траффика, при массовом обновлении компьютеров или в случае, если по тем или иным причинам, интернет канал не доступен на машине.-20
  • Если репозиторий расположен вне каталога /var/www/html, как у нас, а, например, в каталоге /srv/repo, то нужно cоздать символьную ссылку на репозиторий:
sudo ln -s /srv/repo/localrepo /var/www/html/repo
Собственный репозиторий может понадобится для уменьшения сетевого траффика, при массовом обновлении компьютеров или в случае, если по тем или иным причинам, интернет канал не доступен на машине.-21
  • В /etc/apache2/sites-enabled/000-default.conf после строки DocumentRoot /var/www/html добавить:

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

sudo nano /etc/apache2/sites-enabled/000-default.conf
Собственный репозиторий может понадобится для уменьшения сетевого траффика, при массовом обновлении компьютеров или в случае, если по тем или иным причинам, интернет канал не доступен на машине.-22
  • Затем необходимо перезапустить web-сервер и обязательно убедиться, что служба стартовала без ошибок:
sudo systemctl restart apache2
sudo systemctl status apache2
Собственный репозиторий может понадобится для уменьшения сетевого траффика, при массовом обновлении компьютеров или в случае, если по тем или иным причинам, интернет канал не доступен на машине.-23

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

Дальнейшие действия нужно производить на хостах, с которых Вы хотите удаленно подключаться с репозиторию и устанавливать пакеты. Нужно сказать, что локальный (теперь уже сетевой) репозиторий мы устанавливали на компьютер с именем host1 и IP: 10.0.2.15. Дальнейшие настройки будем производить на хосте repo IP: 10.0.2.9.

  • Сначала нужно добавить открытый ключ (repo_gpg.key) репозитория в хранилище ключей для apt на компьютере repo IP: 10.0.2.9 как мы это делали на компьютере host1 когда разворачивали локальный репозиторий. Ключ лежит на компьютере host1 в папке /srv/repo/localrepo/.
Собственный репозиторий может понадобится для уменьшения сетевого траффика, при массовом обновлении компьютеров или в случае, если по тем или иным причинам, интернет канал не доступен на машине.-24
  • Перенесем ключ repo_gpg.key с компьютера host1 на компьютер repo в домашний каталог любым доступным Вам способом, например командой:
scp admin1@10.0.2.15:/srv/repo/localrepo/repo_gpg.key ~
Собственный репозиторий может понадобится для уменьшения сетевого траффика, при массовом обновлении компьютеров или в случае, если по тем или иным причинам, интернет канал не доступен на машине.-25
  • Теперь нужно добавить открытый ключ (repo_gpg.key) репозитория в хранилище ключей для apt на компьютере repo:
sudo apt-key add ~/repo_gpg.key
Собственный репозиторий может понадобится для уменьшения сетевого траффика, при массовом обновлении компьютеров или в случае, если по тем или иным причинам, интернет канал не доступен на машине.-26
  • Добавим на компьютере repo в файл /etc/apt/sources.list последнюю строчку - deb http://10.0.2.15/repo/ localrepo main. Таким образом мы добавили ссылку на сетевой репозиторий компьютера host1.
Собственный репозиторий может понадобится для уменьшения сетевого траффика, при массовом обновлении компьютеров или в случае, если по тем или иным причинам, интернет канал не доступен на машине.-27
  • Далее обновим индекс пакетов, командой:
sudo apt update
Собственный репозиторий может понадобится для уменьшения сетевого траффика, при массовом обновлении компьютеров или в случае, если по тем или иным причинам, интернет канал не доступен на машине.-28
  • Теперь мы можем установить пакет из сетевого репозитория командой:
sudo apt install yandex-disk
Собственный репозиторий может понадобится для уменьшения сетевого траффика, при массовом обновлении компьютеров или в случае, если по тем или иным причинам, интернет канал не доступен на машине.-29

Пакет успешно установлен из сетевого репозитория.