[devel] Сборка новой версии после использования epoch

Ivan Zakharyaschev imz на altlinux.org
Пн Фев 10 04:28:39 MSK 2020


Hello!

On Sun, 9 Feb 2020, Alexey Tourbin wrote:

> On Sun, Feb 9, 2020 at 2:58 PM Mikhail Novosyolov
> <mikhailnov на altlinux.org> wrote:
> > > А можно поподробнее? Не знал, что эпоха налагает какие-то ограничения на
> > > работоспособность  provides/requires
> >
> > Можно запросто ошибиться, например, пакет p2 требует p1 >= текущая версия, пишем:
> >
> > Requires: p1 >= V-R
> >
> > когда как надо
> >
> > Requires: p1 >= E:V-R
> >
> > и никто не заметит, что даже более старая версия с поднятой эпохой попадает под ">=", а сборочница такое не поймает.

Не очень понятно по этому тексту, что Вы называете "как надо" и чего 
хочется. Но скорее всего в rpm действительно было реализовано более хитрое 
поведение, чем Вы предполагаете, про которое пишет at@ ниже, и для 
некоторых вариантов того, что хочется, оно действительно подойдёт.

> Племя младое незнакомое. Пишите без Epoch, должно работать как надо.

Попробуем на примере разобрать, чего может хотеться, и совпадает ли это с 
тем, про что Вы думали.

Например, у пакета p1 в истории были сборки:

A: 1-alt1
B: 1-alt2
C: 1-alt3
D: 2-alt1
E: 2-alt2
F: 2-alt3
G: 1:1-alt1
H: 1:1-alt2
I: 1:1-alt3
J: 1:2-alt1
K: 1:2-alt2
L: 1:2-alt3

Когда текущим релизом было E, написали где-то Requires: p1 >= 2-alt2.

Хочется ли, чтобы G, H, I могли удволетворить этот Requires?

Я так понял Ваши слова, что не хочется. (Правильно?) Т.е. не хочется, 
чтобы более старая версия (upstream-а) могла удволетворить эту 
завиисимость, пусть и с повышенной эпохой в пакете?


Но если сравнивать тройки E;V-R и написать Requires: p1 >= 0:2-alt2, то уж 
точно его удовлетворят все релизы после E:
E, F, G, H, I, J, K, L,
а это то, чего не хочется.

Хорошо бы уметь просить сравнивать только версию, без эпохи. Если это 
будет работать при написании Requires: p1 >= 2-alt2, то такую зависимость 
удволетворять будут только:
E, F, K, L.

Это ближе к тому, чего хочется?

Вопрос для всех на подумать:

Во всей этой истории я не очень понимаю, какое значение может играть номер 
релиза после версии. Мне кажется, что исключать J (1:2-alt1) из набора 
удовлетворяющих зависимость в последнем примере как-то странно, ведь этот 
alt2 может никак не быть связан с alt2 в E (2-alt2).

Не правильнее было бы считать, что есть два разумных формата Requires:

1) Requires: p1 >= 0:2-alt2 (уже разобран, удволетворяют все от E до L)

2) Requires: p1 >= 2

чтобы его удовлетворяли D, E, F, J, K, L?

А Requires: p1 >= 2-alt2 считать недостаточно ясным: что хотел автор? 
Может быть, раз он указал точный релиз, он хотел сравнения как в 1)?

Технически так написать возможно и оно будет, наверное, 
проинтерпретировано, как я уже сказал (удовлтетворять будут E, F, K, L). 
Но стоит ли рекомендовать эту неясную форму?

В свете записанных мной здесь соображений мне кажется, что рекомендовать 
лучше либо 1), либо 2), а Requires: p1 >= 2-alt2 не рекомендовать. Что 
думаете?

-- 
Best regards,
Ivan


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