Qu'entend-on par "dépend" et "pré-dépend" et la différence entre ces 2 types de paquet requis lorsque j'installe quelque chose dans Ubuntu?
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 paquet dépend fournisse une quantité importante de fonctionnalités. Le champ Dépend doit également être utilisé si les scripts postinst ou prerm nécessitent que le paquetage dépendant soit décompacté ou configuré pour pouvoir être exécuté. Dans le cas de postinst configure, les paquetages dépendants seront d'abord décompactés et configurés.
Dans le cas d'actions prerm ou autres actions postinst, les dépendances du paquet seront normalement au moins décompactées, mais elles ne pourront être que "Semi-installées" si une mise à niveau précédente de la dépendance a échoué. Enfin, le champ Dépend devrait être utilisé si le paquetage dépendant est requis par le script postrm pour être entièrement nettoyé après la suppression du paquet. Rien ne garantit que les dépendances de package seront disponibles lors de l'exécution de postrm, mais le package dépendant est plus susceptible de l'être si le package déclare une dépendance (en particulier dans le cas de postrm remove). Le script postrm doit ignorer les actions nécessitant une dépendance si celle-ci n'est pas disponible.
Ce champ ressemble à Depends, à la différence près qu'il oblige dpkg à terminer l'installation des paquetages nommés avant même de démarrer l'installation du paquetage qui déclare la pré-dépendance , Cela fonctionne comme ceci, quand un paquet déclarant une pré-dépendance est sur le point d'être décompressé, la pré-dépendance peut être satisfaite si le paquet dépendant est soit entièrement configuré, ou même si le (s) paquet (s) dépendant sont uniquement décompressé ou à l'état "Semi-configuré", à condition qu'ils aient été configurés correctement à un moment donné dans le passé (et non supprimés ou partiellement supprimés depuis).
Dans ce cas, la version configurée précédemment et la version actuellement décompressée ou "Semi-configurée" doivent satisfaire à toute clause de version du champ Pre-Depends. Lorsque le package déclarant une pré-dépendance est sur le point d'être configuré, cette pré-dépendance sera traitée comme une dépendance normale. Il ne sera considéré comme satisfait que si le package dépendant a été correctement configuré. Cependant, contrairement à Depends, Pre-Depends ne permet pas de rompre 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.
Des pré-dépendances sont également requises si le script preinst dépend du paquet nommé. Il est préférable d'éviter cette situation si possible. Pre-Depends doit être utilisé avec parcimonie, de préférence uniquement avec les packages dont la mise à niveau ou l’installation prématurée entraverait la capacité du système de poursuivre toute mise à niveau en cours.
Version plus petite:
Le terme "dépendance" peut être utilisé de manière large pour englober les relations "dépend" et "pré-dépend" (et parfois même d'autres relations plus faibles), ou il peut être utilisé de manière étroite 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 dans laquelle un paquet, une fois ses fichiers décompressés aux emplacements appropriés, c'est-à-dire une fois "installé" - subit toutes les modifications nécessaires pour qu'il soit réellement possible d'utiliser le logiciel qu'il fournit. Par exemple , la configuration d’un serveur HTTP peut impliquer de s’assurer qu’un utilisateur www
possède les capacités appropriées et qu’un répertoire /var/www
dispose des autorisations appropriées.) En revanche, si X pre -depends sur Y, alors Y doit être installé et (généralement) entièrement configuré avant que X ne soit même installé .
Voir Section 7.2 du manuel de la stratégie 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 au chapitre 7 de manière plus générale) qui permettent de mieux comprendre 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 champ
Depends
ont été correctement configurés (sauf en cas de dépendance circulaire décrite ci-dessus).Le champ
Depends
doit être utilisé si le package dépendant est requis pour que le paquet dépendant fournisse une quantité importante de fonctionnalités.Le champ
Depends
doit également être utilisé si les scriptspostinst
ouprerm
nécessitent que le package dépendant soit décompressé ou configuré pour être exécuté. Dans le cas de postinst configure, les paquetages dépendants seront d'abord décompactés et configurés. (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'autres actionspostinst
, les dépendances du package seront normalement être au moins décompressé, mais ils ne peuvent être que "moitié installés" si une mise à niveau précédente de la dépendance a échoué.Enfin, le champ
Depends
doit être utilisé si le package dépendant est requis par le scriptpostrm
pour être entièrement nettoyé après la suppression du package. Rien ne garantit que les dépendances du package seront disponibles lorsquepostrm
sera exécuté, mais le package dépendant sera probablement disponible si le package déclare une dépendance (en particulier dans le cas depostrm remove
). Le scriptpostrm
doit ignorer gracieusement les actions nécessitant une dépendance si cette dépendance n'est pas disponible.
Pre-Depends
Ce champ ressemble à
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 entièrement configuré, . ou même si le ou les paquetages dépendants ne sont que décompressés ou dans l'état "Semi-configuré", à condition qu'ils aient été configurés correctement à un moment donné dans le passé (et non supprimés ou partiellement supprimés ). Dans ce cas, la version configurée précédemment et la version actuellement décompressée ou "Half-Configured" doivent satisfaire à toute clause de version du champ
Pre-Depends
.Lorsque le package déclarant une pré-dépendance est sur le point d'être configuré , celui-ci sera traité comme un
Depends
normal. Il ne sera considéré comme satisfait que si le package dépendant a été correctement configuré. Cependant, contrairement àDepends
,Pre-Depends
ne permet pas de rompre les dépendances circulaires. Si une dépendance circulaire est rencontrée lors de la tentative d'honorerPre-Depends
, l'installation sera abandonnée.
Pre-Depends
sont également requis si le scriptpreinst
dépend du paquet nommé. Il est préférable d'éviter cette situation si possible.
Pre-Depends
doit être utilisé avec parcimonie, de préférence uniquement avec des packages dont la mise à niveau ou l'installation prématurée empêcherait le système de poursuivre toute mise à niveau en cours.Vous ne devez pas spécifier d'entrée
Pre-Depends
pour un paquet avant que cela ait été discuté sur la liste de diffusiondebian-devel
et qu'un consensus sur cette opération ait été atteint. Voir Dépendances, Section 3.5 .