[devel] Рано поднимать до error

Aleksey Avdeev solo на solin.spb.ru
Вс Янв 27 00:38:31 MSK 2013


26.01.2013 23:07, Sergey Vlasov пишет:
> On Sat, Jan 26, 2013 at 09:36:17PM +0400, Aleksey Avdeev wrote:
> [...]
>>   Если дело в сокращении set-versions (через замену их на строгие
>> зависимости), так может и ограничиться ими (простановкой строгих
>> зависимостей вместо внутрипакетных set-versions) и не стоит остальное с
>> плеча рубить?
>>
>>   Как на счёт варианта:
>>
>> 1. Проставлять строгие зависимости вместо нестрогих с внутрипакетными
>> set-versions, без возможности отключения данного механизма.
>>
>> 2. Во всех остальных случаях, по умолчанию менять внутрипакетные
>> нестрогие зависимости на строгие, предусмотреть ручку для отключения
>> таких замен.
> 
> В соседней ветке предложен похожий вариант:
> 
>   http://lists.altlinux.org/pipermail/devel/2013-January/196540.html
> 
> | Другими словами, предлагается модифицировать алгоритм, чтобы он работал
> | следующим образом: подпакет A исходного пакета S автоматически получает
> | строгую зависимость от подпакета B исходного пакета S, если выполнено любое
> | из следующих условий:
> | - у A есть зависимость от B;
> | - у A есть такая зависимость X с атрибутом RPMSENSE_FIND_REQUIRES, что B
> |   является единственным подпакетом S, удовлетворяющим эту зависимость X.
> 
> Можно переформулировать это описание таким образом:
> 
>  1. Зависимости, найденные через find-requires (это могут быть не
>     только set-versions, а и, например, perl(foo.pm)), которые
>     удовлетворяются ровно одним подпакетом собираемого пакета,
>     заменяются на строгие зависимости на этот подпакет без возможности
>     отключения.

  Для меня допустимо, если явно указанные файловые зависимости
("Requires: <file>" при наличии "Provides: <file>" в соответствующем
подпакете) под этот пункт не попадают.

> 
>     (Интересно, встречаются ли реально ситуации, когда зависимость,
>     найденная find-requires, удовлетворяется более чем одним
>     подпакетом.)
> 
>  2. Зависимости, явно указанные в Requires, в которых указано реальное
>     имя подпакета, заменяются на строгие зависимости на этот подпакет
>     также без возможности отключения.
> 
>     (Теоретически возможна ситуация, когда имя реального подпакета
>     присутствует также в другом подпакете в Provides - не уверен, что
>     такое стоит вообще допускать; в этом случае, согласно приведённому
>     алгоритму, зависимость не будет заменяться на строгую.)
> 
>  3. Зависимости, явно указанные в Requires, но с именем, не
>     совпадающим ни с одним реальным именем подпакета, оставляются без
>     изменения, даже если эта зависимость удовлетворяется ровно одним
>     подпакетом.
> 
>     Это правило позволяет не сломать пакеты типа xboard, в которых
>     присутствует подпакет, допускающий замену на альтернативные
>     варианты (в случае xboard в том же пакете собирается подпакет с
>     темой по умолчанию, но вместо него может быть установлен любой
>     другой пакет с темой, при этом минимум одна тема должна
>     присутствовать).  Аналогичная ситуация и в пакете osec (с той лишь
>     разницей, что в данный момент в Сизифе нет ни одного пакета,
>     которым можно было бы заменить osec-mailreport, но указанные в
>     osec-cronjob зависимости позволяют создать такой альтернативный
>     пакет).
> 
>     Также под этот пункт могут попасть ошибочно оставленные
>     зависимости на устаревшее имя подпакета, если производилось
>     переименование подпакета с проставлением соответствующих Provides
>     и Obsoletes, но такую ситуацию можно обнаружить по наличию
>     Obsoletes с этим именем (если же ещё и Obsoletes забыли, тут уже
>     ничего не поможет, одна надежда на багрепорты по поводу
>     неработающего обновления).
> 
> При использовании этих правил, если требуется обеспечить нестрогую
> зависимость между подпакетами, собираемыми из одного исходного пакета,
> такую зависимость нужно будет реализовывать через промежуточный
> виртуальный пакет (при этом могут быть наложены ограничения на версию
> этого виртуального пакета, отражающие особенности собираемого ПО -
> например, можно требовать совпадения major-версии или какого-то
> внутреннего номера версии API).
> 
> Кстати, при анализе этих правил возник ещё один вопрос - что делать с
> зависимостями, более сложными, чем "Requires: B" без указания версии,
> в которых, тем не менее, указано реальное имя подпакета?  Например,
> если указано "Requires: B = %version" (без "-%release"), нужно ли
> менять эту зависимость на строгую?  А ведь возможен ещё вариант вида
> "Requires: B >= x.y", для которого автоматическая замена на строгую
> зависимость выглядит ещё более сомнительно (ведь зачем-то эта
> нестрогая зависимость была записана именно в таком виде).  Возможно,
> зависимости с условием, отличающимся от "=", также стоит оставлять в
> неизменном виде, что также даст возможность создания ограниченно
> нестрогих зависимостей - например, в пакете версии x.y.z может быть
> указано "Requires: B >= x.y" и "Conflicts: B >= x.(y+1)".

  У меня в качестве типовых нестрогих внутрипакетных зависимостей как
правило используются: "Requires: B >= x.y", "Conflicts: С <= x.y" (где B
и C как реальные так и виртуальные подпакеты) и "Requires: <file>" (как
правило при этом есть подпекет предоставляющий соответствующий
"Provides: <file>"). Принудительная замена такого рода внутрипакетных
зависимостей, без возможностей её отключения -- большая засада, для меня...

PS: Пересборка apache2-2.2.22-alt15 средствами
librpmbuild-4.0.4-alt100.63 (на people) показала что не так страшен
чёрт, как его малюют: результат вполне приемлемый, на первый взгляд.
(Более детально разбтраться в понедельник буду.)

-- 

С уважением. Алексей.


----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : signature.asc
Тип     : application/pgp-signature
Размер  : 900 байтов
Описание: OpenPGP digital signature
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20130127/4c1e0974/attachment-0001.bin>


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