[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