Dear lazyweb,
reprepro is a great tool. I hand
it some configuration and a bunch of packages, and it creates the
necessary directory structure, moves the packages to the right location,
and generates a (signed) Debian package repository. Obviously it would
be possible to all that reprepro does by hand—by calling things
like cp
and dpkg-scanpackages
and gpg
and other things by
hand—but it's easy to forget a step when doing so, and having a
tool that just does things for me is wonderful. The fact that it does so
only on request (i.e., when I know something has changed, rather than
"once every so often") is also quite useful.
At work, I currently need to maintain a bunch
of package repositories. The Debian package archives there are
maintained with reprepro
, but I currently maintain the RPM archives
pretty much by hand: create the correct directories, copy the right
files to the right places, run createrepo
over the correct directories
(and in the case of the OpenSUSE repository, also run gpg
), and a
bunch of other things specific to our local installation. As if to prove
my above point, apparently I forgot to do a few things there, meaning,
some of the RPM repositories didn't actually work correctly, and my
testing didn't catch on.
Which makes me wonder how RPM package repositories are usually
maintained. When one needs to maintain just a bunch of packages for a
number of servers, well, running createrepo
manually isn't too much of
a problem. When it gets beyond own systems, however, and when you need
to support multiple builds for multiple versions of multiple
distributions, having to maintain all those repositories by hand is
probably not the best idea.
So, dear lazyweb: how do large RPM repositories maintain state of the packages, the distributions they belong to, and similar things?
Please don't say "custom scripts"
Reprepro is way too complex and complicated. It was easier to write a custom script – https://www.mirbsd.org/cvs.cgi/contrib/hosted/tg/deb/mkdebidx.sh?rev=HEAD – for APT repositories.
For RPM repositories where just “createrepo .” is not enough, I use the OpenSuSE Buildservice.