yum создаем локальный репозиторий
Устанавливаем утилиты:
# yum install createrepo yum-utils
Смотрим подключенные репозитории:
# yum repolist Загружены модули: fastestmirror Loading mirror speeds from cached hostfile * base: centos.colocall.net * elrepo: mirrors.colocall.net * epel: mirrors.colocall.net * extras: centos.colocall.net * remi-safe: mirrors.bytes.ua * updates: centos.colocall.net * webtatic: uk.repo.webtatic.com Идентификатор репозитория репозиторий состояние base/7/x86_64 CentOS-7 - Base 10.019 ce_10.0 ownCloud Server Version 10.0 (CentOS_7) 2 elrepo ELRepo.org Community Enterprise Linux Repository - el7 114 epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 13.297 extras/7/x86_64 CentOS-7 - Extras 419 ius/x86_64 IUS for Enterprise Linux 7 - x86_64 589 remi-safe Safe Remi's RPM repository for Enterprise Linux 7 - x86_64 3.483 updates/7/x86_64 CentOS-7 - Updates 2.233 webtatic/x86_64 Webtatic Repository EL7 - x86_64 459 repolist: 30.615
Создаем директории для их локального хранения (всех или избранных):
# mkdir -p /var/www/html/repos/{base,ce_10.0,elrepo,epel,ius,remi-safe,webtatic,extras,updates}
Синхронизируем утилитой reposync:
# reposync -g -l -d -m --repoid=base --newest-only --download-metadata --download_path=/var/www/html/repos/ # reposync -g -l -d -m --repoid=remi-safe --newest-only --download-metadata --download_path=/var/www/html/repos/ # reposync -g -l -d -m --repoid=epel --newest-only --download-metadata --download_path=/var/www/html/repos/ # reposync -g -l -d -m --repoid=elrepo --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=ius --newest-only --download-metadata --download_path=/var/www/html/repos/ # reposync -g -l -d -m --repoid=ce_10.0 --newest-only --download-metadata --download_path=/var/www/html/repos/ # reposync -g -l -d -m --repoid=webtatic --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/extras # createrepo -g comps.xml /var/www/html/repos/ius # createrepo -g comps.xml /var/www/html/repos/epel # createrepo -g comps.xml /var/www/html/repos/ce_10.0 # createrepo -g comps.xml /var/www/html/repos/remi-safe # createrepo -g comps.xml /var/www/html/repos/elrepo # createrepo -g comps.xml /var/www/html/repos/webtatic # createrepo -g comps.xml /var/www/html/repos/updates
Создаем конфигурационный файл наших локальных репозиториев (не полный листинг):
# vi /etc/yum.repos.d/local-repos.repo [local-base] name=CentOS Base baseurl=http://repo.server.com/repos/base/ gpgcheck=0 enabled=1 [local-ius] name=CentOS IUS baseurl=http://repo.server.com/repos/extras/ gpgcheck=0 enabled=1 [local-extras] name=CentOS Extras baseurl=http://repo.server.com/repos/extras/ gpgcheck=0 enabled=1 [local-updates] name=CentOS Updates baseurl=http://repo.server.com/repos/updates/ gpgcheck=0 enabled=1
Для просмотра репозитория через web-браузер сменим пользователя на nginx:www-data:
# chown -R nginx:www-data /var/www/html/repos
Устанавливаем nginx/apache и прописываем блок конфигурации:
# vi /etc/nginx/sites-available/default ### REPOS #### location /repos { autoindex on; # включить автоматическое индексирование содержания (Включить просмотр каталогов/файлов autoindex_exact_size off; # Полезно, если вы хотите округлить размеры файлов в КБ, МБ, ГБ и т.д. (по умолчанию установлен в байтах) autoindex_localtime on; # показывать местное время создания файлов } ##############
# nginx -t # nginx -s reload
Проверяем набрав в браузере:
https://repo.server.com/repos/
На клиентских компьютерах CentOS нужно добавить локальные репозитории в конфигурацию:
# vim /etc/yum.repos.d/local-repos.repo
[local-base] name=CentOS Base baseurl=http://repo.server.com/repos/base/ gpgcheck=0 enabled=1 [local-ius] name=CentOS IUS baseurl=http://repo.server.com/repos/extras/ gpgcheck=0 enabled=1 [local-extras] name=CentOS Extras baseurl=http://repo.server.com/repos/extras/ gpgcheck=0 enabled=1 [local-updates] name=CentOS Updates baseurl=http://repo.server.com/repos/updates/ gpgcheck=0 enabled=1
Запустите представленную ниже команду, чтобы просмотреть локальные репозитории в списке доступных репозиториев YUM на клиентских компьютерах:
# yum repolist
Проверяем обновления, отключив все репозитории, кроме нашего нового [local-updates]:
# yum --disablerepo=* --enablerepo=local-update check-update
Настроим автоматическое обновление/синхронизацию локального репозитория:
# vi /etc/cron.daily/update-localrepos
#!/bin/bash LOCAL_REPOS="base ius extras updates" 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 +x /etc/cron.daily/update-localrepos