Настройка интерактивного решателя зависимостей

Настройка подсказок решателя

Настройка подсказок решателя

Чтобы улучшить качество решений зависимостей, получаемых вами, вы можете дать интерактивному решателю зависимостей подсказки. Эти подсказки могут изменить приоритеты решателя, сильнее склоняя его в пользу одной версии пакет, или они могут быть использованы для «предварительной загрузки» решателя с отклонениями и одобрениями, так же как если бы вы вошли в решатель и вручную отклонили или одобрили различные версии.

Подсказки хранятся в файле настройки apt, /etc/apt/apt.conf, в группе настроек «Aptitude::ProblemResolver::Hints» (подробности о файле настроек см. в разделе «Руководство по файлу настроек»).

Каждая подсказка решателя состоит из действия, цели и необязательной версии. Подсказка записывается так: "действие цель [версия]". Чтобы применить подсказку решателя, aptitude находит один или несколько пакетов, используя значение переменной цель, выбирает одну или несколько версий этих пакетов, используя значение переменной версия и, наконец, выполняет данное действие.

Поле действие подсказки решателя может быть одним из следующих:

  1. «approve»: Одобрить версию, как будто была выполнена команда РешательПереключить одобрение (a) .

  2. «reject»: Отклонить версию, как будто была выполнена команда РешательПереключить отказы (r) .

  3. «discard»: Отбросить всякое решение, содержащее версию. Отличается от «reject» тем, что она не видима для пользователя и не может быть изменена интерактивно.

  4. «increase-safety-cost-to число»: увеличить стоимость безопасности всякого решения, содержащего версию до числа; если стоимость безопасности этого действия уже выше, чем число, эта подсказка не будет работать. Стоимость безопасности может использоваться (и используется по-умолчанию) для управления порядком, соответственно которому появляются решения; подробности см. в разделе «Стоимости и стоимостные компоненты» и «Стоимости безопасности».

    Несколько специальных уровней стоимости, которые могут быть выбраны по имени:

    1. conflict, discard: вместо изменения стоимости безопасности, отбросить решения, содержащие версию, как если бы была применена подсказка «discard ».

    2. maximum: наиболее высокая стоимость безопасности.

    3. minimum: наименее низкая стоимость безопасности. Любой поиск начинается с этой стоимости, поэтому «увеличение» версии на эту стоимость не оказывает влияния. Тем не менее, это значение может быть использовано при настройке предопределённых уровней безопасности: например, установка Aptitude::ProblemResolver::Remove-Level на «minimum» приведёт к тому, что удаляемые пакеты не будут оказывать влияния на стоимость безопасности решения.

    [Примечание]Примечание

    Подсказка increase-safety-cost-to применяется в дополнение ко всякой стоимости безопасности по-умолчанию, соответствующей выбранному действию. Например, подсказка, увеличивающая стоимость безопасности «установки hal из экспериментального архива» до 15,000, не окажет влияния, так как это действие уже имеет стоимость безопасности равную 50,000 (учитывая, что эта версия пакета hal не является версией-кандидатом по-умолчанию).

  5. «number»: добавить данное число к счету версии пакета, настраивая решатель в пользу этой версии или (с отрицательным числом) против неё. Например, подсказка 200 emacs добавляет 200 к счёту emacs, в то время как подсказка -10 emacs вычитает 10 из его счёта.

Если поле цель подсказки решателя содержит знак вопроса («?») или тильду («~»), она рассматривается как поисковый шаблон, и рассматриваются все подходящие версии пакетов. В других же случаях она рассматривается как имя пакета. Поэтому цель «g++» выберет только пакет g++, а цель «?section(non-free)» выберет все пакеты в секции non-free. Дополнительную информацию о поисковых шаблонах см. в разделе «Поисковые шаблоны».

Если поле версия отсутствует, то все версии пакета подвергаются воздействию данной подсказки. В противном случае она может иметь любую из следующих форм:

  1. «/архив»: подсказка затрагивает только версии, доступные в данном архиве.

  2. «<версия»: подсказка затрагивает только те версии, номер версии которых меньше версии.

  3. «<=версия»: подсказка затрагивает только те версии, номер версии которых меньше или равен версии.

  4. «=версия»: подсказка затрагивает только те версии, номер версии которых равен версии.

  5. «<>версия»: подсказка затрагивает только те версии, номер версии которых не равен версии.

  6. «>=версия»: подсказка затрагивает только те версии, номер версии которых больше или равен версии.

  7. «>версия»: подсказка затрагивает только те версии, номер версии которых больше версии.

  8. «:UNINST»: вместо влияния на какую-либо версию цели, подсказка влияет на решение удалить цель. Например, «Aptitude::ProblemResolver::Hints { "reject aptitude :UNINST"; };» предупредит решатель от попытки удалить aptitude.

  9. «версия»: подсказка затрагивает только те версии, номер версии которых равен версии.