[devel] прописывать requires или полагаться на автомат

Alexey Tourbin =?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Вт Апр 22 19:18:07 MSD 2008


On Tue, Apr 22, 2008 at 06:41:31PM +0400, Alexey Tourbin wrote:
> On Tue, Apr 22, 2008 at 12:19:16PM +0300, Artem Zolochevskiy wrote:
> > Есть пакет (docs-admin_basics) в post/postun которого вызывется:
> > /usr/bin/docs_mklinks
> > Сам же этот скрипт (/usr/bin/docs_mklinks) содержится в пакете docs-utils.
> > 
> > Вопрос:
> > Нужно ли в спек docs-admin_basics прописывать руками зависимость на 
> > docs-utils, или же достаточно того, что при сборке пакета автоматически 
> > проставляется зависимость на /usr/bin/docs_mklinks ?
> 
> Достаточно автоматической зависимости.  Более того, автоматическая
> зависимость является более точной (в предположении, что репозитарий
> содержит всего один пакет с /usr/bin/docs_mklinks).

Это предположение можно ослабить.  Можно допустить, что в репозитарии
есть несколько пакетов с /usr/bin/docs_mklinks; но при этом они должны
обладать базовой совместимостью.  Идея состоит в том, что имя
зависимости является "контрактом", то есть означает определённые вещи.
Имя зависимости /usr/bin/docs_mklinks означает, что можно запустить эту
программу и получить определённый результат.  Автоматическая файловая
(виртуальная) зависимость, в таком случае, всё ещё является более точной
(и предпочтительной), чем зависимость на пакет docs-utils.

Пример: программа /usr/bin/mutt, пакеты mutt и mutt1.5.
Зависимость /usr/bin/mutt предпочтительна, зависимость на mutt крайне
нежелательна.

Дело в том, что любая зависимость должна быть обоснована.  Зависимость
на docs-utils будет иметь _нетривиальное_ обоснование, что этот пакет
нужен потому, что _мы думаем_, что в нём содержится программа
/usr/bin/docs_mklinks, которую мы хотим запустить.  Индюк думал...
Явная же зависимость на /usr/bin/docs_mklinks выгодно отличается тем,
что она является "самообоснованной", и тут думать уже не надо.

Теперь рассмотрим худший случай, когда в репозитарии есть несколько
unrelated пакетов, содержащих несовместимые программы /usr/bin/docs_mklinks.
Но это уже проблема самого репозитария, а не отдельных пакетов и
автоматических зависимостей.  Нельзя положить в репозитарий всё что
угодно и ожидать потом, что всё будет хорошо работать.  Всё что угодно
хорошо работать не будет (автоматические виртуальные зависимости не
отменяют требований к целостности репозитария).  Принцип недопущения
"всего что угодно" называется falsifiability.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 197 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20080422/cc50e9a0/attachment-0002.bin>


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