По-умолчанию шаблон соответствует пакету, если любая версия этого пакета
соответствует шаблону. Тем не менее, некоторые шаблоны ограничивают свои
подшаблоны так, чтобы последние соответствовали только некоторым версиям
пакета. Например, поисковый термин
выберет
пакет, который зависит от пакета, соответствующего
?depends
(шаблон
)шаблону
. Тем не менее,
шаблон
будет проверен только относительно тех
версий пакета, которые фактически удовлетворяют зависимость. Это означает,
что если foo
зависит от bar (>= 3.0)
,
и доступны версии 2.0
, 3.0
и
4.0
bar
, то в поисковом шаблоне
, только версии
?depends
(?version
(2\.0))3.0
и 4.0
будут проверены относительно
шаблона
, и следовательно
?version
(2\.0)foo
не будет найден этим поиском.
Важно то, какие версии проверяются, поскольку некоторые шаблоны, как в
примере выше, соответствуют одной версии, но не соответствуют
другой. Например, шаблон ?installed
соответствует только той версии пакета
(если таковая имеется), которая установлена в текущий момент. Сходным
образом, шаблон
соответствует только тем версиям, сопровождающим которых является данный
?maintainer
(сопровождающий
)сопровождающий
. Обычно все версии пакета имеют
одного и того же сопровождающего, но это не всегда так; в действительности,
любой поисковой шаблон, проверяющий поля пакета (конечно, отличные от его
имени) будет вести себя таким образом, так как все поля пакета могут
меняться в зависимости от версии.
Для того, чтобы проверить шаблон относительно всех версий пакета, даже если
этот шаблон обычно проверялся бы только относительно некоторых версий,
используйте термин ?widen
. Например,
выберет пакет
?depends
(?widen
(?version
(2\.0)))A
, который зависит от пакета
B
, где B
имеет версию,
соответствующую 2.0
, независимо от того, удовлетворяет
эта версия зависимость A
или нет. С другой
стороны, термин ?narrow
ограничивает версии теми версиями, которые
подходят под подшаблон:
выберет пакет, чья установленная
версия имеет зависимость, которая может быть удовлетворена пакетом, чья
строка версии содержит «?narrow
(?installed
,
?depends
(?version
(ubuntu)))ubuntu
».
Примечание | |
---|---|
Имеется незаметное, но очень важное различие между соответствием шаблона пакету и соответствием шаблона всем версиям этого пакета. Когда шаблон проверяется относительно пакета, каждый из его терминов проверяется относительно этого пакета, и поэтому каждый термин будет соответствовать этому пакету, если любая версия пакета ему соответствует. Когда же шаблон проверяется относительно каждой версии пакета, он будет соответствовать пакету только тогда, когда все его термины соответствуют одной и той же версии пакета одновременно.
Например: предположим, что установлена версия |