Our software stack requires some specific versions of RPM packages. Unfortunately some of these packages become deprecated over time and get removed from their repos since their maintainers don't keep archives (EPEL, Percona, ...).

It is a problem in configuration management. We want to make sure we provision a new machine with the same software the old ones have (we use Puppet).

I guess the standard solution is hosting these packages in a private YUM repo we set up for our own. This is beneficial for packages we need to compile from source, too.

My question is: do you know of any "proxy tool" to a Yum repo server so that every agent downloads packages from there and the repo server downloads packages from the external, original sources then caches them locally? (In case they disappear from the original repo)

An analogy from Java world would be Archiva, which is a Maven repo server, but also can be used to proxy requests to public repos and cache them locally.

OS: Centos 6.4

Thank you

  • I know this comment is off-topic, but if you really need to maintain or use old version you should consider to store the sources. You'll be able to compile it later whatever your distribution is. – Vinz Dec 4 '13 at 17:08
  • That's a good point. Still, I think source code is much more accessible of open source projects over time than the compiled packages (apparently). The goal is that once a package was successfully installed on one machine we should be able to repeat the same installation in the future no matter what. – gphilip Dec 4 '13 at 17:12

I think mrepo is a great tool for this. You point it at an upstream repository and it will mirror locally. The configuration option lftp-cleanup = no, rhnget-cleanup = no, etc, will prevent it from deleting packages from your local mirror when they are deleted upstream.

Dag's mrepo


Download the specific RPM versions you want. Create your own local repository containing only those packages you want. Point your clients to your new local repository. Stop using the public ones that do not behave how you want.

To get started:

yum -y install createrepo && man createrepo
  • Thank you! This is the plan, all I wanted is automate "Download the specific RPM versions you want." so that we don't need to do this every time we add a new package. – gphilip Dec 4 '13 at 19:02
  • This is what I'm using to download all the packages I have installed sudo yumdownloader --destdir=./ $(rpm -qa --qf "%{NAME} ") It should allow me to (re)build systems while offline – Sean Burlington Mar 3 '15 at 21:10

Spacewalk can handle this. (Though note that with EL7 it will be superseded by Pulp and perhaps Katello.)

  • Good suggestion, thanks! My problem is that (as I mention above) we use Puppet for provisioning and I don't want another conflicting product. Spacewalk just seem to be way more than what I want. – gphilip Dec 4 '13 at 19:07
  • You are not required to provision your systems with Spacewalk, as far as I can tell. – Michael Hampton Dec 4 '13 at 19:09
  • Right, I just wanted to avoid shooting a fly with a cannonball. If there's no better suggestion coming soon I'm gonna accept your solution. Thank you! – gphilip Dec 4 '13 at 19:32

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.