Свой репозиторий — различия между версиями
Строка 49: | Строка 49: | ||
Для обновления репозитория удалите и/или добавьте RPM-пакеты в каталоге /srv/repo/x86_64 и повторно запустите команду создания (обновления) метаданных. | Для обновления репозитория удалите и/или добавьте RPM-пакеты в каталоге /srv/repo/x86_64 и повторно запустите команду создания (обновления) метаданных. | ||
+ | |||
+ | Для проверки можно вывести список пакетов в этом репозитории пакетным менеджером: | ||
+ | dnf --repofrompath local,/srv/repo/x86_64 --disablerepo '*' --enablerepo local list | ||
= Доступ к репозиторию по сети = | = Доступ к репозиторию по сети = | ||
Строка 55: | Строка 58: | ||
== Доступ к репозиторию по HTTP == | == Доступ к репозиторию по HTTP == | ||
+ | |||
+ | === Настройка HTTP-сервера === | ||
Для доступа к репозиторию по сети достаточно запустить любой веб-сервер, умеющий отдавать статические файлы. В качестве примера приведем настройку nginx. | Для доступа к репозиторию по сети достаточно запустить любой веб-сервер, умеющий отдавать статические файлы. В качестве примера приведем настройку nginx. | ||
Строка 99: | Строка 104: | ||
[[File:Screenshot_20220628_193125.png||600px]] | [[File:Screenshot_20220628_193125.png||600px]] | ||
+ | === Настройка HTTP-клиента === | ||
+ | |||
+ | ХХХ | ||
+ | |||
+ | == Доступ к репозиторию по NFS == | ||
+ | |||
+ | === Настройка NFS-сервера === | ||
+ | |||
+ | Установите пакет утилит для NFS: | ||
+ | sudo dnf install nfs-utils | ||
+ | |||
+ | Откройте на редактирование файл с настройкой NFS-сервера: | ||
+ | sudo nano /etc/exports | ||
+ | |||
+ | Ниже приведен пример, в котором разрешается доступ только на чтение с IP-адресов 192.168.1.0-192.168.1.255 (задана [https://ru.wikipedia.org/wiki/Маска_подсети маска подсети]). | ||
+ | <pre> | ||
+ | /srv 192.168.1.1/255.255.255.0(ro,insecure,nohide,all_squash,anonuid=1000,anongid=1000,no_subtree_check) | ||
+ | </pre> | ||
+ | |||
+ | Запустите и добавьте в автозапуск службу NFS-сервера: | ||
+ | sudo systemctl enable --now nfs-server | ||
+ | |||
+ | === Настройка NFS-клиента === | ||
+ | |||
+ | ХХХ | ||
[[Категория:ROSA Server|ROSA Server]] | [[Категория:ROSA Server|ROSA Server]] |
Версия 19:43, 28 июня 2022
Содержание
Введение и терминология
Эта статья описывает создание своего репозитория пакетов для операционных систем ROSA Fresh/Chrome версии 12 и новее, а также Nickel, Cobalt и ROSA Virtualization.
Репозиторий пакетов — хранилище RPM-файлов с дополнительными файлами-метаданными.
Создать свой репозиторий может быть нужно для, например:
- размещения используемых сторонних пакетов для их установки и обновления из единого места,
- создания зеркала (точной копии) официальных репозиториев внутри локальной сети предприятия.
Приведенные команды следует выполнять от непривилегированного пользователя (не root); команды, которые необходимо выполнять с правами root, написаны через sudo.
Подразумевается, что сервером, на котором размещается репозиторий, является система на базе ROSA Fresh/Chrome 12 (rosa2021.1) и новее, однако его можно разместить и на других ОС.
Зеркалирование репозиториев
Процесс зеркалирования представляет из себя создание и поддерживание в актуальном состоянии точной копии репозиториев, размещенных на официальных серверах ROSA. В данном разделе описано, как сделать такую копию репозитория. Приведен наиболее простой способ, не обеспечивающий консистентность зеркала для внешнего потребителя в момент его обновления.
Для зеркалирования предлагается использовать утилиту rsync. Если она не установлена, выполните:
sudo dnf install rsync
Создайте каталоги для размещения копий репозиториев:
sudo mkdir -p /srv/mirror/x86_64 /srv/mirror/i686
Запустите синхронизацию. В приведенном ниже примере исключаются каталоги большого веса с debuginfo и SRPM, которые в большинстве случаев не нужны.
sudo rsync \ -av --progress \ --exclude SRPMS \ --exclude 'debug_*' --exclude ___REMOVED \ --exclude '*-rpm-backup' \ rsync://mirror.rosalab.ru/rosa/rosa2021.1/repository/{x86_64,i686} /srv/mirror/
Создание своего репозитория
Если имеются сторонние RPM-пакеты, то из них можно сделать репозиторий. Необходимо установить утилиту для создания метаданных репозитория:
sudo dnf install createrepo_c
Создайте каталог для репозитория:
sudo mkdir -p /srv/repo/x86_64
Положите RPM-пакеты в каталог /srv/repo/x86_64.
Создайте/обновите метаданные репозитория:
sudo createrepo_c /srv/repo/x86_64
Для обновления репозитория удалите и/или добавьте RPM-пакеты в каталоге /srv/repo/x86_64 и повторно запустите команду создания (обновления) метаданных.
Для проверки можно вывести список пакетов в этом репозитории пакетным менеджером:
dnf --repofrompath local,/srv/repo/x86_64 --disablerepo '*' --enablerepo local list
Доступ к репозиторию по сети
Рассмотрим несколько способов сделать удаленный доступ к репозиторию по сети.
Доступ к репозиторию по HTTP
Настройка HTTP-сервера
Для доступа к репозиторию по сети достаточно запустить любой веб-сервер, умеющий отдавать статические файлы. В качестве примера приведем настройку nginx.
Установите веб-сервер nginx:
sudo dnf install nginx
Откройте конфигурационный файл на редактирование:
sudo nano /etc/nginx/nginx.conf
Приведете его к необходимому виду. Ниже приведен минимальный пример на основе конфигурационного файла по умолчанию.
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; location / { root /srv; autoindex on; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
Для выхода из консольного редактора nano нажмите Ctrl+X, Enter, Ctrl+O.
Запустите nginx и добавьте его в автозапуска:
sudo systemctl enable --now nginx
Попробуйте зайти по адресу http://localhost:80 (или иной IP-адрес), должно отобразиться содержимое каталога /srv, ниже приведен скриншот-пример.
Настройка HTTP-клиента
ХХХ
Доступ к репозиторию по NFS
Настройка NFS-сервера
Установите пакет утилит для NFS:
sudo dnf install nfs-utils
Откройте на редактирование файл с настройкой NFS-сервера:
sudo nano /etc/exports
Ниже приведен пример, в котором разрешается доступ только на чтение с IP-адресов 192.168.1.0-192.168.1.255 (задана маска подсети).
/srv 192.168.1.1/255.255.255.0(ro,insecure,nohide,all_squash,anonuid=1000,anongid=1000,no_subtree_check)
Запустите и добавьте в автозапуск службу NFS-сервера:
sudo systemctl enable --now nfs-server
Настройка NFS-клиента
ХХХ