Локальный репозиторий 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
Для поиска: repo clone, repo copy, repository copy