table of contents
APT_PREFERENCES(5) | APT | APT_PREFERENCES(5) |
NOMBRE¶
apt_preferences - Fichero de preferencias de APT
DESCRIPCIÓN¶
El fichero de preferencias de APT /etc/apt/preferences y los segmentos de fichero dentro del directorio /etc/apt/preferences.d/ se pueden usar para controlar las versiones de los paquetes seleccionados para su instalación.
Puede disponer de varias versiones de un mismo paquete cuando el fichero sources.list(5) contiene referencias a más de una distribución (por ejemplo, «stable» (estable) y «testing» (en pruebas)). APT asigna una prioridad a cada versión disponible, y limitado por las dependencias, apt-get selecciona la versión con mayor prioridad. Las preferencias de APT modifican las prioridades que APT asigna de forma predeterminada a las versiones de paquetes, dando control al usuario sobre qué versión se seleccionará para su instalación.
Puede que estén disponibles varios ejemplares de la misma versión de un paquete cuando el fichero «sources.list(5)» contenga referencias a más de una fuente. En este caso apt-get descarga el ejemplar que aparezca listado primero en el fichero «sources.list(5)». Las preferencias de APT no modifican la elección del ejemplar, sólo la elección de la versión.
Las preferencias («preferences») son un gran poder en las manos de un administrador de sistemas, pero también se pueden convertir en su mayor pesadilla si se utilizan sin cuidado. APT no se cuestionará si las preferencias contienen opciones erróneas, lo que puede generar casos de paquetes no instalables o una toma de decisiones errónea al actualizar paquetes. Pueden surgir más problemas si se mezclan varias publicaciones de distribución sin un correcto entendimiento de los siguientes párrafos. Los paquetes incluidos en una distribución específica no se comprueban en combinación con otras distribuciones más antiguas o más recientes, y puede que no funcionen como se espera. Queda avisado.
Tenga en cuenta que los ficheros bajo el directorio /etc/apt/preferences.d se analizan en orden ascendente alfanumérico, y sus nombres deben cumplir la siguiente convención: el fichero no tiene extensión, o tiene la extensión pref, y solo contiene caracteres alfanuméricos, guión (-), guión bajo (_) y punto (.). En caso contrario APT informa que ha omitido un fichero, a menos que este fichero coincida con un patrón en la lista de configuración Dir::Ignore-Files-Silently. Si coincide, el fichero se ignora silenciosamente.
Asignación de prioridades predeterminadas de APT¶
De no existir el fichero de preferencias, o si no hay ninguna entrada en éste que se pueda aplicar a una determinada versión, se asigna a la versión la prioridad de la distribución a la que pertenece. Es posible seleccionar una distribución, la >>distribución objetivo<< (n. t. del inglés target release), que recibe una prioridad predefinida mayor que el resto. La distribución objetivo se puede definir en la línea de órdenes al ejecutar apt-get o en el fichero de configuración de APT /etc/apt/apt.conf. Tenga en cuenta que esto tiene preferencia sobre cualquier otra prioridad definida en /etc/apt/preferencias, pero que no afecta al anclaje de paquetes específicos. Por ejemplo,
apt-get install -t testing paquete
APT::Default-Release "stable";
Si se ha especificado una distribución objetivo, APT usa el siguiente algoritmo para establecer las prioridades de cada versión de un paquete. Asignar:
priority 1
prioridad 100
prioridad 500
prioridad 990
Si no se define la versión objetivo, APT asigna una prioridad 100 a la versión de todos los paquetes instalados, y una prioridad 500 a todas las versiones no instaladas de paquete, a excepción de las provenientes de archivos con la opción «NotAutomatic: yes» en su fichero Release. Estas versiones reciben la prioridad 1 o 100 si también se define la opción «ButAutomaticUpgrades: yes».
APT aplica las siguientes normas, expuestas por orden de precedencia, para determinar qué versión del paquete debe instalar.
Generalmente, la versión instalada del paquete (prioridad 100) no es tan reciente como la disponible a través de las fuentes en «sources.list(5)» (prioridad 500 o 990). En este caso, el paquete se actualizará al ejecutar apt-get install paquete o apt-get upgrade.
Rara vez la versión instalada de un paquete es más reciente que cualquiera de las versiones disponibles. En éste caso no se instalará la versión anterior del paquete al ejecutar apt-get install paquete o apt-get upgrade.
A veces, la versión instalada de un paquete es más reciente que la versión perteneciente a la distribución objetivo, pero no tan reciente como la versión de otra distribución. Este tipo de paquetes se actualizarán al ejecutar apt-get install paquete o apt-get upgrade porque al menos uno de los ejemplares disponibles tiene una prioridad mayor que la versión instalada.
Phased Updates¶
APT understands a field called Phased-Update-Percentage which can be used to control the rollout of a new version. It is an integer between 0 and 100.
A system's eligibility to a phased update is determined by seeding random number generator with the package source name, the version number, and /etc/machine-id, and then calculating an integer in the range [0, 100]. If this integer is larger than the Phased-Update-Percentage, the version is pinned to 1, and thus held back. Otherwise, normal policy rules apply.
In case you have multiple systems that you want to receive the same set of updates, you can set APT::Machine-ID to a UUID such that they all phase the same, or set APT::Get::Never-Include-Phased-Updates or APT::Get::Always-Include-Phased-Updates to true such that APT will never/always consider phased updates.
El efecto de las preferencias sobre APT¶
El fichero de preferencias de APT permite al administrador del sistema controlar la asignación de prioridades. El fichero consiste en uno o más registros de varias líneas separados entre sí por espacios en blanco. Los registros pueden tener una de estos dos formatos: el específico o el general.
Package: perl Pin: version 5.32* Pin-Priority: 1001
Esta entrada con formato general en el fichero de preferencias de APT sólo afecta a grupos de paquetes. Por ejemplo, el siguiente registro asigna una prioridad alta a todas las versiones disponibles desde un sitio local.
Package: * Pin: origin "" Pin-Priority: 999
Una nota de aviso: la palabra clave usada aquí es «origin», el cual se puede usar para coincidir con un nombre de sistema. El siguiente registro asignará una prioridad alta a todas las versiones disponibles desde el servidor identificado con el nombre de sistema «ftp.de.debian.org».
Package: * Pin: origin "ftp.de.debian.org" Pin-Priority: 999
No se debe confundir con el origen («Origin») de una distribución tal y como se especifica un fichero Release. Lo que sigue a la etiqueta «Origin:» en un fichero Release no es la dirección de un sitio de Internet, sino el autor o el nombre del proveedor, tales como «Debian» o «Ximian».
El siguiente registro asigna una prioridad baja a todas las versiones de los paquetes pertenecientes a cualquier distribución que tenga como nombre de archivo de paquetes «unstable» (inestable).
Package: * Pin: release a=unstable Pin-Priority: 50
El siguiente registro asigna una prioridad alta a todas las versiones de los paquetes pertenecientes a cualquier distribución que tenga como nombre clave «trixie».
Package: * Pin: release n=trixie Pin-Priority: 900
El siguiente registro asigna una prioridad alta a todas las versiones de los paquetes pertenecientes a cualquier publicación que tenga como nombre de archivo de paquetes «stable» y como número de versión «12».
Package: * Pin: release a=stable, v=12 Pin-Priority: 500
The effect of the comma operator is similar to an "and" in logic: All conditions must be satisfied for the pin to match. There is one exception: For any type of condition (such as two "a" conditions), only the last such condition is checked.
Matching packages in the Package field¶
The Package field specifies the package that a pinning priority is applied to. The field can either contain a binary package name, a source package name (prefixed with "src:"), a glob(7) expression or a regular expression (surrounded by slashes). Multiple package names, glob(7) expressions and regular expressions can be listed separated by whitespace in which case the record will match any of the matched packages.
By default, only packages of the native architecture are matched. To match binary packages of any architecture, add the :any suffix to the package name. You can also limit matching to a specific architecture by appending the architecture name to the package name, separated by a colon character.
For example, the following example uses a glob expression and a regular expression to assign the priority 500 to all packages from experimental where the name starts with gnome (as a glob(7)-like expression) or contains the word kde (as a POSIX extended regular expression surrounded by slashes).
Package: gnome* /kde/ Pin: release a=experimental Pin-Priority: 500
La regla para estas expresiones es que pueden aparecer donde lo hace una cadena. Por ello, el siguiente anclaje asigna la prioridad 990 a todos los paquetes provenientes de una publicación a partir de lunar.
Package: * Pin: release n=lunar* Pin-Priority: 990
Si se detecta una expresión regular en un campo «Package», el comportamiento sera igual que sustituir esta expresión regular con una lista de todos los nombres de paquetes con los que coincide. No se ha decidido si esto se modificará en el futuro. Por ello, siempre debe enumerar los comodines de anclaje en primer lugar, para que los anclajes específicos los anulen en caso de ser necesario. El patrón «*» en un campo «Package» no se considera una expresión glob(7).
To pin all binaries produced by the apt source package of this APT's version to 990, you can do:
Package: src:apt Pin: version 2.9.8 Pin-Priority: 990
Source package pinning can be combined with regular expressions and glob patterns, and can also take a binary architecture.
For example, let's pin all binaries for all architectures produced by any source package containing apt in its name to 990:
Package: src:*apt*:any Pin: version * Pin-Priority: 990
The :any suffix makes sure to select binary packages from any architecture. Without that suffix, apt implicitly assumes the :native suffix which would only select packages from the native architecture.
Interpretación de APT de las prioridades¶
Las prioridades (P) asignadas en el fichero de preferencias de APT deben ser números enteros positivos o negativos. Se interpretan (en general) del siguiente modo:
P >= 1000
990 <= P < 1000
500 <= P < 990
100 <= P < 500
0 < P < 100
P < 0
P = 0
The first specific-form record matching an available package version determines the priority of the package version. Failing that, the priority of the package is defined as the maximum of all priorities defined by generic-form records matching the version. Records defined using patterns in the Pin field other than "*" are treated like specific-form records.
Por ejemplo, suponga que el fichero de preferencias de APT contiene los tres registros antes mencionados:
Package: perl Pin: version 5.32* Pin-Priority: 1001 Package: * Pin: origin "" Pin-Priority: 999 Package: * Pin: release unstable Pin-Priority: 50
Por ello:
Determinar la versión del paquete y las propiedades de la distribución¶
Los recursos listados en el fichero «sources.list(5)» deben proporcionar los ficheros Packages y Release. Éstos describen los paquetes disponibles en cada uno de los sitios.
El fichero Packages se suele encontrar en el directorio .../dists/nombre-dist/componente/arquitectura, por ejemplo, .../dists/stable/main/binary-i386/Packages. Este fichero consiste en una serie de registros de varias líneas, uno por cada paquete disponible en ese directorio. Sólo dos líneas en cada registro son relevantes a la hora de definir las prioridades de APT:
La línea Package:
La línea Version:
El fichero Release se suele encontrar en el directorio .../dists/nombre-dist, por ejemplo .../dists/stable/Release o .../dists/bookworm/Release. El fichero consiste en registros de una sola línea que se aplican a todos los paquetes por debajo del directorio padre. Al contrario que el fichero Packages, casi todas las líneas del fichero Release son relevantes para las prioridades de APT:
Las líneas Archive: o Suite:
Pin: release a=stable
La línea Codename:
Pin: release n=trixie
La línea Version:
Pin: release v=12 Pin: release a=stable, v=12 Pin: release 12
La línea Component:
Pin: release c=main
La línea Origin:
Pin: release o=Debian
La línea Label:
Pin: release l=Debian
Todos los ficheros Packages y Release obtenidos de los recursos en «sources.list(5)» se guardan en el directorio /var/lib/apt/lists, o en el directorio definido por la variable Dir::State::Lists, que se puede definir en el fichero apt.conf. Por ejemplo, el fichero debian.lcs.mit.edu_debian_dists_unstable_contrib_binary-i386_Release contiene los ficheros Release obtenidos de debian.lcs.mit.edu para la arquitectura binary-i386 de la sección contrib de la distribución «unstable» (inestable).
Líneas opcionales en el registro de preferencias de APT¶
Cada registro en el fichero de preferencias de APT puede comenzar con una o más líneas que tengan como primera palabra Explanation:. Útil para comentarios.
EJEMPLOS¶
Seguir la distribución «stable» (estable)¶
El siguiente fichero de preferencias de APT provoca que APT asigne una prioridad mayor de la que asigna por omisión (500) a todas las versiones de paquete de la distribución stable y una prioridad más baja al resto de versiones de paquetes de otras distribuciones Debian.
Explanation: Desinstalar o no instalar los ejemplares que no Explanation: pertenecen a la distribución estable Package: * Pin: release a=stable Pin-Priority: 900 Package: * Pin: release o=Debian Pin-Priority: -10
Con un fichero «sources.list(5)» adecuado y el fichero de preferencias mostrado anteriormente, cualquiera de las siguientes órdenes de APT hace que o bien todo el sistema o bien sólo algunos paquetes se actualicen a la última versión en stable.
apt-get install paquete apt-get upgrade apt-get dist-upgrade
La siguiente orden hace que APT actualice un paquete a la última versión de la distribución testing, el paquete no se actualizará de nuevo a menos que se ejecute la orden otra vez.
apt-get install paquete/testing
Seguir la distribución «testing» (en pruebas) o «unstable» (inestable)¶
El siguiente fichero de preferencias de APT provocará que APT asigne mayor prioridad a las versiones de la distribución testing, una prioridad menor a los paquetes de la distribución unstable, y una prioridad prohibitiva a los paquetes de otras distribuciones de Debian.
Package: * Pin: release a=testing Pin-Priority: 900 Package: * Pin: release a=unstable Pin-Priority: 800 Package: * Pin: release o=Debian Pin-Priority: -10
Con un fichero sources.list(5) adecuado y el fichero de preferencias anterior cualquiera de las siguientes órdenes hará que APT actualice los paquetes a la última versión de la distribución testing.
apt-get install paquete apt-get upgrade apt-get dist-upgrade
La siguiente orden hace que APT actualice un determinado paquete a la última versión de la distribución unstable. Más tarde, apt-get upgrade actualizará el paquete a la última versión de la distribución testing si es más reciente que la versión instalada. De otro modo, se instalará la versión más reciente de la distribuciónunstable si es más reciente que la versión instalada.
apt-get install paquete/unstable
Seguir la evolución de una publicación por el nombre¶
El siguiente fichero de preferencias de APT provocará que APT asigne una prioridad superior a la predeterminada (500) a todas las versiones de paquetes pertenecientes a un nombre de distribución especificado, y una prioridad prohibitivamente baja a las versiones de paquetes pertenecientes a otras distribuciones de Debian, nombres clave y archivos Debian. Tenga en cuenta que con esta preferencia, APT seguirá la migración de una publicación desde el archivo testing a stable y por último oldstable. Si desea seguir, por ejemplo, el progreso en testing obviando el nombre de la publicación, debería usar los ejemplos de configuración mencionados anteriormente.
Explanation: Eliminar o no instalar cualquier paquete de Debian cuya versión sea Explanation: distinta a aquellos en las distribuciones de nombre squeeze o sid Package: * Pin: release n=trixie Pin-Priority: 900 Explanation: El nombre clave de Debian «unstable» siempre es sid Package: * Pin: release n=sid Pin-Priority: 800 Package: * Pin: release o=Debian Pin-Priority: -10
Con un fichero «sources.list(5)» adecuado y el fichero de preferencias mostrado anteriormente, cualquiera de las siguientes órdenes provocará que APT actualice los paquetes a la última versión de la distribución llamada trixie.
apt-get install paquete apt-get upgrade apt-get dist-upgrade
La siguiente orden hace que APT actualice un determinado paquete a la última versión de la distribución sid. Más tarde, apt-get upgrade actualizará el paquete a la última versión de la distribucióntrixie si es más reciente que la versión instalada. De otro modo, se instalará la versión más reciente de la distribución sid si es más reciente que la versión instalada.
apt-get install paquete/sid
FICHEROS¶
/etc/apt/preferences
/etc/apt/preferences.d/
VÉASE TAMBIÉN¶
BUGS¶
Página de errores de APT[1]. Si quiere informar de un error en APT, consulte /usr/share/doc/debian/bug-reporting.txt o use la orden reportbug(1).
TRADUCCIÓN¶
La traducción al español la realizaron Ismael Fanlo, Carlos Mestre, Rudy Godoy, Gustavo Saldumbide, Javier Fernández-Sanguino y Rubén Porras Campo entre los años 2003 y 2004. La traducción fue actualizada por Francisco Javier Cuadrado y Omar Campagne Polaino entre los años 2009 y 2012 .
Tenga en cuenta que este documento puede contener secciones sin traducir. Esto es intencionado para evitar perder contenido cuando la traducción no está actualizada con respecto al documento original.
AUTOR¶
Equipo de APT
NOTAS¶
- 1.
- Página de errores de APT
03 Enero 2022 | APT 2.9.8 |