Instale o kernel do Debian Backports automaticamente

8

Eu tenho o seguinte conjunto de pinos:

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

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

Estou tendo o erro a seguir:

$ 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.

As políticas parecem estar corretas:

$ 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

Então eu não entendi o erro. O que estou fazendo errado?

Estou tentando usar o fantoche para atualizar todas as máquinas Wheezy para o kernel de backports (uma sequência de reinicialização está planejada), e é por isso que quero resolvê-lo corretamente. Eu poderia acessar manualmente todos os servidores para executar:

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

O que funciona, mas não é tão conveniente.

ATUALIZAR

Como pedido:

/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.
Tim Stoop
fonte

Respostas:

3

Verifique do que esse pacote depende e do que essas dependências também precisam. Por exemplo, vejo isso na minha máquina:

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

e

# 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

Verifique se as dependências são obtidas dos backports também.

estímulo
fonte
Isso já está explicado na minha pergunta ... #
927 Tim
1
Não vejo nada sobre como fixar a versão das dependências na sua pergunta. você precisa configurar uma prioridade mais alta para os pacotes necessários para linux-image-3.16.0-0.bpo.4-amd64. veja isso: 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. Se você estiver usando, dracutpor exemplo, o Wheezy tem versão 020-2 0, enquanto os backports têm 040+1-1 0. Nesse caso, você precisa aumentar a prioridade do pacote Dracut para ser retirado dos backports também.
Stimur
Eles não seriam atraídos também quando eu o instalo via 'apt-get -t wheezy-backports install linux-image-amd64'?
Tim Stoop
1
Será, se você aplicá-lo com -t wheezy-backports. Mas essa aplicação também instalará todas as versões mais recentes para dependências não instaladas dos backports, independentemente do fato de as versões estáveis ​​serem suficientes ou não. Se você precisar instalar apenas um número limitado e controlado de pacotes de backports, precisará rastrear as dependências e fixá-las manualmente. Se você não se importa com isso, com certeza vá em frente e faça o máximo -t *backports.
Stimur #
Ah entendi, você está certo. Eu precisava buscar o initramfs-tools nos backports também e então isso pode ser feito automaticamente. Obrigado!
Tim Stoop
5

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

não é conveniente, eu sei .. mas é o caminho certo para fazer as coisas sem ter problemas no futuro (IMHO, é claro)

drAlberT
fonte
Que problemas no futuro você esperaria com isso?
Tim Stoop
1
- se o debian projetou seu sistema para funcionar de uma maneira que eu "suponha" que eles tenham suas boas razões;) (consulte as instruções de backports ) - fixando toda a fonte, você dá uma prioridade mais alta a um grande número de pacotes sendo recompilados de testes e instáveis ​​e não testado como o couterparts estável - a filosofia usada -té permitir que o pacote instale suas dependências .. "faça estritamente o que você precisa" .. - é uma abordagem de lista de tempo: faça o que você sabe fazer, quando necessário
drAlberT
2
Isto não tem upvotes suficientes
John Blackberry
1

Altere a linha superior em suas preferências para

Package: linux-image-*

Corre

apt-get update

Tente instalar novamente. Se você ainda receber o erro, verifique

aptitude why-not linux-image-3.16.0-0.bpo.4-amd64
Cedric Knight
fonte
Não funciona Adicionado o comando output à minha pergunta.
Tim Stoop
OK, obrigado por tentar. Eu estaria inclinado a usar o aptituderesolvedor interativamente para identificar o problema. Talvez linux-*para incluir outras dependências? É possível adicionar APT::Default-Release "wheezy-backports";temporariamente à configuração?
Cedric Knight
Na verdade, removemos o aptitude de todos os nossos servidores, tive que instalá-lo para fazer o teste. Portanto, isso não será viável. Adicionar temporariamente a opção de configuração não é viável e, honestamente, não é realmente uma boa solução :) Tenho certeza de que isso deve ser possível com o apt-get sem hacks, simplesmente não consigo descobrir como!
Tim Stoop