Назад | Перейти на главную страницу

Как я могу отразить репозиторий yum, но загружать только новейшие версии каждого пакета?

Я хотел бы отразить следующие репозитории 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 -> загрузить все версии

Другой простой вариант использования для того, что вы хотите сделать, - это выход в открытый космос, он прост в использовании, вы можете установить безопасное соединение между менеджером репо и вашими хостами, управлять тем, какие пакеты вы хотите синхронизировать и предоставлять своим хостам, планировать синхронизацию обновления и патчи и многие другие интересные функции.