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.