[devel] сравнение версий в rpm

Alexey Tourbin =?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Сб Дек 20 12:52:40 MSK 2008


On Sat, Dec 20, 2008 at 12:00:53PM +0300, Alexey Tourbin wrote:
> Это нужно понимать так.  Версия есть строка; так что мы сравниваем
> версии, имя две строки: str1 и str2.  Строки разбиваются на сегменты.
> Далее сравнение версий происходит по сегментам, до первого неодинакового
> результата.
> 
> версия := сегмент сегмент*
> 
> При исчерпании сегментов сравнение происходит как в strcmp(3),
> если букву считать за сегмент (то есть подстрока меньше строки).
> 
> Сегмент может быть целочисленным или нецелочисленным.
> 
> целочисленный_сегмент := [0-9][0-9]*		(жадно)
> нецелочисленный_сегемент := [^0-9][^0-9]*	(жадно)
> 
> Сравнение двух целочисленных сегментов определено естественным образом.
> Сравнение целочисленного и нецелочисленного сегментов не определено (не
> надо спрашивать, какая версия больше, "RC" или "33").  Сравнение двух
> нецелочисленных семгенов либо определено, либо не определено.
> 
> Сравнение двух нецелочисленных сегментов по умолчанию не определено.

Здесь есть конфликт двух правил.
Рассмотрим версии "1.RC" и "1.33".

"1.RC" = 1 ".RC"
"1.33" = 1 "." 33

Конфилкт появляется при сравнении второго сегмента.  С одной стороны,
подстрока меньше строки, то есть ".RC" > ".".  С другой стороны,
сравнение нецелочисленных сегментов по умолчанию не определено.

Кажается, rpm-4.0 и rpm-4.4 по-разному сравнивают эти версии.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 197 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20081220/fe8a2645/attachment.bin>


Подробная информация о списке рассылки Devel