Чтобы публиковать пакеты RPM с несколькими различными версиями какого-либо программного обеспечения, я ищу способ указать «номера» версий, которые считаются «обновлениями», и включить дифференцирование нескольких предварительных версий, таких как (в порядке ): «2.4.0 alpha 1», «2.4.0 alpha 2», «2.4.0 alpha 3», «2.4.0 beta 1», «2.4.0 beta 2», «2.4.0 релиз-кандидат», «2.4.0 final», «2.4.1», «2.4.2» и т. Д.
Основная проблема, с которой я столкнулся, заключается в том, что RPM считает, что «2.4.0» появляется раньше, чем «2.4.0.alpha1», поэтому я не могу просто добавить суффикс в конце номера окончательной версии.
Я мог бы попробовать "2.4.0.alpha1", "2.4.0.beta1", "2.4.0.final", который бы работал, за исключением "кандидата на выпуск", который будет рассматриваться позже, чем "2.4.0.final ».
Альтернативой, которую я рассмотрел, является использование раздела «epoch:» номера версии RPM (префикс epoch: рассматривается перед основным номером версии, так что «1: 2.4.0» на самом деле раньше, чем «2: 1.0.0») , Помещая метку времени в поле epoch :, все версии упорядочиваются в соответствии с ожидаемым RPM, потому что их версии увеличиваются во времени. Тем не менее, это происходит сбой, когда новые выпуски сделаны на нескольких основных версиях одновременно (например, 2.3.2 выпущен после 2.4.0, но их версия для RPM "20121003: 2.3.2" и "20120928: 2.4. 0 "и системы на 2.3.2 не могут быть" обновлены "до 2.4.0, потому что rpm видит его как более старую версию). В этом случае yum / zypper / etc отказывается обновляться до 2.4.0, поэтому моя проблема.
Какие номера версий можно использовать для достижения этой цели, и убедитесь, что RPM всегда считает номера версий в порядке. Или, если не номера версий, другой механизм в упаковке RPM?
Примечание 1: Я хотел бы оставить поле «Release:» в файле спецификации для его первоначального назначения (несколько выпусков пакетов, включая изменения пакетов, для одной и той же версии упакованного программного обеспечения).
Примечание 2: Это должно работать на текущих производственных версиях основных дистрибутивов, таких как RHEL / CentOS 6 и SLES 11. Но я заинтересован в решениях, которые тоже этого не делают, если только они не требуют перекомпиляции rpm!
Примечание 3: В Debian-подобных системах dpkg использует специальный номер в номере версии, который является символом «~» (тильда). Это заставляет dpkg считать суффикс как «отрицательный» порядок, так что «2.4.0 ~ что угодно» будет предшествовать «2.4.0». Затем нормальное упорядочение применяется после «~», поэтому «2.4.0 ~ alpha1» предшествует «2.4.0 ~ beta1», потому что «alpha» предшествует «beta» в алфавитном порядке. Я не обязательно хочу использовать ту же схему для пакетов RPM (я почти уверен, что такого эквивалента не существует), так что это просто FYI.