web-dev-qa-db-fra.com

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

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?

12
Bruno Pereira

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 de

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

recommande

  • Cela déclare une dépendance forte mais non absolue. Le champ Recommends devrait lister les paquets 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 de conditionnement et à l'utilisateur que les paquetages 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 à Suggère mais fonctionne dans le sens opposé. Il est utilisé pour déclarer qu'un paquet peut améliorer les fonctionnalités d'un autre paquet.

Pre-Depends

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

  • Les deux dépend et pré-dépend mentionnent les dépendances dont un paquet a besoin avant l'installation mais pre-depend oblige l'installation et la configuration des packages de dépendance avant même de commencer par le package qui nécessite les 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épendance et le principal n'est pas important. Avec les pré-dépendances, cela prend en compte ceci ainsi que la vérification si les paquets de pré-dépendances sont configurés et installés ou non. Sans cela, le paquet principal ne sera même pas décompressé, configuré ou installé. Vous devez soit avoir les dépendances installées avant de commencer le processus d'utilisation du paquet principal. Sinon, ils doivent être téléchargés/configurés/installés avant de continuer. les pré-dépendances sont normalement utilisées dans les cas où la stabilité du paquet est importante et n'affecterait pas le système ou le programme de manière très erronée, mais ces cas sont évités grâce à plusieurs normes également mentionnées dans le lien ci-dessus.
20
Luis Alvarado

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 scripts postinst ou prerm 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 de prerm ou d'autres actions postinst, 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 script postrm pour être entièrement nettoyé après la suppression du package. Rien ne garantit que les dépendances du package seront disponibles lorsque postrm sera exécuté, mais le package dépendant sera probablement disponible si le package déclare une dépendance (en particulier dans le cas de postrm remove). Le script postrm 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 é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 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'honorer Pre-Depends, l'installation sera abandonnée.

Pre-Depends sont également requis 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 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 diffusion debian-devel et qu'un consensus sur cette opération ait été atteint. Voir Dépendances, Section 3.5 .

3
Eliah Kagan