Некоторые особенно сложные поисковые запросы могут быть выражены в
aptitude с помощью ясных целей. В обычных поисковых
выражениях не существует способа указать пакет или версию пакета, которая
проверяется в текущий момент. Например, предположим, что вы хотите найти все
пакеты P
, которые зависят от другого пакета
Q
, причем такие пакеты, что
Q
рекомендует
P
. Очевидно, вам нужно начать с термина
. Но параметр этого термина в
?depends
(...)...
требует некоторым образом выбрать пакеты, идентичные
тому, которому соответствует
. Описывая задачу
выше, я делал это, указывая имена пакетов, называя их
?depends
P
и Q
; термины с
явными целями делают то же самое. [17]
Явная цель вводится термином $Sfor;:
Это выражение ведет себя в точности так же как
шаблон
, но в шаблоне
может использоваться переменная
для того, чтобы
указывать на пакет или версию пакета, которой соответствует
шаблон
. Вы можете использовать
переменную
двумя способами:
Термин ?=
в точности соответствует пакету или версии пакета,
обозначенным данной переменной. В частности, если соответствующий
?for
-термин ограничен определённой версией, то ?=
будет
соответствовать либо этой версии (если ?=
ограничен), либо всему
пакету; в противном случае он будет соответствовать любой версии этого
пакета.
См. Пример 2.2, «
Использование термина ?=
» для примера того, как использовать
?=
.
Термин
соответствует пакету или версии
пакета, если значение ?bind
(переменная
,
шаблон
)переменной
соответствует
шаблоном
.
Для терминов с ?
доступно сокращение. Выражение
может быть заменено на
?bind
(переменная
,
?термин
[(аргументы
)])?
.
переменная
:термин
(аргументы
)
Пример использования ?bind
см. в разделе Пример 2.3, «Использование термина ?bind
».
[17]
Проницательные читатели заметят, что очень важно явно называть переменную в
λ-терминах, соответствующих данному термину. Типичный термин имел бы
форму «λ x
. name-equals(x
,
шаблон
)»; явная цель делает
x
видимым в языке поиска.