Como posso espelhar um repositório yum mas baixar apenas as versões mais recentes de cada pacote?

8

Gostaria de espelhar os seguintes repositórios Yum / RPM no link :

O repositório Puppet contém todos os produtos Puppet já lançados e é bastante grande, com cerca de 8 GB. Eu só preciso espelhar as versões mais recentes dos arquivos.

Eu tentei espelhar o repositório usando reposync --newest-only :

reposync --config=puppetlabs.repo.el6 --repoid=puppetlabs-products --repoid=puppetlabs-deps --newest-only --download_path=el/6 --quiet --downloadcomps

e isso faz o download dos pacotes mais novos, como eu preciso. No entanto, o reposync não cria automaticamente a estrutura de diretório regular ( x86_64 , noarch , SRPMS , etc.) e não espelha repodata.xml . Como resultado, meus clientes yum recebem erros como este:

[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 ~]# 

Existe uma maneira de espelhar programaticamente apenas os novos arquivos de um repositório Yum e seguir a estrutura de diretórios padrão do repositório?

    
por Stefan Lasiewski 23.04.2014 / 06:08

4 respostas

7

O reposync é a única maneira confiável de fazer isso. Você precisará criar um pequeno script bash e usar os parâmetros de reposync (-a) para baixar cada arquitetura em uma pasta separada e, em seguida, executar createrepo para gerar os metadados.

Aqui está um pequeno script que eu tenho (ele está rodando no Ubuntu, mas não importa, você tem a idéia):

cat sync-repos

#!/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
    
por 23.04.2014 / 09:22
2

Você pode fazer isso com o polpa e o plugin do distribuidor yum rpm.

Ao configurar um novo repositório, para obter apenas uma versão de cada rpm, defina a propriedade reter_old_count parâmetro retain_old_count

retain_old_count
Count indicating how many old rpm versions to retain; by default it will 
download all versions available.

Então, algo ao longo da linha de:

$ 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 \

Deve conseguir o que você quer. Existe um guia de início rápido que deve dar uma ideia de como a coisa funciona, caso você não tenha tentado antes.

    
por 19.06.2017 / 09:17
0

Outra opção fácil de usar para o que você quer fazer, é a caminhada no espaço, é fácil de usar, você pode estabelecer uma conexão segura entre o gerenciador de repo e seus hosts, gerenciar quais pacotes você quer sincronizar e fornecer aos seus hosts, agendar as atualizações de sincronização e patches e muitos outros recursos interessantes.

    
por 23.04.2014 / 20:58
0

Edite / etc / sysconfig / uln-yum-mirror Alterar ALL_PKGS = 0

0 - > download mais recente apenas, 1 - > baixe todas as versões

    
por 19.06.2017 / 01:10