Установите ядро ​​Debian Backports автоматически

8

У меня есть следующие закрепления:

Package: linux-image-amd64
Pin: release a=wheezy-backports
Pin-Priority: 1001

Package: *
Pin: release a=wheezy-backports
Pin-Priority: 499

Я получаю следующую ошибку:

$ sudo apt-get install linux-image-amd64
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 linux-image-amd64 : Depends: linux-image-3.16.0-0.bpo.4-amd64 but it is not going to   be installed
E: Unable to correct problems, you have held broken packages.

Политики кажутся правильными:

$ apt-cache policy linux-image-amd64
linux-image-amd64:
  Installed: 3.2+46
  Candidate: 3.16+63~bpo70+1
  Package pin: 3.16+63~bpo70+1
  Version table:
     3.16+63~bpo70+1 1001
        499 http://ftp.nl.debian.org/debian/ wheezy-backports/main amd64 Packages
 *** 3.2+46 1001
        500 http://ftp.nl.debian.org/debian/ wheezy/main amd64 Packages
        100 /var/lib/dpkg/status

$ apt-cache policy linux-image-3.16.0-0.bpo.4-amd64
linux-image-3.16.0-0.bpo.4-amd64:
  Installed: (none)
  Candidate: 3.16.7-ckt4-3~bpo70+1
  Version table:
     3.16.7-ckt4-3~bpo70+1 0
        499 http://ftp.nl.debian.org/debian/ wheezy-backports/main amd64 Packages

Так что я не понимаю ошибку. Что я делаю неправильно?

Я пытаюсь использовать puppet для обновления всех компьютеров Wheezy до ядра backports (запланирована полоса перезагрузки), поэтому я хочу решить ее правильно. Я мог бы вручную войти на все серверы для запуска:

sudo apt-get install -t wheezy-backports linux-image-amd64

Что работает, но не так удобно.

ОБНОВИТЬ

Как просили:

/etc/apt/preferences.d$ cat linux-image 
Package: linux-image-*
Pin: release a=wheezy-backports
Pin-Priority: 1001

Package: *
Pin: release a=wheezy-backports
Pin-Priority: 499

/etc/apt/preferences.d$ sudo apt-get update
Hit http://debian.kumina.nl wheezy-kumina Release.gpg
.
.
.
Reading package lists... Done
/etc/apt/preferences.d$ sudo apt-get install linux-image-amd64
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 linux-image-amd64 : Depends: linux-image-3.16.0-0.bpo.4-amd64 but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
/etc/apt/preferences.d$ aptitude why-not linux-image-3.16.0-0.bpo.4-amd64
Unable to find a reason to remove linux-image-3.16.0-0.bpo.4-amd64.
Тим Ступ
источник

Ответы:

3

Проверьте, от чего зависит этот пакет, и что нужно этим зависимостям. Например, я вижу это для моей машины:

#apt-cache  show linux-image-amd64
Package: linux-image-amd64
<snip>
Depends: linux-image-3.16.0-4-amd64

а также

# apt-cache  show linux-image-3.16.0-4-amd64
Package: linux-image-3.16.0-4-amd64
<snip>
Depends: kmod | module-init-tools, linux-base (>= 3~), debconf (>= 0.5) | debconf-2.0, initramfs-tools (>= 0.110~) | linux-initramfs-tool
Pre-Depends: debconf | debconf-2.0

Проверьте, взяты ли зависимости из бэкпортов.

stimur
источник
Это уже объяснено в моем вопросе ...
Тим Ступ
1
Я не вижу ничего о закреплении версии зависимостей в вашем вопросе. вам нужно настроить более высокий приоритет для пакетов, необходимых для linux-image-3.16.0-0.bpo.4-amd64. проверить это: Depends: kmod | module-init-tools, linux-base (>= 3~), debconf (>= 0.5) | debconf-2.0, initramfs-tools (>= 0.110~) | dracut (>= 0.40+1-1~) | linux-initramfs-tool. Если вы используете, dracutнапример, Wheezy имеет версию 020-2 0, в то время как backports есть 040+1-1 0. В этом случае вам необходимо повысить приоритетность пакета Dracut, который также будет взят из бэкпортов.
стимур
Разве они не будут добавлены, когда я установлю его через 'apt-get -t wheezy-backports install linux-image-amd64'?
Тим Ступ
1
Так и будет, если вы обеспечите это -t wheezy-backports. Но это принуждение также установит все более новые версии для неустановленных зависимостей от бэкпортов, независимо от того, достаточно ли стабильных версий или нет. Если вам нужно установить только ограниченное и контролируемое количество пакетов из бэкпортов, вам необходимо отслеживать зависимости и закреплять их вручную. Если вы не заботитесь об этом, обязательно продолжайте и делайте полный -t *backports.
стимур
Ах, понял, ты прав. Мне нужно было также получить initramfs-tools из backports, и тогда это можно сделать автоматически. Спасибо!
Тим Ступ
5

sudo apt-get install -t wheezy-backports linux-image-amd64

это не удобно, я знаю .. но это правильный способ делать вещи без проблем в будущем (ИМХО конечно)

drAlberT
источник
Какие проблемы в будущем вы ожидаете с этим?
Тим Ступ
1
- если debian спроектировал свою систему так, чтобы она работала одним способом, я «полагаю», что у них есть веская причина;) (см. инструкции к обратным портам ) - при закреплении всего исходного кода вы отдаете более высокий приоритет широкому количеству пакетов, перекомпилируемых из тестирования и нестабильных и не тестируется как стабильная версия couterparts - философия -tзаключается в том, чтобы позволить пакету установить свои зависимости .. "делать строго то, что вам нужно" ... - это подход со списком времени: делайте то, что вы знаете, когда вам нужно
drAlberT
2
Это не имеет достаточно голосов
Джон Блэкберри
1

Измените верхнюю строку в ваших настройках на

Package: linux-image-*

Запустить

apt-get update

Попробуйте установить снова. Если вы все еще получаете ошибку, проверьте

aptitude why-not linux-image-3.16.0-0.bpo.4-amd64
Седрик Найт
источник
Не работает Добавил вывод команды на мой вопрос.
Тим Ступ
ОК, спасибо за попытку. Я был бы склонен использовать aptitudeраспознаватель в интерактивном режиме для выявления проблемы. Может быть, linux-*включить другие зависимости? Возможно ли APT::Default-Release "wheezy-backports";временно добавить в конфигурацию?
Седрик Найт
Мы фактически удалили aptitude со всех наших серверов, мне пришлось установить его, чтобы выполнить тест. Так что это будет невозможно. Временно добавить опцию конфигурации не представляется возможным, и, честно говоря, это не очень хорошее решение :) Я уверен, что это можно сделать с помощью apt-get без каких-либо взломов, просто не могу понять, как!
Тим Ступ