Resolución de dependencias de APT Pinning

Estoy tratando de dominar cómo funciona el APT pinning en Debian, pero me cuesta entender cómo resuelve las prioridades.

Tengo un archivo source.list que tiene las siguientes entradas en este orden exacto:

deb <repository> stretch main deb <repository> testing main deb <repository> unstable main 

El siguiente repositorio contiene estos paquetes por rama:

  • stretch contiene el paquete dependency version 1.0;
  • las pruebas contienen el paquete dependency version 2.0;
  • inestable contiene los paquetes program y dependency version 2.0;

El paquete program depende de dependency version 2.0.

Necesito instalar el package program, pero quiero instalar la menor cantidad posible de paquetes desde unstable, así que creo el siguiente preferences archivo para fijar esta rama:

Package: * Pin: release a=unstable Pin-Priority: -1 

Si entiendo nd correctamente cómo funciona, debería instalar paquetes de unstable solo cuando le diga explícitamente a APT que lo haga.

También creo un apt.conf para garantizar que la rama stable sea la predeterminada:

APT::Default-Release "stable"; 

Después de ejecutar el comando apt-get update, las ramas deben tener las siguientes prioridades:

stable: 990 testing: 500 unstable: -1 

Ahora quiero instalar el paquete program, para hacerlo, ejecuto el siguiente comando:

apt-get install -t unstable program 

Así que ahora mi pregunta es, de qué rama APT extraerá el paquete dependency version 2.0? Como tanto testing como unstable tienen la misma versión del paquete, ¿cuál se elegirá?

Si yo entender correctamente, APT con la opción -t unstable, establecerá una prioridad 990 para los paquetes que pertenecen a unstable, pero por lo que he experimentado , lo extrae de testing.

Entonces, ¿por qué APT extrae paquetes de testing que tiene una prioridad de 500 mientras que unstable está configurado en 990? Además, ¿cuál sería la forma óptima de instalar la menor cantidad posible de paquetes desde unstable?

Comentarios

  • Si la versión es la misma, entonces el archivo es igual también. Apt elige la más rápida o la primera espejo definido, pero la URL del archivo descargado es la misma. Compruébelo usted mismo. Los repositorios de Debian no ' t almacenan dos archivos / versión idénticos de un paquete debido a problemas de espacio en disco.

Respuesta

Esto se explica en el apt_preferences página de manual :

Varias versiones de un paquete pueden estar disponibles para su instalación cuando el archivo sources.list (5) contiene referencias a más de una distribución (por ejemplo, estable y de prueba). APT asigna una prioridad a cada versión disponible. Sujeto a las restricciones de dependencia, apt-get selecciona la versión con la mayor prioridad para la instalación. Las preferencias de APT anulan las prioridades que APT asigna a las versiones del paquete de forma predeterminada, lo que le da al usuario control sobre cuál se selecciona para la instalación.

Varias instancias de la misma versión de un paquete pueden estar disponibles cuando las fuentes El archivo .list (5) contiene referencias a más de una fuente. En este caso, apt-get descarga la instancia que aparece antes en el archivo sources.list (5). Las preferencias de APT no afectan la elección de la instancia, solo la elección de la versión.

Las prioridades solo determinan qué versión (según lo especificado por el número de versión) de se instala un paquete. Una vez que se determina, se usa el primer repositorio de paquetes disponible para descargarlo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *