Getting source RPMs with yumdownloader

June 11, 2007

In theory, the yumdownloader program that is part of the yum-utils package will download the source RPMs if you want it to. In practice I spent a long time having it not work on my Fedora Core 6 machines, until I read yet another bland bit of advice telling me to use it and decided to figure out just what was going on.

(The problem was quite frustrating, because yumdownloader never complained; it just silently did nothing.)

It turns out that the trick is that you need to specifically enable the source repositories; these are not enabled by default. At least in Fedora Core 6, the names of these repositories are core-source, updates-source, and extras-source (for the core, core updates, and Fedora Extras respectively). Unless you already know where an RPM package comes from, you might as well enable all three.

And I have to praise the Fedora Wiki's guide on how to rebuild kernel RPMs. Not only is it a useful guide to building kernel RPMs, but without it I wouldn't have been pushed into figuring out what was up with yumdownloader.

(I do suggest using quilt to put together patches instead of their more brute-force approach.)

Sidebar: why yumdownloader is silent when this happens

Yumdownloader's silence in this case is probably a bug, and it's sort of an interesting one. The normal process complains if a command line argument cannot be mapped into one or more RPMs. However, when you ask for source RPMs there is an additional step to map the RPMs found for each command line argument into their source RPM, and this mapping code doesn't check to see if it wound up with any source RPMs.

(I suspect that the yumdownloader developers have the source RPM repositories enabled by default.)

Written on 11 June 2007.
« How NFS is unreliable for file-based locking
'Argument list too long' is a misleading message »

Page tools: View Source, Add Comment.
Search:
Login: Password:
Atom Syndication: Recent Comments.

Last modified: Mon Jun 11 23:09:16 2007
This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.