Standaard levert een patroon een pakket op, indien er een versie van dat
pakket bestaat die aan het patroon beantwoordt. Nochtans kunnen sommige
patronen aan hun subpatronen de restrictie opleggen om enkel de overeenkomst
met sommige versies van een pakket te honoreren. Bijvoorbeeld, de zoekterm
zal alle
pakketten opleveren die afhankelijk zijn van een pakket dat beantwoordt aan
?depends
(patroon
)patroon
. Nochtans zal
patroon
enkel getoetst worden aan die
pakketversies die effectief aan een vereiste tegemoet komen. Dit houdt in
dat indien foo
afhankelijk is van bar (>=
3.0)
en versies 2.0
, 3.0
, en
4.0
van bar
beschikbaar zijn, er bij
het zoekpatroon
enkel bij
versies ?depends
(?version
(2\.0))3.0
en 4.0
zal getoetst worden
op
, met als gevolg dat deze zoekopdracht
?version
(2\.0)foo
niet zal vinden.
Het doet ertoe welke versies getoetst worden, omdat zoals in het voorgaande
voorbeeld, sommige versies wel en andere niet kunnen beantwoorden aan het
patroon. Bijvoorbeeld het patroon ?installed
zal enkel een overeenkomst
opleveren met de pakketversie die geïnstalleerd is (als het geïnstalleerd
is). Evenzo zal het patroon
enkel een overeenkomst opleveren met versies die door de opgegeven
?maintainer
(pakketbeheerder
)pakketbeheerder
onderhouden worden. Gewoonlijk
hebben alle versies van een pakket dezelfde pakketbeheerder, maar dat is
niet altijd het geval. In feite zal elk zoekpatroon dat de velden van een
pakket (behalve de naam ervan natuurlijk) doorzoekt, zich op die manier
gedragen, omdat bij verschillende pakketversies alle velden van een pakket
onderling kunnen verschillen.
Om een patroon aan alle versies van een pakket te toetsen, ook al zou dat
normaal maar aan een aantal versies getoetst worden, moet u de term ?widen
gebruiken. Bijvoorbeeld,
zal een
overeenkomst opleveren met elk pakket ?depends
(?widen
(?version
(2\.0)))A
dat een
pakket B
vereist, waarbij
B
een versie heeft die beantwoordt aan
2.0
, ongeacht of die versie effectief aan de vereiste van
A
tegemoetkomt. Aan de andere kant beperkt de
term ?narrow
de versies waarmee zijn subpatroon vergeleken wordt:
zal een overeenkomst opleveren met elk pakket waarvan de geïnstalleerde
versie een vereiste heeft waaraan voldaan kan worden door een pakket waarvan
de versietekenreeks “?narrow
(?installed
, ?depends
(?version
(ubuntu)))ubuntu
” bevat.
![]() | Opmerking |
---|---|
Er is een subtiel maar belangrijk verschil tussen een patroon vergelijken met een pakket en het vergelijken met alle versies van dat pakket. Als een patroon met een pakket vergeleken wordt, wordt iedere term ervan met dat pakket vergeleken, en zo zal elk van de termen een overeenkomst opleveren als om het even welke versie van dat pakket eraan beantwoordt. Als een patroon daarentegen vergeleken wordt met elke versie van een pakket, zal er een succesvolle overeenkomst zijn als elk van zijn termen overeenkomt met dezelfde versie van dat pakket.
Bijvoorbeeld: veronderstel dat versie |