Создание локального репозитория Linux-пакетов
В случае необходимости использования собственных скриптов автоматизации, рекомендуется настроить локальный репозиторий с rpm/deb-пакетами дистрибутива продукта.
Создание локального репозитория вручную
В данном разделе представлена инструкция по созданию репозитория вручную. Выполните следующие шаги:
- SberLinux, РЕД ОС, CentOS, Red Hat Enterprise Linux
- Astra Linux
- Альт СП
-
Установите пакет
createrepo
:sudo dnf install createrepo
-
Создайте директорию, где будут храниться rpm-пакеты:
sudo mkdir -p /components_repo/local_repo/RPMS.local/
-
Распакуйте архив
3rdparty.tar.gz
в каталог3rdparty
:tar -xzf <path_distrib>/3rdparty/3rdparty.tar.gz -C <path_distrib>/3rdparty
где
path_distrib
- полный путь до директории с распакованным дистрибутивом; -
Перенесите существующие в дистрибутиве rpm-пакеты:
find <path_distrib> -name "*.rpm" -exec sudo cp {} /components_repo/local_repo/RPMS.local/ \;
где
path_distrib
- полный путь до директории с распакованным дистрибутивом; -
Проинициализируйте репозиторий:
sudo createrepo /components_repo/local_repo/RPMS.local/
-
Создайте файл
local_repo.repo
в директории/etc/yum.repos.d/local_repo.repo
, с содержимым:[local_repo]
name=local_repo
baseurl=file:///components_repo/local_repo/RPMS.local/
gpgcheck=0
enabled=1
-
Создайте директорию, где будут храниться deb-пакеты:
sudo mkdir -p /components_repo/local_repo/DEB.local/
-
Распакуйте архив
3rdparty.tar.gz
в каталог3rdparty
:tar -xzf <path_distrib>/3rdparty/3rdparty.tar.gz -C <path_distrib>/3rdparty
где
path_distrib
- полный путь до директории с распакованным дистрибутивом; -
Перенесите существующие в дистрибутиве deb-пакеты:
find <path_distrib> -name "*.deb" -exec sudo cp {} /components_repo/local_repo/DEB.local/ \;
где
path_distrib
- полный путь до директории с распакованным дистрибутивом; -
Проинициализируйте репозиторий:
sudo cd /components_repo/local_repo/DEB.local/
sudo dpkg-scanpackages -m /components_repo/local_repo/DEB.local/ > /components_repo/local_repo/DEB.local/Packages
sudo cat /components_repo/local_repo/DEB.local/Packages | gzip -9 > /components_repo/local_repo/DEB.local/Packages.gz;
sudo cat /components_repo/local_repo/DEB.local/Packages | bzip2 -9 > /components_repo/local_repo/DEB.local/Packages.bz2; -
Сделайте копию deb-пакетов в кеше
apt-get
:sudo cp /components_repo/local_repo/DEB.local/* /var/cache/apt/archives/
-
Создайте файл
local_repo.list
:sudo echo -e "deb [trusted=yes] file:///components_repo/local_repo/DEB.local/ ./" > /etc/apt/sources.list.d/local_repo.list;
-
Обновите кеш пакетного менеджера
apt
:sudo apt update
-
Создайте директорию, где будут храниться rpm-пакеты:
sudo mkdir -p /components_repo/local_repo/RPMS.local/
-
Распакуйте архив
3rdparty.tar.gz
в каталог3rdparty
:tar -xzf <path_distrib>/3rdparty/3rdparty.tar.gz -C <path_distrib>/3rdparty
где
path_distrib
- полный путь до директории с распакованным дистрибутивом; -
Перенесите существующие в дистрибутиве rpm-пакеты:
find <path_distrib> -name "*.rpm" -exec sudo cp {} /components_repo/local_repo/RPMS.local/ \;
где
path_distrib
- полный путь до директории с распакованным дистрибутивом; -
Сделайте копию
.rpm
пакетов в кешеapt-get
:sudo cp /components_repo/local_repo/RPMS.local/*.rpm /var/cache/apt/archives/
-
Добавьте локальный репозиторий в пакетный менеджер:
sudo apt-repo add "rpm-dir file:/components_repo/ local_repo local";
Создание локального репоизтория с помощью Ansible-плейбука
При необходимости развернуть локальный репозиторий с помощью скриптов автоматизации, воспользуйтесь данной инструкцией.
При переходе к данному разделу предполагается, что пройдены следующие шаги:
- Распаковка дистрибутива новой версии СУБД Pangolin;
- Подготовка виртуального окружения;
- Установлены все необходимые для корректной работы Ansible-скриптов пакеты.
Для того чтобы развернуть локальный репозиторий с помощью скриптов автоматизации, необходимо выполнить следующее:
-
Перейдите в каталог с распакованным дистрибутивом, а затем в каталог
installer
:cd <path_to_distrib>/installer
где
path_to_distrib
- полный путь до распакованного дистрибутива. -
Заполните inventory-файл в зависимости от конфигурации СУБД, для которой планируется создание локального репозитория.
Файл
host.ini
заполняется в соответствии с шаблоном:- для standalone находится по пути:
inventories/standalone/hosts.ini
; - для cluster находится по пути:
inventories/cluster/hosts.ini
.
За более подробной информацией по корректному заполнению inventory-файла необходимо обратиться к разделу «Заполнение inventory-файлов» секции «Сценарий установки при помощи запуска Ansible плейбука».
- для standalone находится по пути:
-
Запустите Ansible плейбук установки локального репозитория следующей командой:
ansible-playbook -i <path_to_inventory_file> <path_to_installer>/playbook_create_pangolin_local_repo.yaml \
--extra-vars \
'custom_config=<path_to_installer>/templates/custom_config_sample.yml \
local_distr_path=<path_to_distrib>'Значения используемых в команде запуска сценария ключей:
-i
— путь к inventory-файлу;--extra-vars
— переменные, которые по приоритету важнее переменных из inventory.
Параметры для самостоятельного заполнения:
path_to_inventory_file
- полный путь до inventory-файла;path_to_installer
- полный путь до каталога installer;path_to_distrib
- полный путь до дистрибутива.
ПодсказкаПример заполненной команды:
ansible-playbook -i inventories/standalone/hosts.ini playbook_create_pangolin_local_repo.yaml \
--extra-vars \
'custom_config=/home/user/distributive/installer/templates/custom_config_sample.yml \
local_distr_path=/home/user/distributive'