LINUX.ORG.RU

Неявные зависимости в пакетах

 , ,


0

1

Об чём это я? Есть бинарник b и либы l1 и l2. Пусть a -> b означает a зависит от b.

На этапе сборки:

  • b -> l1
  • b -> l2
  • l1 -> l2

Пусть префикс p означает пакет содержащий конкретный исполняемый файл.

Какой вариант правильный и почему?

A:

  • pb -> pl1
  • pl1 -> pl2

B:

  • pb -> pl1
  • pb -> pl2
  • pl1 -> pl2

Интересует эталонно аргументированное, лаконичное и понятное даже для идиота, обоснование разрешения сей дилеммы. Дабы вырезать и на стеночку повесить.

★★★★★

Последнее исправление: pon4ik (всего исправлений: 1)

Очевидно же, B. Для зависимостей времени сборки. Аргументация: если для сборки L2 уже не надо будет L1, то мейнтейнер поимеет меньше головной боли по поиску пропавшего B.

ilammy ★★★
()
Ответ на: комментарий от ilammy

Эх, я надеялся, что есть какой то железный закон ома, подтверждающий что B это хорошо а A это фу фу фу.

pon4ik ★★★★★
() автор топика
Ответ на: комментарий от pon4ik

есть какой то железный закон ома

Для физики закон устанавливает природа, для учёта законы придумывают люди.

А аргументов могу ещё пару добавить

- возможно у l1 есть аналог с тем же API, не зависящий от l2.

- при статической линковке, если обновилось pl2, то надо обновить и pb

- при переносе на другую платформу может быть другая l2 с другим API (Xlib/WinAPI например), о котором l1 в курсе (через ifdef). l1 по прежнему работает, а b внезапно нет и неясно почему.

monk ★★★★★
()

Лучше писать фактические зависимости.

Если b использует l2 напрямую, то B. Тогда не потеряем l2, если l1 перестанет использовать l2.

Если b использует l2 только через l1, то A. Тогда не продолжим тащить l2, если l1 перестанет использовать l2.

anonymous
()
Ответ на: комментарий от pon4ik

Эх, я надеялся, что есть какой то железный закон ома, подтверждающий что B это хорошо а A это фу фу фу.

Сюда можно притянуть правило чёрного ящика: при формировании пакета для A библиотеки l1 и l2 являются чёрным ящиком. То есть наличие зависимости между ними - скрытая деталь реализации этих библиотек.

GPFault ★★★
()
Ответ на: комментарий от monk

Вариант с переносом под другую платформу - тоже отличный аргумент.

pon4ik ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.