我正在尝试在 RHEL / CentOS 机器上升级 curl。我在许多存储库中找到了看似合适的源包。(即http://mirror.centos.org/centos/6/os/SRPMS/Packages/curl-7.19.7-16.el6.src.rpm)
当尝试使用从源包创建 rpm 时rpmbuild
,我得到以下输出;
# rpmbuild --rebuild curl-7.19.7-16.el6.src.rpm
Installing curl-7.19.7-16.el6.src.rpm
warning: InstallSourcePackage: Header V3 RSA/SHA256 signature: NOKEY, key ID c105b9de
warning: user mockbuild does not exist - using root
warning: group mockbuild does not exist - using root
error: unpacking of archive failed on file /usr/src/redhat/SOURCES/curl-7.15.3-multilib.patch;4e984633: cpio: MD5 sum mismatch
error: curl-7.19.7-16.el6.src.rpm cannot be installed
问题似乎是该源代码适用于使用 SHA-256 的 Fedora。有一个错误记录这里其中有注释表明有一种方法可以绕过 md5 校验和。但是,它不是很详细。
有没有办法安装这个包?
答案1
我假设您想将 CentOS5 curl 升级到 CentOS6 版本。我认为问题不在于 SHA256 签名,而在于 CentOS5 不支持的 XZ/LZMA 压缩。
你需要:
- 在备用计算机或虚拟机上运行 CentOS6 — LiveCD 就足够了
- 在 CentOS6 上:
yum install rpm-build yum-utils
- 在 CentOS6 上:
yumdownloader --source curl
- 在 CentOS6 上:
rpm -i curl-*.src.rpm
- 在 CentOS6 上:
scp -pr ~/rpmbuild your_username@your_centos_ip:
- 在 CentOS5 上:
rpmbuild -ba ~/rpmbuild/SPECS/curl.spec
答案2
如果你没有 CentOS 6 可用,请@Tometzky建议,这将起作用:
cd ~/rpmbuild/SOURCES
rpm2cpio ~/path/to/your/curl-*.src.rpm | cpio -idmv
mv *.spec ~/rpmbuild/SPECS/
rpmbuild -ba ~/rpmbuild/SPECS/curl.spec
不幸的是,在 CentOS 5 上从 CentOS 6 重建 curl 涉及到比第一个障碍更多的复杂性,包括:
- 在 CentOS 5 上从 CentOS 6 重建 libssh2
- 安装 lzma
- 我还没弄清楚的其他事情
答案3
尝试:
rpmbuild --rebuild --define "_source_filedigest_algorithm md5" --define "_binary_filedigest_algorithm md5" curl-7.19.7-16.el6.src.rpm
如果这不起作用,您可能需要提取 RPM,然后重建它:
rpm -i --nomd5 curl-7.19.7-16.el6.src.rpm
rpmbuild -ba --define "_source_filedigest_algorithm md5" --define "_binary_filedigest_algorithm md5" /usr/src/redhat/SPECS/curl.spec
我在最后一条命令中可能输入了错误的 spec 文件名。
答案4
我认为你正在谈论这个错误:https://bugzilla.redhat.com/show_bug.cgi?id=490613#c15
仅供参考:包含具有反向移植强哈希 + xz 有效负载支持的 rpm 的 SRPM 可从 Fedora 基础设施存储库获得:
http://infrastructure.fedoraproject.org/builder-rpms/SRPMS/
我已经在我的构建器上使用了很长时间,它们运行良好。如果它们被正式纳入 RHEL5,那就太好了。
你想要 rpm-4.6.0-4.0.notting.1.el5
src.rpm 或二进制文件位于:
http://infrastructure.fedoraproject.org/builder-rpms/SRPMS/
http://infrastructure.fedoraproject.org/builder-rpms/i386/
http://infrastructure.fedoraproject.org/builder-rpms/x86_64/