Я хотел бы отразить следующие репозитории Yum / RPM на http://yum.puppetlabs.com/ :
Репозиторий Puppet содержит все когда-либо выпущенные продукты Puppet и довольно велик - около 8 ГБ. Мне нужно только отразить самые новые версии файлов.
Я попытался отразить репозиторий, используя reposync --newest-only
:
reposync --config=puppetlabs.repo.el6 --repoid=puppetlabs-products --repoid=puppetlabs-deps --newest-only --download_path=el/6 --quiet --downloadcomps
и это загружает самые новые пакеты, которые мне нужны. Однако reposync не создает автоматически обычную структуру каталогов (x86_64
, noarch
, SRPMS
и т. д.) и не отражает repodata.xml
. В результате мои клиенты yum получают такие ошибки:
[root@web1 ~]# yum --quiet install puppet
http://mirrors.example.org/pub/puppet/el/6/puppetlabs-deps/x86_64/repodata/repomd.xml: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found"
Trying other mirror.
Error: Cannot retrieve repository metadata (repomd.xml) for repository: puppetlabs-deps. Please verify its path and try again
[root@web1 ~]#
Есть ли способ программно отразить только новые файлы из репозитория Yum и следовать стандартной структуре каталогов репозитория?
reposync - единственный надежный способ сделать это. Вам нужно будет создать небольшой сценарий bash и использовать параметры reposync (-a), чтобы загрузить каждую архитектуру в отдельную папку, а затем запустить createrepo для создания метаданных.
Вот небольшой скрипт, который у меня есть (он работает на Ubuntu, но это не имеет значения, вы поняли):
#!/bin/bash
reposync -n -c /etc/yum/yum.conf -p /repos/centos6 -d -r base -r updates -r extras -r centosplus -r contrib
createrepo -g /repos/centos6/base/repodata/comps.xml /repos/centos6/base
createrepo /repos/centos6/updates
createrepo /repos/centos6/extras
createrepo /repos/centos6/centosplus
reposync -n -c /etc/yum/yum.conf -p /repos -d -r vmware -r home_xtreemfs
createrepo /repos/vmware
createrepo /repos/home_xtreemfs
reposync -n -c /etc/yum/yum.conf -p /repos/vz -d -r openvz-utils -r openvz-kernel-rhel6
createrepo /repos/vz/openvz-utils
createrepo /repos/vz/openvz-kernel-rhel6
reposync -n -c /etc/yum/yum.conf -p /repos/nginx -d -r nginx-stable -r nginx-mainline
createrepo /repos/nginx/nginx-stable
createrepo /repos/nginx/nginx-mainline
Вы можете сделать это с помощью мякоть и плагин дистрибьютора yum rpm.
При настройке нового репо, чтобы получить только одну версию каждого об / мин, установите значение keep_old_count параметр keep_old_count
retain_old_count
Count indicating how many old rpm versions to retain; by default it will
download all versions available.
Итак, что-то вроде:
$ pulp-admin rpm repo create \
--repo-id=rhel6-puppet-products \
--relative-url=rhel6-puppet-products \
--feed=http://yum.puppetlabs.com/el/6/products/ \
--retain-old-count 1
$ pulp-admin rpm repo sync run \
--repo-id=rhel6-puppet-products \
Должен добиться того, чего хочешь. Eсть Краткое руководство пользователя который должен дать вам представление о том, как это работает, если вы не пробовали это раньше.
Отредактируйте / etc / sysconfig / uln-yum-mirror Изменить ALL_PKGS = 0
0 -> загрузить только последнюю версию, 1 -> загрузить все версии
Другой простой вариант использования для того, что вы хотите сделать, - это выход в открытый космос, он прост в использовании, вы можете установить безопасное соединение между менеджером репо и вашими хостами, управлять тем, какие пакеты вы хотите синхронизировать и предоставлять своим хостам, планировать синхронизацию обновления и патчи и многие другие интересные функции.