Чим відрізняється залежність від попередньої залежності?


Відповіді:


20

За цим посиланням: https://www.debian.org/doc/debian-policy/#document-ch-relationships

Існує 5 типів залежностей:

Значення п'яти полів залежності полягає в наступному:

Залежить

  • Це оголошує абсолютну залежність. Пакет не буде налаштований, якщо всі пакунки, перелічені в полі "Залежить", не були правильно налаштовані. Поле "залежно" має використовуватися, якщо залежний від пакета потрібен залежному пакету для забезпечення значної кількості функціональних можливостей. Поле "залежно" також слід використовувати, якщо для поштових скриптів після поштових повідомлень або передмірних програм потрібно розпакувати або налаштувати для того, щоб запустити. У випадку постінститутної конфігурації пакунки, що залежать від цього, будуть розпаковані та налаштовані спочатку.

  • У випадку передчасних або інших постінхронних залежностей залежність від пакету, як правило, буде щонайменше розпакована, але вони можуть бути лише "Напівінстальовані", якщо попереднє оновлення залежності не вдалося. Нарешті, поле Depends слід використовувати, якщо залежний від пакета потрібен сценарій postrm для повного очищення після видалення пакета. Немає гарантії, що залежність від пакета буде доступна, коли виконується пострм, але більш залежна залежність від пакету, якщо пакет оголошує залежність (особливо у випадку видалення після поштового зв'язку). Сценарій postrm повинен витончено пропускати дії, які потребують залежності, якщо ця залежність недоступна.

Рекомендує

  • Це оголошує сильну, але не абсолютну залежність. У полі "Рекомендує" слід вказати пакети, які були б знайдені разом з цим у всіх, крім незвичних установках.

Запропонує

  • Це використовується для того, щоб заявити, що один пакет може бути кориснішим з одним або кількома іншими. Використання цього поля повідомляє системі упаковки та користувачеві, що перераховані пакети пов'язані з цим і, можливо, можуть підвищити його корисність, але встановити цей без них цілком розумно.

Підсилює

  • Це поле схоже на Sugessts, але працює у зворотному напрямку. Він використовується для того, щоб заявити, що пакет може підвищити функціональність іншого пакету.

Попередньо залежить

  • Це поле схоже на залежне, за винятком того, що воно також змушує dpkg завершити встановлення пакетів, названих до того, як навіть розпочати установку пакета, який оголошує попередню залежність. Це працює так, коли пакет, який оголошує попередню залежність, збирається Якщо розпаковано, залежність може бути задоволена, якщо залежний від пакета або повністю налаштований, або навіть якщо залежні пакети (-и) розпаковані лише в режимі "Напівконфігурований", за умови, що вони були налаштовані правильно в якийсь момент минулого (і з тих пір не видаляється або частково видаляється).

  • У цьому випадку як попередньо налаштована, так і наразі розпакована або "Напівконфігурована" версії повинні відповідати будь-якій версії положення в полі Попередньо залежно. Коли пакет, який оголошує попередню залежність, буде налаштований, попередня залежність буде розглядатися як нормальна залежна. Він вважатиметься задоволеним лише в тому випадку, якщо залежний від пакета був правильно налаштований. Однак, на відміну від Depends, Pre-Depends не дозволяє порушувати кругові залежності. Якщо під час спроби вшанувати функцію Pre-Independent виникає кругова залежність, установка буде перервана.

  • Попередня залежність також потрібна, якщо сценарій preinst залежить від названого пакету. Найкраще уникати такої ситуації, якщо це можливо. Попередньо залежно слід використовувати ощадливо, бажано лише пакети, передчасне оновлення чи встановлення яких перешкоджатиме можливості системи продовжувати будь-яке оновлення, яке може тривати.

Менша версія:

  • І залежить, і попередньо залежитьзгадайте про залежності, які потрібен пакет перед встановленням, але попередньо залежать від встановлення та конфігурації пакетів залежностей, перш ніж починати з пакета, який потребує залежностей. dpkg навіть не розпакує основний пакет, поки не будуть розроблені всі попередні пакети. Залежно від цього, не важливо порядок пакетів залежностей та основного. З попереднім залежністю це враховується, а також перевірка, чи налаштовані та встановлені пакети попередніх залежностей чи ні. Без цього основний пакет навіть не буде розпакований, налаштований чи встановлений. Ви повинні мати встановлені залежності перед початком роботи з основним пакетом. Якщо ні, то їх потрібно спочатку завантажити / налаштувати / встановити перед тим, як продовжити.

2
Зауважте, що існують також антизалежності, такі як конфлікти та розриви. І будувати залежності, такі як Build-залежно.
Alexis Wilke

3

Термін "залежність" може широко використовуватися для охоплення відносин "залежно" та "попередньо залежно" (а іноді навіть інших, слабкіших стосунків), або він може використовуватися вузько як синонім "залежно".

Різниця між пакетами "залежно" та "попередньо залежно" полягає в тому, що якщо X залежить від Y, то Y має бути повністю налаштований до конфігурації X. (Конфігурація - це етап встановлення, коли пакет, коли його файли розпаковуються до належних місць - тобто одного разу «встановлено», - вносить будь-які інші необхідні зміни, щоб можна було реально використовувати програмне забезпечення, яке воно надає. Наприклад , конфігурація HTTP-сервера може передбачати переконання, що є wwwкористувач із належними здібностями та /var/wwwкаталог із належними дозволами.) На противагу цьому, якщо X попередньо залежить від Y, тоді Y повинен бути встановлений і (як правило) повністю налаштований до того, як X буде рівним встановлено .

Докладніше див. Розділ 7.2 Посібника з політик Debian . Тут я цитую два найбільш релевантні розділи, але є інша інформація в цьому розділі (і в загальній главі 7), яка допомагає висвітлити, як працюють залежності.


Depends

Це оголошує абсолютну залежність. Пакет не буде налаштований, якщо всі пакунки, перелічені в його Dependsполі, не були правильно налаштовані (якщо немає кругової залежності, як описано вище).

DependsПоле має бути використано , якщо залежить від пакета-потрібні для упаковки в залежності , щоб забезпечити значну кількість функціональних можливостей .

DependsПоле також слід використовувати , якщо postinstабо prermсценарії вимагають залежить, на упаковці , щоб бути розпаковані або налаштований для запуску. У випадку постінститутної конфігурації пакунки, що залежать від цього, розпакуються та налаштуються спочатку. (Якщо обидва пакети задіяні в циклі залежності, це може не спрацювати, як очікувалося; див. Пояснення кілька абзаців назад.) У випадку prermчи інших postinstдій залежність пакунків зазвичай буде, як мінімум, розпакована, але вони можуть бути лише "Напіввстановлено", якщо попереднє оновлення залежності не вдалося.

Нарешті, Dependsполе слід використовувати, якщо postrmскрипт потрібен залежному від пакета, щоб повністю очистити його після видалення. Немає гарантії, що залежність від пакета буде доступна при postrmзапуску, але залежніший пакет швидше буде доступний, якщо пакет оголошує залежність (особливо у випадку postrm remove). postrmСкрипт повинен коректно обробити дії , які вимагають залежності , якщо ця залежність відсутня.


Pre-Depends

Це поле схоже Depends, за винятком того, що воно також змушує dpkgзавершити інсталяцію названих пакетів до того, як навіть розпочати установку пакета, який оголошує попередню залежність, наступним чином:

Коли пакет, декларується попередня залежність, має бути розпакований, попередня залежність може бути задоволена, якщо залежний від пакета повністю налаштований, або навіть якщо залежні від пакету пакети розпаковані лише в полі "Половина" -Конфігурований "стан, за умови, що вони були правильно налаштовані в якийсь момент минулого (і з тих пір не були видалені або частково видалені). У цьому випадку як попередньо налаштовані, так і наразі розпаковані або "Напівконфігуровані" версії повинні відповідати будь-якій версії положення в цьому Pre-Dependsполі.

Коли пакет, який оголошує попередню залежність, буде налаштований , передзалежність трактується як нормальна Depends. Він вважатиметься задоволеним лише в тому випадку, якщо залежний від пакета був правильно налаштований. Однак, на відміну від с Depends, Pre-Dependsне дозволяє порушувати кругові залежності. Якщо під час спроби вшанування виникає кругова залежність Pre-Depends, установка буде перервана.

Pre-Dependsтакож необхідні, якщо preinstсценарій залежить від названого пакету. Найкраще уникати такої ситуації, якщо це можливо.

Pre-Depends слід використовувати ощадливо, бажано лише пакетами, передчасне оновлення чи встановлення яких перешкоджатиме можливості системи продовжувати будь-яке оновлення, яке може тривати.

Не слід вказувати Pre-Dependsзапис для пакета до того, як це буде обговорено у debian-develсписку розсилки та досягнуто консенсусу щодо цього. Див. Залежності, розділ 3.5 .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.