Me pregunto cuál es el comportamiento de apt cuando se publican varias versiones principales del mismo paquete. Por ejemplo, si tengo un paquete llamado foo
con la última versión de 1.0.0
y publico la versión 2.0.0
y, a continuación, publicar la versión 1.1.0
después, que será considerado como el último paquete cuando se ejecute sudo apt update
y sudo apt install foo
: el último paquete publicado (en este caso 1.1.0
) o el paquete con el número de versión más alto (en este caso 2.0.0
)?
Respuestas
¿Demasiados anuncios?Por defecto, apt
descarga el paquete con el número de versión más alto (aunque no sea la última versión publicada).
Sin embargo, si ambos paquetes están disponibles en repositorios separados, puede instalar la versión anterior con sudo apt install foo=1.1.0
.
Después, puede evitar que ese paquete específico se actualice a la versión 2.0.0, sudo apt-mark hold foo
.
(Para revertir este comportamiento, tendrá que deshacer el paquete).
Se basa en una serie de condiciones que se evalúan por orden:
- Prioridad del paquete. Cuanto mayor sea la prioridad, se preferirá ese paquete concreto, aunque eso suponga un "downgrade". Si dos paquetes tienen la misma prioridad, seguirá
- Época. Es el número que precede a los dos puntos y que normalmente sirve para expresar un cambio de versión en el upstream. Si no se especifica ninguna época, se asume 0.
- Versión ascendente. Es la versión básica del paquete, y suele ir antes del guión. Se evalúa como otros esquemas de versión que utilizan puntos. Cada valor se evalúa posicionalmente por grupos divididos por los puntos, de izquierda a derecha. El algoritmo exacto es descrito en el documento de política de Debian .
- La versión de Debian. Después del guión. Igual que la versión de la línea de producción.
En otras palabras, siempre intentará instalar el número de versión más alto, a menos que incluya una época diferente o lo fije usando prioridades. dpkg ignorará todo esto y sólo se asegurará de que las dependencias se cumplan.