Yum repo 列出的大于 2GB 的软件包大小不正确

Yum repo 列出的大于 2GB 的软件包大小不正确

我在用着创建仓库创建我的 yum 存储库。但是,它似乎有一个错误 - 当我尝试yum install bigpackage从客户端计算机执行此操作时,我的一个软件包(大小为 11GB)被错误地显示为只有 956 MB。当尝试下载大型软件包进行安装时,yum 出现以下错误:

Error Downloading Packages:
  bigpackage-0.1-53952.x86_64: failed to retrieve bigpackage-0.1-53952.x86_64.rpm from myrepo-prod-source
error was [Errno 14] Downloaded more than max size for http://myrepo/yum/repo/centos//bigpackage-0.1-53952.x86_64.rpm: 1073004544 > 975454259

这显然是因为我的仓库中列出的包大小不对。所以我在 Google 上搜索解决方案。

这似乎是 createrepo 的一个错误。它错误地在内部转换了一些 64 位整数,并且用于存储包大小的变量被损坏了。以下是我在寻找此问题的解决方案时发现的页面:

据称可以修复此问题的补丁:

http://yum.baseurl.org/gitweb?p=yum-metadata-parser.git;a=commitdiff;h=2d8499cf272bf9027d015fae0d344998debfae69

我不确定如何应用该补丁,但希望最新版本的 createrepo 包含该修复程序,我下载并升级到 createrepo 的最新开发版本 0.9.8。

但这仍然不起作用- 大软件包的大小仍然列出不正确。哎呀!有没有关于如何修复 createrepo 以在 repo 中显示正确大小的想法?有没有其他工具可以创建支持大于 2GB 的软件包的 yum repos?

答案1

事实证明,我发现的补丁不是用于 CreateRepo 的,与 Ubuntu 无关,它实际上是用于yum-metadata-parser(在 CentOS 上,此包称为 yum-metadata-parser.x86_64 1.1.2-16.el6)。它尝试解析存储库 xml 文件中正确写入的大尺寸数字,但失败了,因为它不是 yum 使用的 sqlite db 中的 64 位整数列。

将补丁应用到 yum-metadata-parser 源,构建它,并安装它,成功了!

相关内容