Recherches et versions

Par défaut, un motif sélectionne un paquet dès qu'une version du paquet correspond au motif. Cependant, certains motifs vont contraindre les sous-motifs à ne chercher des correspondances que dans certaines versions d'un paquet. Par exemple, le terme de recherche ?depends(motif) ne sélectionnera que les paquets qui dépendent d'un paquet correspondant au motif. Cependant, le motif ne sera testé que dans les versions du paquet qui satisfont effectivement une dépendance. Cela signifie que si foo dépend de bar (>= 3.0) et que les versions 2.0, 3.0 et 4.0 de bar sont disponibles, alors avec le motif de recherche ?depends(?version(2\.0)), seules les versions 3.0 et 4.0 seront testées avec ?version(2\.0), et donc foo ne sera pas sélectionné par cette recherche.

Cela dépend des versions qui sont vérifiées car, comme dans l'exemple précédent, certains motifs vont correspondre à une version, mais pas à une autre. Par exemple, le motif ?installed ne correspondra qu'à la version du paquet qui est actuellement installée (s'il y en a effectivement une). De même, le motif ?maintainer(responsable) ne correspondra qu'aux versions maintenues par ce responsable. Normalement, toutes les versions d'un même paquet ont le même responsable, mais ce n'est pas toujours le cas. En fait, chaque motif de recherche qui examine les champs d'un paquet (autres que son nom, bien sûr) vont se comporter de cette façon, car les champs d'un paquet peuvent changer d'une version à l'autre.

Pour tester un motif contre toutes les versions d'un paquet, même si ce motif serait normalement testé seulement dans certaines versions, utilisez le terme ?widen. Par exemple, ?depends(?widen(?version(2\.0))) correspondra à tout paquet A qui dépend d'un paquet B, dont une version correspond à l'expression 2.0, indépendamment du fait que ce soit celle qui satisfait la dépendance de A ou non. D'autre part, le terme ?narrow restreint les versions pour lesquelles les sous-motifs sont testés : ?narrow(?installed, ?depends(?version(ubuntu))) sélectionnera les paquets dont la version installée a une dépendance qui peut être satisfaite par un paquet dont le numéro de version contient la chaîne « ubuntu ».

[Note]Note

Il y a une distinction subtile mais importante entre tester un motif dans un paquet, et le tester dans toutes les versions de ce paquet. Lorsqu'un motif est testé dans un paquet, chacun de ses termes est testé dans le paquet, et il y aura correspondance dès que pour chaque terme il y aura une version du paquet qui correspondra. En revanche, pour un motif testé dans toutes les versions d'un paquet, il y aura correspondance si tous les termes correspondent avec la même version du paquet.

Supposons par exemple que la version 3.0-1 du paquet aardvark est installée, mais que la version 4.0-1 est disponible. Alors le motif de recherche ?version(4\.0-1)?installed sélectionnera aardvark, car ?version(4\.0-1) fait correspondre la version 4.0-1 d'aardvark, alors qu'?installed fait correspondre 3.0-1. D'autre part, ce motif ne donne pas de correspondance s'il est testé sur toutes les versions d'aardvark, car il n'y a pas de version installée qui ait aussi un numéro de version 4.0-1.