On Sat, Jan 26, 2013 at 11:07:10PM +0400, Sergey Vlasov wrote: [...] > 2. Зависимости, явно указанные в Requires, в которых указано реальное > имя подпакета, заменяются на строгие зависимости на этот подпакет > также без возможности отключения. > > (Теоретически возможна ситуация, когда имя реального подпакета > присутствует также в другом подпакете в Provides - не уверен, что > такое стоит вообще допускать; в этом случае, согласно приведённому > алгоритму, зависимость не будет заменяться на строгую.) Думаю что зависимость (как явную, так и неявную), в которой указано имя подпакета, надо заменять на строгую. Наличие в одном подпакете Provides имени другого подпакета ничего, кроме путаницы, не принесет. Такие странные Provides, кстати, легко диагностировать во время сборки. > Кстати, при анализе этих правил возник ещё один вопрос - что делать с > зависимостями, более сложными, чем "Requires: B" без указания версии, в > которых, тем не менее, указано реальное имя подпакета? Например, если > указано "Requires: B = %version" (без "-%release"), нужно ли менять эту > зависимость на строгую? А ведь возможен ещё вариант вида "Requires: B > >= x.y", для которого автоматическая замена на строгую зависимость > >выглядит ещё более сомнительно (ведь зачем-то эта нестрогая зависимость > >была записана именно в таком виде). Возможно, зависимости с условием, > >отличающимся от "=", также стоит оставлять в неизменном виде, что также > >даст возможность создания ограниченно нестрогих зависимостей - > >например, в пакете версии x.y.z может быть указано "Requires: B >= x.y" > >и "Conflicts: B >= x.(y+1)". Зависимости, в которых есть RPMSENSE_LESS или RPMSENSE_GREATER, лучше не трогать. Зависимости вида "B = %version" мне попадались, и это все были случаи забытого -%release. Думаю, что их надо усиливать так же, как и зависимости без версии. -- ldv