Свой репозиторий РОСА: различия между версиями
PastorDi (обсуждение | вклад) Новая страница: «==Введение и терминология== '''Эта статья описывает создание своего репозитория пакетов для операционных систем ROSA Fresh/Chrome версии 12 и новее.''' Репозиторий пакетов — хранилище RPM-файлов с дополнительными файлами-метаданными. Создать свой репозиторий мо...» |
PastorDi (обсуждение | вклад) Нет описания правки Метка: визуальный редактор отключён |
||
Строка 44: | Строка 44: | ||
sudo mkdir -p /srv/repo/x86_64 | sudo mkdir -p /srv/repo/x86_64 | ||
Положите RPM-пакеты в каталог | Положите RPM-пакеты в каталог /srv/repo/x86_64. | ||
Создайте/обновите метаданные репозитория: | Создайте/обновите метаданные репозитория: | ||
Строка 56: | Строка 56: | ||
==Локальный репозиторий== | ==Локальный репозиторий== | ||
Подключить каталог с репозиторием можно локально. Для этого создайте в папке /etc/yum.repos.d/ файл аналогичный тем что там уже имеются. Приведите строку с baseurl к такому виду: | |||
baseurl=/home/user/my-repo | |||
Должно получиться что-то вроде: | |||
<pre> | |||
[myrepo] | |||
name=My repo | |||
baseurl=/path/to/my/repo | |||
gpgcheck=0 | |||
enabled=1 | |||
</pre> | |||
==Доступ к репозиторию по сети== | |||
===Доступ к репозиторию по HTTP=== | |||
'''Настройка HTTP-сервера''' | |||
Для доступа к репозиторию по сети достаточно запустить любой веб-сервер, умеющий отдавать статические файлы. В качестве примера приведем настройку angie (наследник nginx). | |||
Установите веб-сервер angie: | |||
sudo dnf install angie | |||
Откройте конфигурационный файл на редактирование: | |||
sudo nano /etc/angie/angie.conf | |||
Приведете его к необходимому виду. Ниже приведен минимальный пример на основе конфигурационного файла по умолчанию. | |||
<pre> | |||
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; | |||
} | |||
} | |||
} | |||
<pre> | |||
Для выхода из консольного редактора nano нажмите Ctrl+X, Enter, Ctrl+O. | |||
Подробнее про настройку angie можно прочитать в документации. | |||
Запустите angie и добавьте его в автозапуск: | |||
sudo systemctl enable --now angie | |||
Попробуйте зайти по адресу [http://localhost:80 http://localhost:80] (или иной IP-адрес), должно отобразиться содержимое каталога /srv. | |||
'''Можно проще''' | |||
Если репозиторий не будет иметь особых нагрузок или нужен вам для тестирования, вместо полноценного веб сервера достаточно запустить в каталоге с репозиторием: | |||
python3 -m http.server | |||
или | |||
python2 -m SimpleHTTPServer | |||
По умолчанию такой сервер запускается с портом 8000, эту цифру необходимо добавить к адресу через двоеточие. | |||
baseurl=http://192.168.1.100:8000 | |||
'''Настройка HTTP-клиента''' | |||
В файлах /etc/yum.repos.d/* пропишите свой сервер в строки baseurl. Пример: | |||
было: | |||
baseurl=http://mirror.rosalab.ru/rosa/rosa$releasever/repository/x86_64/main/release/,http://mirror.yandex.ru/rosa/rosa$releasever/repository/x86_64/main/release/ | |||
стало: | |||
baseurl=http://192.168.1.100/repo/x86_64/rosa$releasever/repository/x86_64/main/release/ | |||
(где 192.168.1.100 — адрес сервера) | |||
Через запятую можно указать резервный репозиторий, который будет использоваться в случае недоступности первого. | |||
Проверьте работу репозиториев: | |||
sudo dnf makecache | |||
==Доступ к репозиторию по NFS== |
Версия от 11:28, 17 марта 2025
Введение и терминология
Эта статья описывает создание своего репозитория пакетов для операционных систем ROSA Fresh/Chrome версии 12 и новее.
Репозиторий пакетов — хранилище 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
Локальный репозиторий
Подключить каталог с репозиторием можно локально. Для этого создайте в папке /etc/yum.repos.d/ файл аналогичный тем что там уже имеются. Приведите строку с baseurl к такому виду:
baseurl=/home/user/my-repo
Должно получиться что-то вроде:
[myrepo] name=My repo baseurl=/path/to/my/repo gpgcheck=0 enabled=1
Доступ к репозиторию по сети
Доступ к репозиторию по HTTP
Настройка HTTP-сервера
Для доступа к репозиторию по сети достаточно запустить любой веб-сервер, умеющий отдавать статические файлы. В качестве примера приведем настройку angie (наследник nginx).
Установите веб-сервер angie:
sudo dnf install angie
Откройте конфигурационный файл на редактирование:
sudo nano /etc/angie/angie.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. Подробнее про настройку angie можно прочитать в документации. Запустите angie и добавьте его в автозапуск: sudo systemctl enable --now angie Попробуйте зайти по адресу http://localhost:80 (или иной IP-адрес), должно отобразиться содержимое каталога /srv. Можно проще Если репозиторий не будет иметь особых нагрузок или нужен вам для тестирования, вместо полноценного веб сервера достаточно запустить в каталоге с репозиторием: python3 -m http.server или python2 -m SimpleHTTPServer По умолчанию такой сервер запускается с портом 8000, эту цифру необходимо добавить к адресу через двоеточие. baseurl=http://192.168.1.100:8000 Настройка HTTP-клиента В файлах /etc/yum.repos.d/* пропишите свой сервер в строки baseurl. Пример: было: baseurl=http://mirror.rosalab.ru/rosa/rosa$releasever/repository/x86_64/main/release/,http://mirror.yandex.ru/rosa/rosa$releasever/repository/x86_64/main/release/ стало: baseurl=http://192.168.1.100/repo/x86_64/rosa$releasever/repository/x86_64/main/release/ (где 192.168.1.100 — адрес сервера) Через запятую можно указать резервный репозиторий, который будет использоваться в случае недоступности первого. Проверьте работу репозиториев: sudo dnf makecacheДоступ к репозиторию по NFS