Gostaria de espelhar os seguintes repositórios Yum / RPM em http://yum.puppetlabs.com/ :
- http://yum.puppetlabs.com/el/6/products/
- http://yum.puppetlabs.com/el/6/dependencies/
- http://yum.puppetlabs.com/el/5/products
- http://yum.puppetlabs.com/el/5/dependencies/
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 baixa os pacotes mais novos que eu preciso. No entanto, reposync não cria automaticamente a estrutura de diretórios normal ( x86_64
, noarch
, SRPMS
, etc.) e não faz espelho repodata.xml
. Como resultado, meus clientes yum obtêm 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 do repositório padrão?
Respostas:
reposync é a única maneira confiável de fazer isso. Você precisará criar um pequeno script bash e usar 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á sendo executado no Ubuntu, mas não importa, você entendeu):
repositórios de sincronização de gato
fonte
reposync
insiste em anexarrepoid
à estrutura de diretórios. Isso significa um comando comoreposync --config=puppetlabs.repo.el6 --repoid=puppetlabs-products --newest-only --arch=x86_64' creates a bizarrely named directory like 'x86_64/puppetlabs-products
quando eu simplesmente preciso de 'x86_64 /'.Você pode fazer isso com o pulp e o plug-in do distribuidor yum rpm.
Ao configurar um novo repositório, para obter apenas uma versão de cada rpm, configure o parâmetro ret_old_count ret_old_count
Então, algo ao longo da linha de:
Deve conseguir o que deseja. Existe um guia de início rápido que deve lhe dar uma idéia de como a coisa funciona, caso você não tenha tentado antes.
fonte
Outra opção fácil de usar para o que você quer fazer é o spacewalk, é fácil de usar, você pode estabelecer uma conexão segura entre o gerente de repo e seus hosts, gerenciar quais pacotes você deseja sincronizar e fornecer aos hosts, agendar as sincronizações atualizações e patches e muitos outros recursos interessantes.
fonte
Edite / etc / sysconfig / uln-yum-mirror Altere ALL_PKGS = 0
0 -> baixar apenas o mais recente, 1 -> baixar todas as versões
fonte