Назад | Перейти на главную страницу

В репозитории Yum указан неправильный размер для пакетов размером более 2 ГБ

я использую createrepo для создания репозитория yum. Однако, похоже, в нем есть ошибка - один из моих пакетов размером 11 ГБ неправильно отображается как 956 МБ, когда я пытаюсь выполнить yum install bigpackage с клиентской машины. При попытке загрузить большой пакет для установки 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, чтобы отображать правильный размер в репо? Есть ли альтернативные инструменты для создания репозиториев yum, которые поддерживают пакеты размером более 2 ГБ?

Как оказывается, патч, который я нашел не для CreateRepo и не имеет ничего общего с Ubuntu, на самом деле он предназначен для yum-metadata-parser (в CentOS этот пакет называется yum-metadata-parser.x86_64 1.1.2-16.el6). Он пытается проанализировать число большого размера, которое правильно записано в XML-файле репозитория, и терпит неудачу, потому что это не 64-битный целочисленный столбец в sqlite db, который использует yum.

Применение патча к источнику yum-metadata-parser, его сборка и установка сработали!