Qu'entend-on par "dépend" et "pré-dépend", et la différence entre ces 2 types d'exigences de package lorsque j'installe quelque chose dans Ubuntu?
Qu'entend-on par "dépend" et "pré-dépend", et la différence entre ces 2 types d'exigences de package lorsque j'installe quelque chose dans Ubuntu?
Réponses:
Tiré de ce lien: https://www.debian.org/doc/debian-policy/#document-ch-relationships
Il existe 5 types de dépendances:
La signification des cinq champs de dépendance est la suivante:
Cela déclare une dépendance absolue. Un package ne sera configuré que si tous les packages répertoriés dans son champ Dépend ont été correctement configurés. Le champ Dépend doit être utilisé si le package dépendant est requis pour que le package dépendant fournisse une quantité importante de fonctionnalités. Le champ Depends doit également être utilisé si les scripts postinst ou prerm nécessitent que le package dépendant soit décompressé ou configuré pour s'exécuter. Dans le cas de postinst configure, les packages dépendants seront décompressés et configurés en premier.
Dans le cas de prerm ou d'autres actions postinst, les dépendances de package seront normalement au moins décompressées, mais elles ne peuvent être "semi-installées" que si une mise à niveau précédente de la dépendance a échoué. Enfin, le champ Dépend doit être utilisé si le package dépendant est requis par le script postrm pour nettoyer complètement après la suppression du package. Il n'y a aucune garantie que les dépendances de package seront disponibles lors de l'exécution de postrm, mais le package dépendant est plus susceptible d'être disponible si le package déclare une dépendance (en particulier dans le cas de la suppression de postrm). Le script postrm doit ignorer les actions qui nécessitent une dépendance si cette dépendance n'est pas disponible.
Ce champ est comme Depends, sauf qu'il oblige également dpkg à terminer l'installation des packages nommés avant même de démarrer l'installation du package qui déclare la pré-dépendance , il fonctionne comme ceci, lorsqu'un package déclarant une pré-dépendance est sur le point de être décompressé, la pré-dépendance peut être satisfaite si le package dépendant est entièrement configuré, ou même si le ou les packages dépendants sont uniquement décompressés ou dans l'état "Half-Configured", à condition qu'ils aient été configurés correctement à un moment donné dans le passé (et non supprimé ou partiellement supprimé depuis).
Dans ce cas, les versions précédemment configurées et actuellement décompressées ou "semi-configurées" doivent satisfaire toute clause de version dans le champ Pre-Depends. Lorsque le package déclarant une pré-dépendance est sur le point d'être configuré, la pré-dépendance sera traitée comme une Depends normale. Il sera considéré comme satisfait uniquement si le package dépendant a été correctement configuré. Cependant, contrairement à Depends, Pre-Depends ne permet pas de briser les dépendances circulaires. Si une dépendance circulaire est rencontrée lors de la tentative d'honorer Pre-Depends, l'installation sera abandonnée.
Les pré-dépendances sont également requises si le script de pré-installation dépend du package nommé. Il est préférable d'éviter cette situation si possible. Pre-Depends doit être utilisé avec parcimonie, de préférence uniquement par les packages dont la mise à niveau ou l'installation prématurée entraverait la capacité du système à poursuivre toute mise à niveau en cours.
Version plus petite:
Le terme "dépendance" peut être utilisé largement pour englober les relations "Dépend" et "Avant-dépend" (et parfois même d'autres relations plus faibles), ou il peut être utilisé étroitement comme synonyme de "Dépend".
La différence entre les relations de package "Dépend" et "Pré-dépend" est que si X dépend de Y, alors Y doit être entièrement configuré avant que X ne soit configuré. (La configuration est l'étape d'installation où un paquet, une fois que ses fichiers sont décompressés aux emplacements appropriés - c'est-à-dire, une fois "installé" - a fait toutes les autres modifications nécessaires afin qu'il soit possible d'utiliser réellement le logiciel qu'il fournit. Par exemple , la configuration d'un serveur HTTP peut impliquer de s'assurer qu'il y a un www
utilisateur avec des capacités appropriées et un /var/www
répertoire avec les autorisations appropriées.) En revanche, si X dépend de Y, Y doit être installé et (généralement) entièrement configuré avant que X ne soit égal. installé .
Voir la section 7.2 du manuel de politique Debian pour plus de détails. Je cite les deux sections les plus pertinentes ici, mais il y a d'autres informations dans cette section (et dans le chapitre 7 plus généralement) qui aident à éclairer le fonctionnement des dépendances.
Depends
Cela déclare une dépendance absolue. Un package ne sera configuré que si tous les packages répertoriés dans son
Depends
champ ont été correctement configurés (sauf s'il existe une dépendance circulaire comme décrit ci-dessus).Le
Depends
champ doit être utilisé si le package dépendant est requis pour que le package dépendant fournisse une quantité significative de fonctionnalités.Le
Depends
champ doit également être utilisé si les scriptspostinst
ouprerm
nécessitent que le package dépendant soit décompressé ou configuré pour s'exécuter. Dans le cas de postinst configure, les packages dépendants seront décompressés et configurés en premier. (Si les deux packages sont impliqués dans une boucle de dépendance, cela peut ne pas fonctionner comme prévu; voir l'explication quelques paragraphes en arrière.) Dans le cas deprerm
ou d'autrespostinst
actions, les dépendances du package seront normalement au moins décompressées, mais elles peuvent ne l'être que "Half-Installed" si une mise à niveau précédente de la dépendance a échoué.Enfin, le
Depends
champ doit être utilisé si le package dépendant est requis par lepostrm
script pour nettoyer complètement après la suppression du package. Il n'y a aucune garantie que les dépendances de package seront disponibles lors depostrm
son exécution, mais le package dépendant est plus susceptible d'être disponible si le package déclare une dépendance (en particulier dans le cas depostrm remove
). Lepostrm
script doit ignorer les actions qui nécessitent une dépendance si cette dépendance n'est pas disponible.
Pre-Depends
Ce champ est similaire
Depends
, sauf qu'il oblige égalementdpkg
à terminer l'installation des packages nommés avant même de démarrer l'installation du package qui déclare la pré-dépendance, comme suit:Lorsqu'un package déclarant une pré-dépendance est sur le point d'être décompressé, la pré-dépendance peut être satisfaite si le package dépendant est soit entièrement configuré, ou même si le ou les packages dépendants sont uniquement décompressés ou dans le "Half -Configuré ", à condition qu'ils aient été correctement configurés à un moment donné dans le passé (et non supprimés ou partiellement supprimés depuis). Dans ce cas, les versions précédemment configurées et actuellement décompressées ou "semi-configurées" doivent satisfaire à n'importe quelle clause de version dans le
Pre-Depends
champ.Lorsque le package déclarant une pré-dépendance est sur le point d'être configuré , la pré-dépendance sera traitée comme une normale
Depends
. Il sera considéré comme satisfait uniquement si le package dépendant a été correctement configuré. Cependant, contrairement àDepends
,Pre-Depends
ne permet pas de briser les dépendances circulaires. Si une dépendance circulaire est rencontrée en essayant d'honorerPre-Depends
, l'installation sera abandonnée.
Pre-Depends
sont également requis si lepreinst
script dépend du package nommé. Il est préférable d'éviter cette situation si possible.
Pre-Depends
doit être utilisé avec parcimonie, de préférence uniquement par des packages dont la mise à niveau ou l'installation prématurée entraverait la capacité du système à poursuivre toute mise à niveau en cours.Vous ne devez pas spécifier une
Pre-Depends
entrée pour un paquet avant que cela n'ait été discuté sur ladebian-devel
liste de diffusion et qu'un consensus à ce sujet n'ait été atteint. Voir Dépendances, section 3.5 .