[devel] Циклическая зависимость.

Alexey Tourbin at на altlinux.ru
Пн Мар 21 07:45:13 UTC 2011


On Mon, Mar 21, 2011 at 09:50:59AM +0300, Sergey Y. Afonin wrote:
> On Sunday, March 20, 2011, Alexey Tourbin wrote:
> 
> > Если так подумать, то при установке mysql-workbench кроме основного
> > бинарного пакета и пакета с данными будут установлены ещё какие-то
> > дополнительные пакеты - например, MySQL-client.  Тогда возможна ситуация,
> > когда mysql-workbench удаляется, а бесхозный MySQL-client остаётся.
> > Может, тогда стоит добавить в MySQL-client циклическую зависимость
> > на mysql-workbench?
> 
> С одной стороны, оно резонно, но, с другой, lib* может использовать
> кто-то ещё, а этот "data" однозначно нужен только для основного пакета.

Но если удалён последний клиент библиотеки, то библиотека однозначно тоже
не нужна.

Короче, мораль такая: не надо пытаться за счёт зависимостей решать
проблему синхронного удаления неиспользуемых компонентов.  Эта задача
не решается за счет зависимостей в общем случае, а частный случай
bin<->data не делает погоды.

Это задача решается на верхнем уровне package management.  Пакет может
быть либо указан/выбран пользователем напрямую, либо выбран автоматически
по зависимостям.  В дальнейшем к этим двум категорями пакетов применяются
разные правила обновления/удаления.  Автоматически выбранные пакеты можно
автоматически удалять, если они не требуются другими пакетами (фактически
собирать мусор), а выбранные пользователем - нельзя.  Это реализовано
где-то в synaptic или aptitude.

> > Если совсем давно - если во времена бранча 4.0 подпакет с данными был
> > уже отпилен - то конфликт можно вообще удалить.  Иначе оставить в
> > процитированном варианте.
> 
> Тогда в ALT его ещё не было. В бранч 5.1 и Сизиф он попал чуть меньше 
> года назад, Requires есть в основном пакете в виде "Requires: %name-data",
> в mysql-workbench-gpl-data в репозитариях Requires совсем отсутствует.
> Я так понимаю, что в data, в этом случае, вообще ничего менять не надо.

В основном пакете:
Requires: %name-data = %version

В -data подпакете:
Conflicts: %name < %version


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