
Создавать зеркало буду на примере ОС RedOs 8
В качестве веб-сервера будем использовать nginx.
Предварительная подготовка сервера
Действия выполняются от имени пользователя root:
su -
- Установите необходимые пакеты:
dnf install nginx createrepo yum-utils
Настройка web-службы NGINX:
- Создайте конфигурацию для репозитория:
vi /etc/nginx/conf.d/repo.conf
- Добавьте в файл следующий блок:
server {
listen 80;
server_name localhost;
root /var/www/html;
location / {
autoindex on; # Включить листинг каталогов
index index.html;
}
}
- Проверьте конфигурацию:
nginx -t
- Если требуется SSI (Server Side Includes), добавьте в секцию
location /
:
ssi on;
- Добавьте в автозагрузку и запустите nginx:
systemctl enable nginx --now
1- Перезагрузка конфига:
systemctl reload nginx
В подразделе Настройка на клиентском ПК приводится информация о настройке клиентского ПК — с изменением адреса в файлах .repo.
Можно добавить запись repo.red-soft.ru = в ваш DNS-сервер. В этом случае менять конфигурацию на клиенте не потребуется.
ВАЖНО!
Для создания локальных репозиториев Base, Updates, Kernels и Kernels6 необходимо предварительно убедиться, что у вас есть необходимый объем требуемого свободного дискового пространства.
Для получения информации о необходимом объеме для какого-либо определенного репозитория выполните команду:
dnf repoinfo <название_репозитория> | grep "Размер репозитория"
Чтобы узнать более точный размер всех подключенных репозиториев, можно воспользоваться командой:
dnf repoinfo | grep "Repo-size" | awk -F ':' '{size = $2; sub(/M$/, "", size); if (index($2, "M") > 0) total += size / 1024; else total += size} END {printf "Общий вес \033[41mвсех подключенных\033[0m репозиториев: %.2f G\n", total}'
Зеркало для репозитория РЕД ОС 7.3 стандартной редакции
Создайте запись для репозитория в каталоге /etc/yum.repos.d/.
nano /etc/yum.repos.d/red.os.8.repo
с содержимым:
RedOS-Standard.repo
[base]
name=RedOS Standard - Base 8.0
baseurl=https://repo1.red-soft.ru/redos/8.0/$basearch/os,https://mirror.yandex.ru/redos/8.0/$basearch/os,http://repo.red-soft.ru/redos/8.0/$basearch/os
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-RED-SOFT
Для размещения репозиториев можно использовать каталог, отличный от /var/www/html/, создав для него символическую ссылку и установив правильный контекст SELinux (для файловых систем с поддержкой Extended File Attributes — ext2, ext3, ext4, jfs, xfs, btrfs):
ln -s /mnt/repo/ /var/www/html/
semanage fcontext -a -t httpd_sys_content_t "/mnt/repo(/.*)?"
restorecon -Rv /mnt/repo/
Здесь в качестве примера используется каталог /mnt/repo/. Обратите внимание, что для пользователя или группы apache файлы и каталоги в директории репозитория должны быть доступны для чтения. Управление правами доступа подробно описано в статье «Настройка прав доступа к файлам и каталогам». Восстановление прав и контекста SELinux командой restorecon необходимо произвести после создания репозитория (createrepo).
Создайте каталог для репозиториев:
mkdir -p /var/www/html/repo/red-os-8
cd /var/www/html/repo/red-os-8
Запустите процедуру создания зеркала репозитория-источника. Начнется загрузка пакетов репозитория. Обратите внимание, что на машине должен быть доступ к сети Интернет.
reposync --repoid=base --downloadcomps --download-metadata
В окне терминала выполните следующую команду:
createrepo -v /var/www/html/repo/red-os-8/base -g comps.xml
createrepo -v /var/www/html/repo/luxms-bi11/repodata
Восстановите контекст SELinux каталога, в котором находится репозиторий. Например, при расположении репозитория в каталоге /var/www/html/repo/ необходимо выполнить:
restorecon -Rv /var/www/html/repo/
Команда restorecon не следует по символическим ссылкам, поэтому необходимо указывать прямой путь до каталога с репозиторием.
Добавим правило в Firewalld
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
Репозиторий для РЕД ОС 8 стандартной редакции готов.
Для репозитория updates и kernels команду createrepo запустите без параметра -g comps.xml.
Еще потребовалось добавить пару пакетов — clickhouse, репозиторий большой, поэтому добавим только нужные пакеты в один из созданных
Пошаговая инструкция:
- Поместим пакет
clickhouse-server-24.8.14.39.x86_64.rpm
в директорию репозитория:
sudo cp test1.rpm /var/www/html/repo/luxms-thirdparty/Packages/ # Если папки Packages нет — создайте её
- Обновим метаданные репозитория:
sudo createrepo --update /var/www/html/repo/luxms-thirdparty/
Пояснение:
Флаг --update
добавляет только новый пакет, не пересоздавая репозиторий полностью.
- Проверим доступность пакета через веб:
Откройте в браузере:
http://IP_СЕРВЕРА/repo/luxms-thirdparty/Packages/clickhouse-server-24.8.14.39.x86_64.rpm
- На клиентских машинах обновим кеш репозиториев:
sudo dnf clean all
sudo dnf makecache
- Убедитесь, что пакет виден в репозитории:
sudo dnf list clickhouse-server-24.8.14.39
RedOS.repo
[base]
name=RedOS Cert - Base
baseurl=http://192.168.0.1/repo/redos8.0/base8.0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-RED-SOFT
В иных репозиториях, которые находятся по пути /etc/yum.repos.d/, измените значение параметра enabled на enabled=0 (если такого значения в файлах нет, впишите его самостоятельно), чтобы не возникало конфликтов.
ВАЖНО!
Настройка обращения к локальным репозиториям Base и Updates может быть осуществлена двумя способами:
созданием собственных файлов репозиториев;
редактированием файлов репозиториев, используемых по умолчанию.
При создании собственных файлов локальных репозиториев не рекомендуется удалять имеющиеся файлы репозиториев по умолчанию (RedOS-Base.repo, RedOS-Updates.repo) – их необходимо отключить, изменив значение параметра enabled=1 на enabled=0! Иначе при обновлении системы данные файлы вновь появятся в каталоге /etc/yum.repos.d/.
В случае если были изменены и настроены файлы репозиториев по умолчанию (RedOS-Base.repo, RedOS-Updates.repo), после обновления системы в каталоге /etc/yum.repos.d/ будут сохранены новые файлы расширением .rpmnew – они являются резервной копией стандартных конфигурационных файлов и не повлияют на текущую настройку локальных репозиториев, удалять их не рекомендуется.
Обновите информацию о репозиториях, для этого выполните следующие команды:
dnf makecache
dnf update
Добавить комментарий