In modo predefinito, un modello trova corrispondenza con un pacchetto se una
qualsiasi versione del pacchetto corrisponde al modello. Tuttavia alcuni
modelli hanno restrizioni per far corrispondere i loro sottomodelli solo ad
alcune versioni di un pacchetto. Ad esempio, il termine di ricerca
seleziona
qualsiasi pacchetto che dipende da un pacchetto che corrisponde a
?depends
(modello
)modello
. modello
però
viene controllato solo per le versioni del pacchetto che realmente
soddisfano una dipendenza. Ciò significa che se pippo
dipende da pluto(>= 3.0)
e sono disponibili le versioni
2.0
, 3.0
e 4.0
di
pluto
, allora nel modello di ricerca
solo le versioni
?depends
(?version
(2\.0))3.0
e 4.0
verranno testate per la
parte
e perciò ?version
(2\.0)pippo
non viene trovato da questa ricerca.
Quali versioni vengano testate è importante perché, come nell'esempio
precedente, alcuni modelli corrispondono ad una versione ma non ad
un'altra. Per esempio, il modello ?installed
trova corrispondenza solo con
la versione del pacchetto attualmente installata (se una c'è). In modo
analogo, il modello
trova corrispondenza solo con le versioni che hanno il
?maintainer
(manutentore
)manutentore
indicato. Normalmente tutte le
versioni di un pacchetto hanno lo stesso manutentore, ma non è sempre così;
di fatto tutti i modelli di ricerca che esaminano i campi di un pacchetto
(tranne quello del nome, naturalmente) si comportano in questo modo, perché
tutti i campi di un pacchetto possono variare con le versioni.
Per testare un modello su tutte le versioni di un pacchetto, anche se
normalmente verrebbero testate solo alcune delle versioni, usare il termine
?widen
. Ad esempio,
troverà
corrispondenza con qualsiasi pacchetto ?depends
(?widen
(?version
(2\.0)))A
che
dipenda da un pacchetto B
, se
B
ha una versione che corrisponde a
2.0
, indipendentemente dal fatto che quella versione
soddisfi realmente la dipendenza di
A
. All'opposto, il termine ?narrow
limita le
versioni che trovano corrispondenza con il sottomodello:
corrisponde a qualsiasi pacchetto la cui versione installata ha una
dipendenza che può essere soddisfatta da un pacchetto la cui stringa di
versione contiene «?narrow
(?installed
, ?depends
(?version
(ubuntu)))ubuntu
».
Nota | |
---|---|
Esiste una sottile, ma importante, distinzione tra cercare la corrispondenza di un modello con un pacchetto e cercarla con tutte le versioni di quel pacchetto. Quando viene cercata la corrispondenza di un modello con un pacchetto, viene testata la corrispondenza di ognuno dei suoi termini con il pacchetto e perciò ogni termine trova corrispondenza se una qualsiasi delle versioni del pacchetto corrisponde. Al contrario, quando viene ricercata la corrispondenza di un modello con ciascuna versione di un pacchetto, il modello trova corrispondenza se tutti i suoi termini fanno corrispondenza con la stessa versione del pacchetto.
Per esempio: se si suppone che sia installata la versione
|