Что подразумевается под «зависит» и «предварительно зависит», а также от разницы между этими двумя типами требований к пакетам при установке чего-либо в Ubuntu?
источник
Что подразумевается под «зависит» и «предварительно зависит», а также от разницы между этими двумя типами требований к пакетам при установке чего-либо в Ubuntu?
Как взято из этой ссылки: https://www.debian.org/doc/debian-policy/#document-ch-relationships
Существует 5 типов зависимостей:
Значение пяти полей зависимости выглядит следующим образом:
Это объявляет абсолютную зависимость. Пакет не будет настроен, если все пакеты, перечисленные в его поле «Зависит», не были правильно настроены. Поле Depends должно использоваться, если зависимый пакет требуется для зависимого пакета, чтобы обеспечить значительный объем функциональности. Поле Depends также следует использовать, если сценарии postinst или prerm требуют, чтобы зависимый пакет был распакован или настроен для запуска. В случае настройки postinst зависимые пакеты будут сначала распакованы и настроены.
В случае действий prerm или других действий postinst зависимости пакета, как правило, будут по меньшей мере распакованы, но они могут быть только «наполовину установлены», если предыдущее обновление зависимости не удалось. Наконец, поле Depends должно использоваться, если зависимый пакет необходим сценарию postrm для полной очистки после удаления пакета. Нет никакой гарантии, что зависимости пакета будут доступны при запуске postrm, но более вероятно, что зависимый пакет будет доступен, если пакет объявит зависимость (особенно в случае удаления postrm). Сценарий postrm должен корректно пропускать действия, которые требуют зависимости, если эта зависимость недоступна.
Это поле похоже на Зависит, за исключением того, что оно также вынуждает dpkg завершить установку названных пакетов перед тем, как даже начать установку пакета, который объявляет предварительную зависимость. Это работает так, когда пакет, объявляющий предварительную зависимость, собирается при распаковке предварительная зависимость может быть удовлетворена, если зависимый пакет либо полностью сконфигурирован, либо даже если зависимый пакет (ы) только распакован или находится в состоянии «полуконфигурированный», при условии, что он был сконфигурирован правильно в некоторый момент в прошлом (и не удалены или частично удалены с тех пор).
В этом случае как ранее сконфигурированные, так и распакованные в настоящее время или «полуконфигурированные» версии должны удовлетворять любому условию версии в поле «Pre-Depends». Когда пакет, объявляющий предварительную зависимость, собирается быть настроенным, предварительная зависимость будет рассматриваться как обычная Зависит от зависимостей. Он будет считаться удовлетворенным, только если зависимый пакет был правильно настроен. Однако, в отличие от Depends, Pre-Depends не позволяет нарушать циклические зависимости. Если при попытке выполнить предварительную проверку возникает циклическая зависимость, установка будет прервана.
Предварительные зависимости также требуются, если сценарий preinst зависит от именованного пакета. Лучше всего избегать этой ситуации, если это возможно. Предварительные зависимости следует использовать с осторожностью, предпочтительно только в тех пакетах, преждевременное обновление или установка которых может помешать системе продолжить выполнение любого обновления, которое может выполняться.
Меньшая версия:
Термин «зависимость» может широко использоваться, чтобы охватить отношения «Зависит» и «Предварительно зависит» (а иногда даже другие, более слабые отношения), или он может использоваться узко как синоним «Зависит».
Разница между отношениями пакетов «Зависит» и «Предварительно зависит» состоит в том, что если X зависит от Y, то Y должен быть полностью сконфигурирован, прежде чем X будет сконфигурирован. (Конфигурация - это этап установки, при котором пакет, после того как его файлы распакованы в правильные места - т.е. после «установки»), вносит любые другие необходимые изменения, чтобы можно было фактически использовать предоставленное им программное обеспечение. Например, конфигурация HTTP-сервера может включать в себя наличие
www
пользователя с надлежащими способностями и/var/www
каталога с надлежащими разрешениями.) В отличие от этого, если X предварительно зависит от Y, тогда Y должен быть установлен и (обычно) полностью настроен до того, как X станет четным. установлен .См. Раздел 7.2 Руководства по политике Debian для получения более подробной информации. Я привожу здесь два наиболее важных раздела, но в этом разделе (и в главе 7 в целом) есть другая информация, которая помогает осветить, как работают зависимости.
источник