This seems to be a bug in yum-utils, nothing that you're doing wrong.
I did a little crude "print" debugging between my RHEL 6 server, and My Fedora 14 workstation. Right after line 47 & 48 in /usr/bin/yumdownloader:
(n,v,r,e,a) = rpmUtils.miscutils.splitFilename(pkg.sourcerpm)
src = self.pkgSack.searchNevra(name=n, ver=v, rel=r, arch='src')
I added a couple of debugging statements and found the following:
From my RHEL 6 server (indented areas following "Debug:" being the areas of interest):
# yumdownloader --source gcc
Loaded plugins: presto, rhnplugin
Enabling epel-source repository
Debug:
pkg.sourcerpm = gcc-4.4.4-13.el6.src.rpm
n = gcc
v = 4.4.4
r = 13.el6
src = []
No source RPM found for gcc-4.4.4-13.el6.x86_64
Debug:
pkg.sourcerpm = gcc-4.4.5-6.el6.src.rpm
n = gcc
v = 4.4.5
r = 6.el6
src = []
No source RPM found for gcc-4.4.5-6.el6.x86_64
Nothing to download
From my Fedora 14 workstation:
# yumdownloader --source gcc
Loaded plugins: presto, refresh-packagekit
Enabling updates-source repository
Enabling rpmfusion-nonfree-updates-source repository
Enabling rpmfusion-nonfree-source repository
Enabling rpmfusion-free-updates-source repository
Enabling fedora-source repository
Enabling rpmfusion-free-source repository
Debug:
pkg.sourcerpm = gcc-4.5.1-4.fc14.src.rpm
n = gcc
v = 4.5.1
r = 4.fc14
src = [<YumAvailablePackageSqlite : gcc-4.5.1-4.fc14.src (0xe5e150)>]
gcc-4.5.1-4.fc14.src.rpm | 52 MB 00:38
So we know what src "should" be, based off of Fedora 14. /usr/bin/yumdownloader is identical between RHEL6, and Fedora 14 (md5sums match). However the yum-utils libraries that yumdownloader is leveraging are different between RHEL6 and Fedora 14, and that is likely the culprit.
I'd file a bug with Redhat against the yum-utils package.
Best Answer
This is an issue with CentOS: http://bugs.centos.org/view.php?id=1646
Assuming you're CentOS 5, create this file in /etc/yum.repos.d/CentOS-SRPMS.repo
rpm -ivh your.src.rpm
This assumes you have necessary directories, if you don't run
mkdir -p /usr/src/redhat/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
to create them.The file you'll usually want to edit is the spec file in /usr/src/redhat/SPECS/packagename.spec.
rpmbuild -bb /usr/src/redhat/SPECS/your.spec
to just build the RPMrpmbuild -ba /usr/src/redhat/SPECS/your.spec
to just build the RPM and an SRPMrpmbuild --rebuild your.src.rpm
If you need to build RPMs you should look in to using mock.