我如何镜像yum版本库,但只下载每个软件包的最新版本?

我想在http://yum.puppetlabs.com/上镜像以下Yum / RPM存储库:

  • 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/

Puppet存储库包含了每个发布的Puppet产品,并且大小约为8GB。 我只需要镜像最新版本的文件。

我试图使用reposync --newest-only镜像存储库:

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

这下载了我需要的最新软件包。 但是,reposync不会自动创build常规目录结构( x86_64noarchSRPMS等),也不会镜像repodata.xml 。 结果,我的百胜客户得到这样的错误:

 [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是唯一可靠的方法来做到这一点。 您将需要创build一个小的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 

你可以用纸浆和百胜分销商插件来做到这一点。

当configuration一个新的repo时,为了只获得每个rpm的一个verison ,设置retain_old_count的retain_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 \ 

应该达到你想要的。 有一个快速入门指南 ,应该给你一个如何工作的想法,如果你还没有尝试过。

另一个简单的select是使用太空行走,易于使用,可以在回购pipe理器和主机之间build立安全连接,pipe理要同步的主机和提供给主机的程序包,安排同步更新和补丁,还有更多其他很酷的function。

编辑/ etc / sysconfig / uln-yum-mirror更改ALL_PKGS = 0

0 – >下载最新版本,1 – >下载所有版本