Configuration de la résolution de dépendances interactive

Configuration des indicateurs du solveur

Configuration des indicateurs du solveur

Pour améliorer la qualité des solutions aux problèmes de dépendances que vous recevez, vous pouvez fournir des indicateurs au solveur interactif. Ces indicateurs peuvent modifier les priorités du solveur, en biaisant plus fortement en faveur d'une version ou d'un paquet. Ils peuvent aussi être utilisés pour fournir à l'avance des rejets et des approbations, comme si vous étiez entré dans le solveur et aviez rejeté ou accepté manuellement différentes versions.

Les indicateurs sont stockés dans le fichier de configuration d'apt, /etc/apt/apt.conf, dans le groupe de configuration « Aptitude::ProblemResolver::Hints » (consultez la section intitulée « Référence du fichier de configuration » pour les détails sur le fichier de configuration).

Chaque indicateur du solveur consiste en une action, une cible et une version optionnelle. Un indicateur est écrit comme ceci : "action cible [version]". Pour appliquer un indicateur du solveur, aptitude localise un ou plusieurs paquets utilisant la valeur de la cible, choisit une ou plusieurs versions de ces paquets en utilisant la valeur de version, puis effectue l'action indiquée.

Le champ action de l'indicateur du solveur peut prendre les valeurs suivantes :

  1. « approve » : approuver la version, comme si la commande SolutionsMarquer comme retenu (a) avait été utilisée sur elle.

  2. « reject » : rejeter la version, comme si la commande SolutionsMarquer comme rejeté (r) avait été utilisée sur elle.

  3. « discard » : ignorer toutes les solutions contenant cette version. Cette action diffère de « reject » par le fait qu'elle n'est pas visible par l'utilisateur et ne peut pas être modifiée de manière interactive.

  4. « increase-safety-cost-to nombre » : augmenter le coût de sécurité de toutes les solutions contenant la version à la valeur nombre. Si le coût de sécurité est déjà supérieur à nombre, cet indicateur n'a aucun effet. Le coût de sécurité peut être utilisé (et est utilisé par défaut) pour contrôler l'ordre d'apparition des solutions. Consultez la section intitulée « Coûts et composantes de coût » et la section intitulée « Coût de sécurité » pour les détails.

    Plusieurs niveaux de coûts particuliers peuvent être désignés par leur nom :

    1. conflict, discard : au lieu de changer le coût de sécurité, ignorer les solutions contenant les versions comme si l'indicateur « discard » avait été utilisé.

    2. maximum : le coût de sécurité le plus élevé.

    3. minimum : le coût de sécurité le plus bas. Toutes les recherches commencent avec ce coût, donc « augmenter » une version à cette valeur n'a aucun effet. Cependant, cette valeur peut aussi être utilisée lors de l'ajustement des niveaux de coût prédéfinis : par exemple, régler Aptitude::ProblemResolver::Remove-Level à la valeur « minimum » impliquera que la suppression de paquets n'aura aucun effet sur le coût de sécurité d'une solution.

    [Note]Note

    L'indicateur increase-safety-cost-to est appliqué en plus de n'importe quel autre coût de sécurité provenant de l'action sélectionnée. Par exemple, un indicateur qui augmente le coût de sécurité d'« install hal from experimental » à 15 000 n'aura aucun effet, car l'action a déjà un coût de 50 000 (en supposant que cette version de hal n'est pas la version candidate par défaut).

  5. « nombre » : ajouter le nombre donné au score de la version, ce qui biaise le solveur en sa faveur ou (si le nombre est négatif) en sa défaveur. Par exemple, un indicateur 200 emacs ajoute 200 au score d'emacs, alors que l'indicateur -10 emacs soustrait 10 de son score.

Si le champ cible de l'indicateur du solveur contient un point d'interrogation (« ? ») ou un tilde (« ~ »), il est interprété comme étant un motif de recherche et toutes les versions de paquets correspondant à ce motif sont prises en compte. Sinon, il est interprété comme le nom d'un paquet à sélectionner. Donc la cible « g++ » sélectionnera uniquement le paquet g++, mais la cible « ?section(non-free) » sélectionnera tous les paquets de la section non-free. Consultez la section intitulée « Motifs de recherche » pour plus d'informations sur les motifs de recherche.

Si le champ version est absent, toutes les versions du paquet sont concernées par l'indicateur. S'il est présent, il peut avoir l'une des formes suivantes :

  1. « /archive » : l'indicateur n'affecte que les versions disponibles dans l'archive donnée.

  2. « <version » : l'indicateur n'affecte que les versions dont le numéro est strictement inférieur à version.

  3. « <=version » : l'indicateur n'affecte que les versions dont le numéro est inférieur ou égal à version.

  4. « =version » : l'indicateur n'affecte que les versions dont le numéro est égal à version.

  5. « <>version » : l'indicateur n'affecte que les versions dont le numéro est différent de version.

  6. « >=version » : l'indicateur n'affecte que les versions dont le numéro est supérieur ou égal à version.

  7. « >version » : l'indicateur n'affecte que les versions dont le numéro est strictement supérieur à version.

  8. « :UNINST » : au lieu d'affecter l'une des versions de cible, l'indicateur affecte la décision de supprimer cible. Par exemple « Aptitude::ProblemResolver::Hints { "reject aptitude :UNINST"; }; » empêchera toute tentative du solveur de supprimer aptitude.

  9. « version » : l'indicateur n'affecte que les versions dont le numéro de version est version.