我在用着创建仓库创建我的 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 位整数,并且用于存储包大小的变量被损坏了。以下是我在寻找此问题的解决方案时发现的页面:
- https://bugzilla.redhat.com/show_bug.cgi?id=612409
- https://bugzilla.redhat.com/show_bug.cgi?id=679760
- https://bugzilla.redhat.com/show_bug.cgi?id=531243
- https://bugzilla.redhat.com/show_bug.cgi?id=625759
据称可以修复此问题的补丁:
我不确定如何应用该补丁,但希望最新版本的 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 源,构建它,并安装它,成功了!