Как Yum сравнивает версии? - PullRequest
7 голосов
/ 08 июня 2010

У нас есть веб-приложение, которое мы упаковываем в 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 и почему мешают начальные нули?

1 Ответ

17 голосов
/ 24 июня 2010

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 говорит для вас?

...