Локальный репозиторий HTTP Yum на CentOS 7

Установка веб-сервера Nginx

Установка репозитория EPEL:

# yum install epel-release

Установка NGINX:

# yum install nginx

Добавление в автозагрузку и запуск NGINX:

# systemctl start nginx
# systemctl enable nginx
# systemctl status nginx

Открыть порты в фаерволе:

# firewall-cmd --zone=public --permanent --add-service=http
# firewall-cmd --zone=public --permanent --add-service=https
# firewall-cmd --reload

 

Создание локального репозитория Yum

Пакет для управления локальным репозиторием:

# yum install createrepo yum-utils

Создание папок для репозиториев:

# mkdir -p /var/www/html/repos/{base,centosplus,extras,updates}

Загрузить репозитории в папки:

# reposync -g -l -d -m --repoid=base --newest-only --download-metadata --download_path=/var/www/html/repos/
# reposync -g -l -d -m --repoid=centosplus --newest-only --download-metadata --download_path=/var/www/html/repos/
# reposync -g -l -d -m --repoid=extras --newest-only --download-metadata --download_path=/var/www/html/repos/
# reposync -g -l -d -m --repoid=updates --newest-only --download-metadata --download_path=/var/www/html/repos/

Описание флагов в приведенном выше выводе:

-g — позволяет удалить пакеты, которые не поддаются проверке подписи GPG после загрузки.
-l — поддержка плагина yum.
-d — позволяет удалить локальные пакеты, которые больше не присутствуют в репозитории.
-m — позволяет загружать файлы comps.xml.
—repoid — указывает идентификатор репозитория.
—newest-only — указывает reposync, получить последнюю версию для каждого пакета в репозитории.
—download-metadata — позволяет загружать все метаданные, отличающиеся от дефолтных.
—download_path — указывает путь для загрузки пакетов.

Создание новых репозиториев:

# createrepo -g comps.xml /var/www/html/repos/base/
# createrepo -g comps.xml /var/www/html/repos/centosplus/
# createrepo -g comps.xml /var/www/html/repos/extras/
# createrepo -g comps.xml /var/www/html/repos/updates/

Создать конфигурацию для NGINX:

# vim /etc/nginx/conf.d/repos.conf
server {
listen 80;
server_name repos.test.lab; #change test.lab to your real domain
root /var/www/html/repos;
location / {
index index.php index.html index.htm;
autoindex on; #enable listing of directory index
}
}

 

Создание задания Cron для синхронизации и создания репозиториев

Создать скрипт:

# vim /etc/cron.daily/update-localrepos

Сам скрипт:

#!/bin/bash
##specify all local repositories in a single variable
LOCAL_REPOS=”base centosplus extras updates”
##a loop to update repos one at a time
for REPO in ${LOCAL_REPOS}; do
reposync -g -l -d -m --repoid=$REPO --newest-only --download-metadata --download_path=/var/www/html/repos/
createrepo -g comps.xml /var/www/html/repos/$REPO/
done

Выставление разрешения для скрипта:

# chmod 755 /etc/cron.daily/update-localrepos

 

Настройка локального репозитория Yum на клиентских машинах

Создать файл настроек локального репозитория:

# vim /etc/yum.repos.d/local-repos.repo
[local-base]
name=CentOS Base
baseurl=http://repos.test.lab/base/
gpgcheck=0
enabled=1

[local-centosplus]
name=CentOS CentOSPlus
baseurl=http://repos.test.lab/centosplus/
gpgcheck=0
enabled=1

[local-extras]
name=CentOS Extras
baseurl=http://repos.test.lab/extras/
gpgcheck=0
enabled=1

[local-updates]
name=CentOS Updates
baseurl=http://repos.test.lab/updates/
gpgcheck=0
enabled=1

Просмотр списка доступных репозиториев:

# yum repolist

Источник: https://blog.sedicomm.com/2018/10/30/kak-nastroit-lokalnyj-repozitorij-http-yum-na-centos-7/

Дополнительно

Пример скрипта для крона:

#!/bin/bash
LOCAL_REPOS=$(ls /home/repo/c7)
for REPO in ${LOCAL_REPOS}; do
	echo "#########################################"
	echo "##########" $REPO
	echo "#########################################"
	reposync -l -d -m --repoid=$REPO --newest-only --download-metadata --download_path=/home/repo/c7/
	createrepo /home/repo/c7/$REPO/
	echo "#########################################"
done