Instale el núcleo de Debian Backports automáticamente

8

Tengo el siguiente conjunto de pinnings:

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

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

Obtuve el siguiente error:

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

Las políticas parecen ser correctas:

$ 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

Entonces no entiendo el error. ¿Qué estoy haciendo mal?

Estoy tratando de usar Puppet para actualizar todas las máquinas Wheezy al kernel de backports (se planea una racha de reinicio), por eso quiero resolverlo correctamente. Podría iniciar sesión manualmente en todos los servidores para ejecutar:

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

Lo que funciona, pero no es tan conveniente.

ACTUALIZAR

De acuerdo a lo 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
fuente

Respuestas:

3

Compruebe de qué depende ese paquete y qué necesitan esas dependencias también. Por ejemplo, veo esto para mi máquina:

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

y

# 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 si las dependencias también se toman de los backports.

estimular
fuente
Eso ya se explicó en mi pregunta ...
Tim Stoop
1
No veo nada sobre cómo anclar la versión de dependencias en su pregunta. debe configurar una prioridad más alta para los paquetes necesarios para linux-image-3.16.0-0.bpo.4-amd64. mira esto: 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. Si usa, dracutpor ejemplo, Wheezy tiene versión 020-2 0, mientras que los backports sí 040+1-1 0. En este caso, también debe aumentar la prioridad del paquete Dracut que se tomará de los backports.
estimular
¿No se incluirían también cuando lo instale a través de 'apt-get -t wheezy-backports install linux-image-amd64'?
Tim Stoop
1
Lo hará, si lo haces cumplir -t wheezy-backports. Pero esta aplicación también instalará todas las versiones más nuevas para las dependencias no instaladas de los backports, independientemente de si las versiones estables son suficientes o no. Si necesita instalar solo un número limitado y controlado de paquetes desde backports, necesita rastrear las dependencias y anclarlas manualmente. Si no te importa eso, sigue adelante y hazlo completo -t *backports.
estimular el
Ah lo tengo, tienes razón. También necesitaba recuperar las herramientas initramfs de los puertos y luego se puede hacer automáticamente. ¡Gracias!
Tim Stoop
5

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

no es conveniente, lo sé ... pero es la forma correcta de hacer las cosas sin tener problemas en el futuro (en mi humilde opinión, por supuesto)

drAlberT
fuente
¿Qué problemas en el futuro esperarías con esto?
Tim Stoop
1
- si Debian ha diseñado su sistema para que funcione de una manera, "supongo" que tienen su buena razón;) (vea las instrucciones de backports ) - al fijar la fuente completa, le da mayor prioridad a una gran cantidad de paquetes que se están volviendo a compilar para probarlos e inestables y no probado como los componentes estables - la filosofía que se usa -tes dejar que el paquete instale sus dependencias .. "haga estrictamente lo que necesita" .. - es un enfoque de lista de tiempo: haga lo que sabe hacer cuando lo necesita
drAlberT
2
Esto no tiene suficientes votos a favor
John Blackberry
1

Cambie la línea superior en sus preferencias a

Package: linux-image-*

correr

apt-get update

Intenta instalar de nuevo. Si aún recibe el error, verifique

aptitude why-not linux-image-3.16.0-0.bpo.4-amd64
Cedric Knight
fuente
No funciona Agregué el resultado del comando a mi pregunta.
Tim Stoop
OK, gracias por intentarlo. Me inclinaría a usar aptitudeel solucionador de forma interactiva para identificar el problema. Tal vez linux-*para incluir otras dependencias? ¿Es factible agregar APT::Default-Release "wheezy-backports";temporalmente a la configuración?
Cedric Knight
De hecho, eliminamos aptitude de todos nuestros servidores, tuve que instalarlo para hacer la prueba. Entonces eso no será factible. Agregar la opción de configuración temporalmente no es factible y, sinceramente, no es realmente una buena solución :) Estoy bastante seguro de que esto debería ser posible con apt-get sin ningún truco, ¡simplemente no puedo entender cómo!
Tim Stoop