APT_PREFERENCES(5) APT APT_PREFERENCES(5) NOMBRE apt_preferences - Fichero de preferencias de APT DESCRIPCION 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 instalacion. Puede disponer de varias versiones de un mismo paquete cuando el fichero sources.list(5) contiene referencias a mas de una distribucion (por ejemplo, <> (estable) y <> (en pruebas)). APT asigna una prioridad a cada version disponible, y limitado por las dependencias, apt-get selecciona la version 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 que version se seleccionara para su instalacion. Puede que esten disponibles varios ejemplares de la misma version de un paquete cuando el fichero <> contenga referencias a mas de una fuente. En este caso apt-get descarga el ejemplar que aparezca listado primero en el fichero <>. Las preferencias de APT no modifican la eleccion del ejemplar, solo la eleccion de la version. Las preferencias (<>) son un gran poder en las manos de un administrador de sistemas, pero tambien se pueden convertir en su mayor pesadilla si se utilizan sin cuidado. APT no se cuestionara si las preferencias contienen opciones erroneas, lo que puede generar casos de paquetes no instalables o una toma de decisiones erronea al actualizar paquetes. Pueden surgir mas problemas si se mezclan varias publicaciones de distribucion sin un correcto entendimiento de los siguientes parrafos. Los paquetes incluidos en una distribucion especifica no se comprueban en combinacion con otras distribuciones mas antiguas o mas 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 alfanumerico, y sus nombres deben cumplir la siguiente convencion: el fichero no tiene extension, o tiene la extension pref, y solo contiene caracteres alfanumericos, guion (-), guion bajo (_) y punto (.). En caso contrario APT informa que ha omitido un fichero, a menos que este fichero coincida con un patron en la lista de configuracion Dir::Ignore-Files-Silently. Si coincide, el fichero se ignora silenciosamente. Asignacion de prioridades predeterminadas de APT De no existir el fichero de preferencias, o si no hay ninguna entrada en este que se pueda aplicar a una determinada version, se asigna a la version la prioridad de la distribucion a la que pertenece. Es posible seleccionar una distribucion, la >>distribucion objetivo<< (n. t. del ingles target release), que recibe una prioridad predefinida mayor que el resto. La distribucion objetivo se puede definir en la linea de ordenes al ejecutar apt-get o en el fichero de configuracion 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 especificos. Por ejemplo, apt-get install -t testing paquete APT::Default-Release "stable"; Si se ha especificado una distribucion objetivo, APT usa el siguiente algoritmo para establecer las prioridades de cada version de un paquete. Asignar: priority 1 to the versions coming from archives which in their Release files are marked as "NotAutomatic: yes" but not as "ButAutomaticUpgrades: yes" like the Debian experimental archive, as well as versions that are not phased on this systems. prioridad 100 A la version ya instalada (si existe) y a las versiones provenientes de archivos con las opciones <> y <> en su fichero Release, como el archivo Debian de paquetes adaptados a una version anterior (<>) a partir de squeeze-backports. prioridad 500 to the versions that do not belong to the target release. prioridad 990 to the versions that belong to the target release. The highest of those priorities whose description matches the version is assigned to the version. Si no se define la version objetivo, APT asigna una prioridad 100 a la version de todos los paquetes instalados, y una prioridad 500 a todas las versiones no instaladas de paquete, a excepcion de las provenientes de archivos con la opcion <> en su fichero Release. Estas versiones reciben la prioridad 1 o 100 si tambien se define la opcion <>. APT aplica las siguientes normas, expuestas por orden de precedencia, para determinar que version del paquete debe instalar. o Nunca instala una version anterior de un paquete en lugar de la instalada a menos que la prioridad de la version disponible supere 1000 (<> significa instalar una version menos reciente de un paquete. Tenga en cuenta que ninguna de las prioridades que asigna APT por omision superan 1000; estas prioridades solo se pueden establecer mediante el fichero de preferencias. Observe que instalar una version anterior del paquete puede ser peligroso). o Instala la version de mayor prioridad. o Si dos o mas versiones tienen la misma prioridad, instala la mas reciente (esto es, la que tiene un numero de version mayor). o Si dos o mas versiones tienen la misma prioridad y numero de version, pero o bien difieren en su meta-informacion o se ha introducido la opcion --reinstall, se instalara la que no esta instalada. Generalmente, la version instalada del paquete (prioridad 100) no es tan reciente como la disponible a traves de las fuentes en <> (prioridad 500 o 990). En este caso, el paquete se actualizara al ejecutar apt-get install paquete o apt-get upgrade. Rara vez la version instalada de un paquete es mas reciente que cualquiera de las versiones disponibles. En este caso no se instalara la version anterior del paquete al ejecutar apt-get install paquete o apt-get upgrade. A veces, la version instalada de un paquete es mas reciente que la version perteneciente a la distribucion objetivo, pero no tan reciente como la version de otra distribucion. Este tipo de paquetes se actualizaran al ejecutar apt-get install paquete o apt-get upgrade porque al menos uno de los ejemplares disponibles tiene una prioridad mayor que la version 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 asignacion de prioridades. El fichero consiste en uno o mas registros de varias lineas separados entre si por espacios en blanco. Los registros pueden tener una de estos dos formatos: el especifico o el general. o El formato <> asigna una prioridad (<>) a uno mas paquetes definidos con una version o un rango de versiones especificados. Por ejemplo, el siguiente registro asigna una prioridad alta a todas las versiones del paquete perl cuyo numero de version empiece con <<5.32>>. Puede especificar varios paquetes separados por espacios. Package: perl Pin: version 5.32* Pin-Priority: 1001 o El formato habitual asigna una prioridad a todas las versiones de los paquetes en una distribucion (esto es, a todas las versiones de paquetes listados en un fichero Release particular), o a todas las versiones de un paquete provenientes de un sitio concreto en Internet, identificado por su nombre de dominio. Esta entrada con formato general en el fichero de preferencias de APT solo 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 aqui es <>, el cual se puede usar para coincidir con un nombre de sistema. El siguiente registro asignara una prioridad alta a todas las versiones disponibles desde el servidor identificado con el nombre de sistema <>. Package: * Pin: origin "ftp.de.debian.org" Pin-Priority: 999 No se debe confundir con el origen (<>) de una distribucion tal y como se especifica un fichero Release. Lo que sigue a la etiqueta <> en un fichero Release no es la direccion de un sitio de Internet, sino el autor o el nombre del proveedor, tales como <> o <>. El siguiente registro asigna una prioridad baja a todas las versiones de los paquetes pertenecientes a cualquier distribucion que tenga como nombre de archivo de paquetes <> (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 distribucion que tenga como nombre clave <>. 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 publicacion que tenga como nombre de archivo de paquetes <> y como numero de version <<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 publicacion a partir de lunar. Package: * Pin: release n=lunar* Pin-Priority: 990 Si se detecta una expresion regular en un campo <>, el comportamiento sera igual que sustituir esta expresion regular con una lista de todos los nombres de paquetes con los que coincide. No se ha decidido si esto se modificara en el futuro. Por ello, siempre debe enumerar los comodines de anclaje en primer lugar, para que los anclajes especificos los anulen en caso de ser necesario. El patron <<*>> en un campo <> no se considera una expresion 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.6 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. Interpretacion de APT de las prioridades Las prioridades (P) asignadas en el fichero de preferencias de APT deben ser numeros enteros positivos o negativos. Se interpretan (en general) del siguiente modo: P >= 1000 La version se instala incluso si es una version anterior a la instalada en el sistema. 990 <= P < 1000 La version se instala aunque no venga de la distribucion objetivo, a menos que la version instalada sea mas reciente. 500 <= P < 990 La version se instala a menos que exista otro ejemplar disponible perteneciente a la distribucion objetivo, o bien si la version instalada es mas reciente. 100 <= P < 500 La version se instala a menos que exista una version disponible perteneciente a otra distribucion, o si la version instalada es mas reciente. 0 < P < 100 La version solo se instala si no hay ninguna version del paquete instalada. P < 0 Evita la instalacion de la version. P = 0 has undefined behaviour, do not use it. 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: o La version mas reciente disponible del paquete perl se instalara siempre que el numero de version empiece con <<5.32>>. De existir cualquier version 5.32* disponible de perl, y si la version instalada es 5.36*, se instalara una version anterior de perl. o Cualquier otra version de un paquete distinto de perl disponible desde el sistema local tiene prioridad sobre el resto de las versiones, incluso sobre los pertenecientes a la distribucion objetivo. o Otras versiones que tengan un origen distinto al sistema local listadas en <> y que pertenezcan a la distribucion unstable solo se instalaran si se seleccionan para su instalacion y si no hay ninguna version del paquete ya instalado. Determinar la version del paquete y las propiedades de la distribucion Los recursos listados en el fichero <> deben proporcionar los ficheros Packages y Release. Estos 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 lineas, uno por cada paquete disponible en ese directorio. Solo dos lineas en cada registro son relevantes a la hora de definir las prioridades de APT: La linea Package: indica el nombre del paquete. La linea Version: indica el numero de version del paquete. 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 linea que se aplican a todos los paquetes por debajo del directorio padre. Al contrario que el fichero Packages, casi todas las lineas del fichero Release son relevantes para las prioridades de APT: Las lineas Archive: o Suite: indican el nombre del archivo al que pertenecen todos los paquetes del arbol de directorios. Por ejemplo, la linea <> o <> especifica que todos los paquetes en el arbol de directorios por debajo del directorio raiz marcado en el fichero Release estan en un archivo <> (estable). Para especificar una preferencia de acuerdo con este parametro tendra que insertar la siguiente linea en el fichero de preferencias de APT: Pin: release a=stable La linea Codename: indica el nombre de la distribucion a la que pertenecen todos los paquetes del arbol de directorios. Por ejemplo, la linea <> especifica que todos los paquetes en el arbol de directorios por debajo del directorio padre marcado en el fichero Release pertenecen a la version llamada trixie. Para especificar una preferencia de acuerdo con este parametro tendra que poner una de las siguientes lineas en el fichero de preferencias de APT: Pin: release n=trixie La linea Version: nombra la version de la publicacion. Por ejemplo, los paquetes en el arbol pueden pertenecer a la version 12 de Debian. Observe que, generalmente, testing y unstable no tienen una version asignada porque no se han publicado. Para especificar una preferencia de acuerdo con este parametro tendra que poner una de las siguientes linea en el fichero de preferencias de APT: Pin: release v=12 Pin: release a=stable, v=12 Pin: release 12 La linea Component: indica la licencia asociada a los paquetes en el arbol de directorios correspondiente al fichero Release. Por ejemplo, la linea Component: main especifica que todos los paquetes en el arbol de directorios pertenecen a la seccion main, lo cual asegura que su licencia se ajusta a las Directrices sobre software libre de Debian (DFSG). Para especificar una preferencia de acuerdo con este parametro tendra que poner la siguiente linea en el fichero de preferencias de APT: Pin: release c=main La linea Origin: indica la procedencia de los paquetes en el arbol de directorios del fichero Release. La fuente mas comun es Debian. Puede definir esta fuente en el fichero de preferencias de APT mediante la siguiente linea: Pin: release o=Debian La linea Label: nombra la etiqueta de los paquetes en los arboles de directorios del fichero Release. Generalmente, es Debian. Puede definir esta etiqueta en el fichero de preferencias de APT mediante la siguiente linea: Pin: release l=Debian Todos los ficheros Packages y Release obtenidos de los recursos en <> 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 seccion contrib de la distribucion <> (inestable). Lineas opcionales en el registro de preferencias de APT Cada registro en el fichero de preferencias de APT puede comenzar con una o mas lineas que tengan como primera palabra Explanation:. Util para comentarios. EJEMPLOS Seguir la distribucion <> (estable) El siguiente fichero de preferencias de APT provoca que APT asigne una prioridad mayor de la que asigna por omision (500) a todas las versiones de paquete de la distribucion stable y una prioridad mas baja al resto de versiones de paquetes de otras distribuciones Debian. Explanation: Desinstalar o no instalar los ejemplares que no Explanation: pertenecen a la distribucion estable Package: * Pin: release a=stable Pin-Priority: 900 Package: * Pin: release o=Debian Pin-Priority: -10 Con un fichero <> adecuado y el fichero de preferencias mostrado anteriormente, cualquiera de las siguientes ordenes de APT hace que o bien todo el sistema o bien solo algunos paquetes se actualicen a la ultima version en stable. apt-get install paquete apt-get upgrade apt-get dist-upgrade La siguiente orden hace que APT actualice un paquete a la ultima version de la distribucion testing, el paquete no se actualizara de nuevo a menos que se ejecute la orden otra vez. apt-get install paquete/testing Seguir la distribucion <> (en pruebas) o <> (inestable) El siguiente fichero de preferencias de APT provocara que APT asigne mayor prioridad a las versiones de la distribucion testing, una prioridad menor a los paquetes de la distribucion 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 ordenes hara que APT actualice los paquetes a la ultima version de la distribucion testing. apt-get install paquete apt-get upgrade apt-get dist-upgrade La siguiente orden hace que APT actualice un determinado paquete a la ultima version de la distribucion unstable. Mas tarde, apt-get upgrade actualizara el paquete a la ultima version de la distribucion testing si es mas reciente que la version instalada. De otro modo, se instalara la version mas reciente de la distribucionunstable si es mas reciente que la version instalada. apt-get install paquete/unstable Seguir la evolucion de una publicacion por el nombre El siguiente fichero de preferencias de APT provocara que APT asigne una prioridad superior a la predeterminada (500) a todas las versiones de paquetes pertenecientes a un nombre de distribucion 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 seguira la migracion de una publicacion desde el archivo testing a stable y por ultimo oldstable. Si desea seguir, por ejemplo, el progreso en testing obviando el nombre de la publicacion, deberia usar los ejemplos de configuracion mencionados anteriormente. Explanation: Eliminar o no instalar cualquier paquete de Debian cuya version 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 <> siempre es sid Package: * Pin: release n=sid Pin-Priority: 800 Package: * Pin: release o=Debian Pin-Priority: -10 Con un fichero <> adecuado y el fichero de preferencias mostrado anteriormente, cualquiera de las siguientes ordenes provocara que APT actualice los paquetes a la ultima version de la distribucion 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 ultima version de la distribucion sid. Mas tarde, apt-get upgrade actualizara el paquete a la ultima version de la distribuciontrixie si es mas reciente que la version instalada. De otro modo, se instalara la version mas reciente de la distribucion sid si es mas reciente que la version instalada. apt-get install paquete/sid FICHEROS /etc/apt/preferences Ficheros de preferencias de version. Aqui puede especificar el anclaje ("pinning"), una preferencia para conseguir ciertos paquetes a partir de una fuente diferente o de una version diferente de una distribucion. Opcion de configuracion: Dir::Etc::Preferences. /etc/apt/preferences.d/ Fragmentos de fichero para las preferencias de la version. Opcion de configuracion: Dir::Etc::PreferencesParts. VEASE TAMBIEN apt-get(8) apt-cache(8) apt.conf(5) sources.list(5) BUGS Pagina 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). TRADUCCION La traduccion al espanol la realizaron Ismael Fanlo, Carlos Mestre, Rudy Godoy, Gustavo Saldumbide, Javier Fernandez-Sanguino y Ruben Porras Campo entre los anos 2003 y 2004. La traduccion fue actualizada por Francisco Javier Cuadrado y Omar Campagne Polaino entre los anos 2009 y 2012 . Tenga en cuenta que este documento puede contener secciones sin traducir. Esto es intencionado para evitar perder contenido cuando la traduccion no esta actualizada con respecto al documento original. AUTOR Equipo de APT NOTAS 1. Pagina de errores de APT https://bugs.debian.org/src:apt APT 2.9.6 03 Enero 2022 APT_PREFERENCES(5)