Redhat – RHEL6 SRPMs Are Not Found by “yumdownloader”

redhatrpmyum

I am trying to download SRPMs from redhat from what of their servers. I went through step one of initializing the repository…

# cat /etc/yum.repos.d/rhel-source.repo 
[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=ftp://ftp.redhat.com/pub/redhat/linux/enterprise/$releasever/en/os/SRPMS/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

Then I did a yum update, and everything to make sure my repo database was up to date. When I go to download the source, however…

# yumdownloader --source gcc
Loaded plugins: product-id, refresh-packagekit, rhnplugin
No source RPM found for gcc-4.4.4-13.el6.x86_64
No source RPM found for gcc-4.4.5-6.el6.x86_64
Nothing to download

I went through the same steps on CentOS 5 and it works. (Though, I'm using the CentOS repository, not RHEL's… Still, I'm puzzled. I even FTP'ed their server manually and looked

ftp> ls gcc*
227 Entering Passive Mode (209,132,183,61,19,97).
150 Here comes the directory listing.
-rw-r--r--    4 ftp      ftp      52214716 Aug 17  2010 gcc-4.4.4-13.el6.src.rpm
-rw-r--r--    5 ftp      ftp      52113813 Apr 21 20:28 gcc-4.4.5-6.el6.src.rpm
226 Directory send OK.
ftp>

Those look like SRPMs to me… what am I doing wrong?

Thanks.

Best Answer

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.