Friedrich Clausen wrote:
Hello All,
At my $WORK we have lots of in-house applications used to support the services we offer to customers and we deploy these to servers as RPMS. This works well for us except we have thousands of obsolete packages in our Yum repository that need to be cleaned up. What I would like to achieve is to keep the latest version + the last 3 revisions of a package and delete the older revisions.
I was attempting to do this based on file timestamps but they are not reliable and in some cases packages were restored from backup in a way that did not preserve timestamps. So I am investigating writing a Perl script to do this but it is far from trivial due to the vast variety of version and release strings used. And there are certain situations in which the version strings are completely ambiguous (even to me) but, even if those have to be handled manually, then great time savings in cleaning up the rest automatically can still be achieved.
So, before I start (re)inventing this particular wheel, I thought I would check with the folks on this list since I cannot be the only person with this problem. Are there any ready to use tools available to trim down an overwheight RPM repository by deleting obsolete packages?
Many thanks!
Fred.
Hi,
I've also faced this problem, and you're right: relying on timestamps and/or sort order of the RPM filenames doesn't work.
The best tool I've found is "repomanage.py" from the yum-utils package available at: http://yum.baseurl.org/download/yum-utils/
Even though yum-utils claims it needs a newer version of yum than I usually have, I've run the repomanage.py script that's included without any problems.
My typical use has been:
repomanage.py -o RPMS | xargs rm -f
where 'RPMS' is a directory with a whole mess of RPMs. The repomanage.py script with '-o' as an argument spits out only obsoleted RPMs, so the above command removes all but the most recent version.
I see that there's a '--keep' option that *might* do what you're looking for (keeping the last 3 or 4 versions), but I have not used this option before.
-Greg