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