web-dev-qa-db-fra.com

Comment puis-je refléter un référentiel de miam mais télécharger uniquement les dernières versions de chaque paquet?

Je voudrais refléter les référentiels Yum/Rpm suivants à http://yum.puppetlabs.com/ :

Le référentiel de marionnettes contient chaque produit de marionnettes jamais libéré et est assez grand à environ 8 Go. Je n'ai besoin que de refléter les dernières versions des fichiers.

J'ai essayé de refléter le référentiel à l'aide de reposync --newest-only:

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

et cela télécharge les derniers forfaits comme dont j'ai besoin. Cependant, REPOSYNC ne crée pas automatiquement la structure de répertoire régulière (x86_64, noarch, SRPMS, etc.) et ne mine pas repodata.xml. En conséquence, mes clients Yum reçoivent des erreurs comme ceci:

[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-t-il un moyen de refléter programmatiquement les nouveaux fichiers d'un repo Yum et de suivre la structure de répertoire de référentiel standard?

8
Stefan Lasiewski

reposync est le seul moyen fiable de le faire. Vous devrez créer un petit script Bash et utiliser des paramètres REPOSYNC (-A) pour télécharger chaque architecture dans un dossier séparé puis exécuter CreeeePo pour générer les métadonnées.

Voici un petit script que j'ai (il fonctionne sur Ubuntu mais peu importe, vous obtenez l'idée):

sync-repos de chat

#!/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
7
Florin Asăvoaie

Vous pouvez le faire avec Pulp et le plugin de distributeur RPM Yum RPM.

Lors de la conifguration d'une nouvelle répétition, pour obtenir une seule vérité de chaque tr/min, définissez le retint_old_count paramètre retenir_old_count

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

Alors quelque chose sur la ligne 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 \

Devrait atteindre ce que vous voulez. Il y a un Guide de démarrage rapide qui devrait vous donner une idée de la façon dont la chose fonctionne, au cas où vous ne l'auriez pas essayé auparavant.

3
Petter H

Une autre option facile à utiliser pour ce que vous voulez faire, est SpaceWalk, est facile à utiliser, vous pouvez établir une connexion sécurisée entre le gestionnaire REPO et vos hôtes, gérer quels packages que vous souhaitez synchroniser et fournir à vos hôtes, planifiez les synchronisations. mises à jour et patchs et beaucoup plus d'autres caractéristiques cool.

0
ravasquezgt

Modifier/etc/sysconfig/uln-miam-miroir Change All_pkgs = 0

0 -> Télécharger les derniers Derniers, 1 -> Télécharger toutes les versions

0
Mike Lee