Как готовить и с чем кушать Pin-Priority

Изображение пользователя Xenomorph.

Pin-Priority - это такие правила apt'а для управления установкой пакетов из разных репозиториев.

Набор с правилами можно найти в файле /etc/apt/preferences и/или в папке /etc/apt/preferences.d/

По умолчанию никаких правил нету, поэтому, скорее всего, их придется создавать самостоятельно. Дальще будет информация, как это делать.

Типичная запись приоритетов в каком-либо из вышеперечисленных файлов:
Package: $PACKAGE_NAME
Pin: $OPTIONS
Pin-Priority: $PRIORITY

Поехали по порядку.

$PACKAGE_NAME - имя пакета. Туда мы можем вписать те пакеты, для которых хотим выставить приоритет, поддерживаются регулярные выражения и глобы.
То есть, можно использовать как имя пакета *, и тогда ВСЕ пакеты, подходящие под критерий $OPTIONS получат приоритет $PRIORITY.

$OPTIONS - всевозможные критерии отбора пакетов по релизам, версиям и происхождению.

Происхождение - откуда мы скачиваем - у нас обозначается так: origin "ppa.launchpad.net" Вместо ppa.launchpad.net может быть любой другой источник.

Версия - версия пакета - обозначается так: version 4.99.* Понятно, что если используется версия, то имя пакета должно быть явно указано, иначе будет не очень хорошо.

Релиз (release) немного более сложен, для него существует дополнительные опции, которые мы сейчас будем рассматривать.

Опции релиза включают в себя: a (имя релиза - oneiric, precise, quantal и другие, если это ubuntuшные репы или stable, testing, unstable - если дебиановские), n ( кодовое имя, как правило, совпадает с a), c (компонента - main, non-free, contrib, multiverse и другие), v (версия - версия релиза - 12.04, 6.0.6 и т.д.), o (происхождение - это не одно и то же с происхождением выше, например, Debian, Ubuntu, LP-PPA-* и другие), l (метка - Google, Ubuntu-Security, etc).
Опции релиза перечисляются через запятую.

Пример: release a=quantal, c=main, o=LP-PPA-ubuntu-x-swat-x-updates

Ну и напоследок, давайте разберёмся с приоритетом пакетов. Пускай P - это приоритет.

Если

  • P > 1000, то пакет будет установлен, даже если версия ниже текущей.
  • 990 < P <=1000, то пакет будет установлен, даже если он не из используемого релиза, но новее текущего
  • 500 < P <=990, то пакет будет установлен, если нет более нового текущего
  • 100 < P <=500, то пакет будет установлен, если нет другой версии или более свежей версии
  • 0 < P <=100, то пакет будет установлен, если нет любой другой версии
  • P < 0, то запрещается устанавливать любую версию пакета

Ну и в конце, действующий пример.

Package: *
Pin: release o=Ubuntu (UALinux),l=Ubuntu (UALinux),c=main
Pin-Priority: 50

или

Package: *
Pin: origin "archive.ualinux.com"
Pin-Priority: 50

Надеюсь, примеры понятны и не требуют объяснений.

Всем спасибо за внимание, до следующей встречи в эфире.

0
dyug - 1 Февраль, 2013 - 20:22

о. почти внятно...
счас соберусь с мыслями, и попробую повопрошать... :-)

Отправить комментарий

CAPTCHA на основе изображений
Введите цифры