[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