Циркуляр определяет зависимости между пакетами Debian - PullRequest
0 голосов
/ 02 мая 2018

У меня сложилось впечатление, что отношения depends / rdepends между пакетами Debian составляют направленный ациклический граф (DAG).

Однако я только что натолкнулся на эти симметричные rdepends зависимости между двумя пакетами:

apt-cache rdepends libwww-perl        # includes libsoap-lite-perl
apt-cache rdepends libsoap-lite-perl  # includes libwww-perl

Оба пакета установлены с stretch/main. Это функция или ошибка?

1 Ответ

0 голосов
/ 02 мая 2018

В основном это функция.

Невозможно иметь ациклический граф:

  • огромное количество пакетов, и нет инструментов для совета по проблеме зависимостей.

  • Есть действительно циклические зависимости. Создавая дистрибутив с нуля, вы это заметите, например, теперь libc требует некоторых внешних программ (например, resolver), а для таких программ требуется libc . Одним из способов решения этой проблемы было использование essential пакетов: они создают ядро ​​пакетов, которые могут зависеть друг от друга.

  • удобно разделить библиотеку на части программ и двоичные файлы на файлы, не зависящие от архитектуры (особенно если объем данных огромен). Это может привести к циклической зависимости: обе части должны быть установлены вместе.

  • Изменения отношения пакетов и изменений пакетов. Так что когда-то какая-то часть перемещается в другой пакет. Циклические зависимости скрывают внутренний ход провайдера API.

  • и т.д.

Потому что Debian - это не просто «дистрибутив», а множество «дистрибутивов» (например, «contrib» и «non-free», но также «security», «backport», «экспериментальный» и т. Д.) [В виде пакетов .gz lists], кроме того, иногда мы включаем также внешние (не Debian) пакеты, требующие, чтобы ациклический граф зависимостей мог быть трудным или просто блокировал apt , и никто этого не хочет. Поэтому я думаю, что циклические зависимости все еще являются «особенностью».

Примечание: иногда циклы просто "необязательны". Один из обязательных пакетов является циклическим, но не все возможности. «виртуальные пакеты» усложняют задачу.

...