Назад | Перейти на главную страницу

Почему не подходит эта удачная булавочная палка?

Я бы предпочел установку в nginx из squeeze-backports, чем из mainline stable. У меня включен репозиторий backports. У меня есть этот файл настроек:

# /etc/apt/preferences.d/nginx
Package: nginx nginx-common
Pin: release a=squeeze-backports
Pin-Priority: 999

Настройка цели работает так, как ожидалось:

# aptitude install -t squeeze-backports nginx
The following NEW packages will be installed:
  libgd2-noxpm{a} libgeoip1{a} libjpeg62{a} libpcre3{a} libxml2{a} libxslt1.1{a} nginx nginx-common{a} nginx-full{a} 
The following packages are RECOMMENDED but will NOT be installed:
  geoip-database xml-core 
0 packages upgraded, 9 newly installed, 0 to remove and 39 not upgraded.
Need to get 828 kB/2,235 kB of archives. After unpacking 4,985 kB will be used.
Do you want to continue? [Y/n/?]

но без цели нет:

# aptitude install nginx
The following NEW packages will be installed:
  libgeoip1{a} libpcre3{a} nginx 
The following packages are RECOMMENDED but will NOT be installed:
  geoip-database 
0 packages upgraded, 3 newly installed, 0 to remove and 25 not upgraded.
Need to get 339 kB/694 kB of archives. After unpacking 1,667 kB will be used.
Do you want to continue? [Y/n/?]

apt_preferences (5) подробно описывает алгоритм выбора версии пакета для установки:

Если целевая версия была указана, APT использует следующий алгоритм для установки приоритетов версий пакета. Назначить:

приоритет 1 :: к версиям, происходящим из архивов, которые в их файлах выпуска помечены как «NotAutomatic: yes», но не как «ButAutomaticUpgrades: yes», как экспериментальный архив debian.

приоритет 100 :: к уже установленной версии (если есть) и к версиям из архивов, которые в своих файлах Release помечены как «NotAutomatic: yes» и «ButAutomaticUpgrades: yes», как архив backports debian, поскольку squeeze-backports .

приоритет 500 :: версиям, которые не установлены и не относятся к целевому выпуску.

приоритет 990 :: версиям, которые не установлены и относятся к целевому выпуску.

Если целевой выпуск не был указан, APT просто назначает приоритет 100 всем установленным версиям пакетов и приоритет 500 всем неустановленным версиям пакетов, кроме версий, поступающих из архивов, которые в своих файлах выпуска помечены как «NotAutomatic: yes» - эти версии получают приоритет 1 или приоритет 100, если он дополнительно отмечен как «ButAutomaticUpgrades: yes».

Затем APT применяет следующие правила, перечисленные в порядке приоритета, чтобы определить, какую версию пакета установить.

  • Никогда не переходите на более раннюю версию, если приоритет доступной версии не превышает 1000. («Понижение» означает установку менее новой версии пакета вместо более новой. Обратите внимание, что ни один из приоритетов APT по умолчанию не превышает 1000; такие высокие приоритеты можно установить только в файле настроек. Также обратите внимание, что переход на более раннюю версию пакета может быть рискованным.)

  • Установите версию с наивысшим приоритетом.

и т. д. можно прочитать полностью Вот. Насколько я понимаю, приоритет 999 - это текущий наивысший приоритет, а nginx из squeeze-backports должен быть одобренным. Это явно не так. Возможно, дьявол кроется в деталях - я не уверен, помечен ли пакет nginx как NotAutomatic или ButAutomaticUpgrades, или как это определить, - но примеры, приведенные ниже на странице руководства, предполагают, что я сделал правильный шаг. Все же

# apt-cache policy nginx
nginx:
  Installed: (none)
  Candidate: 1.1.8-2~bpo60+1
  Package pin: 1.1.8-2~bpo60+1
  Version table:
     1.1.8-2~bpo60+1 999
        100 http://backports.debian.org/debian-backports/ squeeze-backports/main i386 Packages
     0.7.67-3+squeeze1 999
        500 http://debian.osuosl.org/debian/ squeeze/main i386 Packages

Приоритет 100 для желаемого пакета. Что дает?

Возможно ли, что тебя укусил эта ошибка?

В смешанной системе sid / testing один и тот же текст ведет себя по-разному, независимо от того, помещен ли он в / etc / apt / preferences или в /etc/apt/preferences.d/pinning.

apt-get уважает файлы, размещенные в любом месте, а политика apt-cache также показывает ожидаемое поведение. Только одна способность ведет себя так.

Я видел такое же поведение в версии 0.4.11.11-1 + b2 и пробовал обновиться до 0.6.1.3-3, чтобы увидеть, было ли это исправлено в sid, но неправильное поведение остается.

Согласно последнему обновлению, это fixed in aptitude 0.6.3-3.2