Quelle est la différence entre les dépendances et les pré-dépendances?

12

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?

Bruno Pereira
la source

Réponses:

20

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:

Dépend

  • 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.

Recommande

  • Cela déclare une dépendance forte, mais pas absolue. Le champ Recommandations doit répertorier les packages qui seraient trouvés avec celui-ci dans toutes les installations, sauf inhabituelles.

Suggère

  • Ceci est utilisé pour déclarer qu'un paquet peut être plus utile avec un ou plusieurs autres. L'utilisation de ce champ indique au système d'emballage et à l'utilisateur que les packages répertoriés sont liés à celui-ci et peuvent peut-être améliorer son utilité, mais que l'installation de celui-ci sans eux est parfaitement raisonnable.

Améliore

  • Ce champ est similaire à Suggestions mais fonctionne dans la direction opposée. Il est utilisé pour déclarer qu'un package peut améliorer les fonctionnalités d'un autre package.

Pré-dépend

  • 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:

  • Les deux dépend et prédépendancesmentionner les dépendances dont un package a besoin avant l'installation, mais pré-dépend force l'installation et la configuration des packages de dépendance avant même de commencer avec le package qui a besoin des dépendances. dpkg ne décompressera même pas le paquet principal tant que tous les paquets pré-dépendants n'auront pas été traités. Avec dépend, l'ordre des packages de dépendances et du principal n'est pas important. Avec pre-depend, il prend en compte cela et également la vérification si les packages pre-depend sont configurés et installés ou non. Sans cela, le package principal ne sera même pas déballé, configuré ou installé. Vous devez soit avoir les dépendances installées avant de commencer le processus de travail avec le package principal. Sinon, ils doivent être téléchargés / configurés / installés avant de continuer.
Luis Alvarado
la source
2
Notez qu'il existe également des anti-dépendances telles que les conflits et les ruptures. Et créez des dépendances telles que Build-Depends.
Alexis Wilke
3

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 wwwutilisateur avec des capacités appropriées et un /var/wwwré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 Dependschamp ont été correctement configurés (sauf s'il existe une dépendance circulaire comme décrit ci-dessus).

Le Dependschamp doit être utilisé si le package dépendant est requis pour que le package dépendant fournisse une quantité significative de fonctionnalités.

Le Dependschamp doit également être utilisé si les scripts postinstou prermné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 de prermou d'autres postinstactions, 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 Dependschamp doit être utilisé si le package dépendant est requis par le postrmscript 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 postrmson 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 de postrm remove). Le postrmscript 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 é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, 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-Dependschamp.

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-Dependsne permet pas de briser les dépendances circulaires. Si une dépendance circulaire est rencontrée en essayant d'honorer Pre-Depends, l'installation sera abandonnée.

Pre-Dependssont également requis si le preinstscript 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-Dependsentrée pour un paquet avant que cela n'ait été discuté sur la debian-develliste de diffusion et qu'un consensus à ce sujet n'ait été atteint. Voir Dépendances, section 3.5 .

Eliah Kagan
la source