Quiero instalar un solo paquete (y sus dependencias, pero solo en la medida en que no se puedan satisfacer en Wheezy) de Debian Jessie en mi sistema Wheezy, sin actualizar "todo y el fregadero de la cocina" a las versiones de Jessie. Específicamente, me gustaría instalar kpcli, que está disponible empaquetado en Jessie pero no en Wheezy.
Todo lo que he encontrado indica que debo agregar los repositorios de Jessie a mi lista de fuentes, configurar la fijación para mantener todo en sibilancias y solo tomar el paquete único de jessie, y prácticamente encajará en su lugar. Sin embargo, no está cayendo en su lugar para mí. Si creo /etc/apt.d/sources.list.d/jessie.list con el siguiente contenido:
deb ftp://ftp.debian.org/debian/ jessie main
deb-src ftp://ftp.debian.org/debian/ jessie main
y luego crea /etc/apt/preferences.d/jessie con:
Package: *
Pin: release a=wheezy
Pin-Priority: 1001
Package: kpcli
Pin: release a=jessie
Pin-Priority: 450
y ejecuta apt-get -u update
seguido de apt-get -u install kpcli/jessie
, entonces espero que apt-get extraiga kpcli y quizás un pequeño puñado de otros paquetes de Jessie, y dejo intacto el resto de mi sistema instalado. (Mi sistema es una instalación completamente actualizada de Wheezy). Alternativamente, si tengo la prioridad del pin demasiado baja, espero que no haga nada. Más bien, en mi sistema, apt-get quiere actualizar varios cientos de paquetes.
Qué, exactamente, Qué se necesita para instalar solo este paquete único de una versión de Jessie y dejar intacto el resto de mi sistema Wheezy?
Tenga en cuenta que, en este caso particular, el software está escrito en Perl, por lo que no hay compilación a binario ni nada por el estilo; sin embargo, hay un puñado de dependencias de módulos de Perl. Por lo tanto, una posible alternativa sería instalar el .deb (descargado manualmente) usando algo que solo (1) permite especificar un único archivo .deb local que se va a instalar, como dpkg -i
, y (2) maneja las dependencias de una manera inteligente, lo que simplemente dpkg -i
no. Sin embargo, a pesar de todas las búsquedas que he realizado en varias ocasiones y no pude encontrar una guía fácil de seguir sobre cómo hacer esto, una solución genérica (una que también funcione para paquetes compilados binarios) sería excelente. .
Respuesta aceptada:
Para cada entrada (estable, en prueba, inestable) tiene prioridad de pin 500. No debe usar pin> 1000. Uso 1001 solo cuando quiero degradar algo. Tengo entradas testing+sid+experimental especificadas en /etc/apt/sources.list
y el siguiente /etc/apt/preferences
archivo:
Package: *
Pin: release o=Debian,a=testing
Pin-Priority: 900
Package: *
Pin: release o=Debian,a=experimental
Pin-Priority: 130
El valor 500 es predeterminado para inestable. Por lo tanto, intentemos comprobar Iceweasel:
# apt-cache policy iceweasel
iceweasel:
Installed: (none)
Candidate: 17.0.10esr-1~deb7u1
Version table:
26.0-1 0
130 http://ftp.pl.debian.org/debian/ experimental/main amd64 Packages
24.2.0esr-1 0
500 http://ftp.pl.debian.org/debian/ sid/main amd64 Packages
17.0.10esr-1~deb7u1 0
900 http://ftp.pl.debian.org/debian/ testing/main amd64 Packages
Entonces, si intentara instalar iceweasel, se descargaría de la rama de prueba porque tiene la prioridad más alta.
Relacionado:¿Diseño xkb personalizado en el que una tecla crea dos puntos de código Unicode?Intenta cambiar las prioridades a:
Package: *
Pin: release a=wheezy
Pin-Priority: 900
Package: kpcli
Pin: release a=jessie
Pin-Priority: 910