Свой репозиторий РОСА: различия между версиями
| PastorDi (обсуждение | вклад)  Новая страница: «==Введение и терминология==  '''Эта статья описывает создание своего репозитория пакетов для операционных систем ROSA Fresh/Chrome версии 12 и новее.'''  Репозиторий пакетов — хранилище RPM-файлов с дополнительными файлами-метаданными.  Создать свой репозиторий мо...» | PastorDi (обсуждение | вклад) Нет описания правки | ||
| (не показаны 3 промежуточные версии этого же участника) | |||
| Строка 1: | Строка 1: | ||
| Эта статья описывает создание своего репозитория пакетов для операционных систем ROSA Fresh/Chrome версии 12 и новее. | |||
| ==Введение и терминология== | ==Введение и терминология== | ||
| Репозиторий пакетов — хранилище RPM-файлов с дополнительными файлами-метаданными. | Репозиторий пакетов — хранилище RPM-файлов с дополнительными файлами-метаданными. | ||
| Строка 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=== | |||
| '''Настройка 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-клиента''' | |||
| Создайте каталог для монтирования NFS: | |||
|  sudo mkdir -p /mnt/nfs | |||
| Откройте на редактирование файл /etc/fstab: | |||
|  sudo nano /etc/fstab | |||
| Пропишите строку монтирования NFS-раздела: | |||
|  192.168.1.100:/srv /mnt/nfs nfs4 auto,_netdev,bg,nofail | |||
| (где вместо 192.168.1.100 укажите адрес сервера). | |||
| Выполните монтирование, что также проверит корректность записи в /etc/fstab: | |||
|  sudo mount /mnt/nfs | |||
| В файлах /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=/mnt/nfs/srv/repo/x86_64/rosa$releasever/repository/x86_64/main/release/ | |||
| Через запятую можно указать резервный репозиторий, который будет использоваться в случае недоступности первого. | |||
| Проверьте работу репозиториев: | |||
|  sudo dnf makecache | |||
| [[Категория:Сервер]] | |||
Текущая версия от 17:42, 23 апреля 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
Настройка 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-клиента
Создайте каталог для монтирования NFS:
sudo mkdir -p /mnt/nfs
Откройте на редактирование файл /etc/fstab:
sudo nano /etc/fstab
Пропишите строку монтирования NFS-раздела:
192.168.1.100:/srv /mnt/nfs nfs4 auto,_netdev,bg,nofail
(где вместо 192.168.1.100 укажите адрес сервера).
Выполните монтирование, что также проверит корректность записи в /etc/fstab:
sudo mount /mnt/nfs
В файлах /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=/mnt/nfs/srv/repo/x86_64/rosa$releasever/repository/x86_64/main/release/
Через запятую можно указать резервный репозиторий, который будет использоваться в случае недоступности первого.
Проверьте работу репозиториев:
sudo dnf makecache