Как yum сравнивает версии?

У нас есть веб-приложение, которое мы упаковываем в RPM. У нас проблема с полем версии RPM.

Допустим, мы установили наш rpm: foo-2.1.0.007

007 - наш номер сборки.

Теперь, когда мы пытаемся установить более новую версию rpm, foo-2.1.0.010, yum сообщает: «Обновлять нечего».

Когда я переделал RPM, но удалил ведущие нули, проблема была решена:

foo-2.1.0.7

foo-2.1.0.10

Согласно по этой ссылке каждый сегмент версии сравнивается как целое число, но практика показывает обратное.

Итак, мой вопрос: каков алгоритм сравнения версий для RPM и почему ведущие нули мешают?


person Asaf Mesika    schedule 08.06.2010    source источник


Ответы (1)


Yum просто просит rpm сравнить их. Вы можете установить rpmdevtools, а затем использовать:

% rpmdev-vercmp foo-2.1.0.010 foo-2.1.0.007
0:foo-2.1.0.010 is newer

... чего и следовало ожидать. Если у вас нет эпохи в пакете 007, я не уверен, почему вы получаете другой ответ. Какая у вас версия rpm? Что вам говорит vercmp?

person James Antill    schedule 23.06.2010
comment
Понятия не имею, как, но теперь все работает, как ожидалось, то есть 010 установлен поверх 007. Странно. - person Asaf Mesika; 24.06.2010
comment
Спасибо, это позволило мне понять, что RPM действительно считает, что 0.901 новее, чем 0.92, но не 0.920. Очевидно, сравнивает целые числа с точками, а не десятичные числа. - person theory; 29.08.2012
comment
Архитектура (noarch, x86_64 и т. Д.), Кажется, играет некоторую роль в решении Yum относительно того, является ли версия более новой или нет, но не RPM. - person kbolino; 13.02.2020