[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