我正在尝试从 redhat 的服务器下载 SRPM。我已完成初始化存储库的第一步...
# 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
然后我执行了 yum update,并做了所有事情以确保我的 repo 数据库是最新的。然而,当我去下载源代码时...
# 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
我在 CentOS 5 上执行了同样的步骤,并且成功了。(虽然我使用的是 CentOS 存储库,而不是 RHEL 的存储库……但我还是感到困惑。我甚至手动通过 FTP 访问了他们的服务器,然后查看
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>
在我看来,它们看起来像是 SRPM……我做错了什么?
谢谢。
答案1
这似乎是 yum-utils 中的一个错误,并不是你做错了什么。
我在 RHEL 6 服务器和 Fedora 14 工作站之间进行了一些粗略的“打印”调试。就在 /usr/bin/yumdownloader 中的第 47 行和第 48 行之后:
(n,v,r,e,a) = rpmUtils.miscutils.splitFilename(pkg.sourcerpm)
src = self.pkgSack.searchNevra(name=n, ver=v, rel=r, arch='src')
我添加了一些调试语句并发现以下内容:
从我的 RHEL 6 服务器(“Debug:”后面的缩进区域是感兴趣的区域):
# 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
从我的 Fedora 14 工作站:
# 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
因此,根据 Fedora 14,我们知道 src“应该”是什么。/usr/bin/yumdownloader 在 RHEL6 和 Fedora 14 之间是相同的(md5sums 匹配)。但是 yumdownloader 所利用的 yum-utils 库在 RHEL6 和 Fedora 14 之间是不同的,这可能是罪魁祸首。
我会提交一份漏洞使用 Redhat 的 yum-utils 包。