Product SiteDocumentation Site

Capítulo 6. Mantenimiento y actualizaciones: las herramientas APT

6.1. Contenido del archivo sources.list
6.1.1. Sintaxis
6.1.2. Repositorios para usuarios de Stable
6.1.3. Repositorios para usuarios de Testing/Unstable
6.1.4. Usar Réplicas Alternativas
6.1.5. Recursos no oficiales: mentors.debian.net
6.1.6. Proxy caché para paquetes Debian
6.2. Los programas aptitude, apt-get y apt
6.2.1. Inicialización
6.2.2. Instalación y eliminación
6.2.3. Actualización del sistema
6.2.4. Opciones de configuración
6.2.5. Gestión de prioridades de los paquetes
6.2.6. Trabajo con varias distribuciones
6.2.7. Seguimiento de paquetes instalados automáticamente
6.2.8. APT Patterns
6.3. La orden apt-cache
6.3.1. The apt-cache policy Command
6.4. La orden apt-file
6.5. Interfaces: aptitude, synaptic
6.5.1. aptitude
6.5.2. synaptic
6.6. Comprobación de la autenticidad de un paquete
6.7. Actualización de una distribución estable a la siguiente
6.7.1. Procedimiento recomendado
6.7.2. Manejo de problemas tras una actualización
6.7.3. Limpieza tras una Actualización
6.8. Manutención de un sistema actualizado
6.9. Actualizaciones automáticas
6.9.1. Configuración de dpkg
6.9.2. Configuración de APT
6.9.3. Configuración de debconf
6.9.4. Manejo de interacciones de línea de órdenes
6.9.5. La combinación milagrosa
6.10. Búsqueda de paquetes
Lo que hace a Debian tan popular entre administradores es lo sencillo que resulta instalar software y lo fácil que se puede actualizar el sistema completo. Esta ventaja única es en gran parte debido al programa APT, que los administradores de Falcot Corp estudiaron con entusiasmo.
APT is the abbreviation for Advanced Packaging Tool. What makes this program “advanced” is its approach to packages. It doesn't simply evaluate them individually, but it considers them as a whole and produces the best possible combination of packages depending on what is available and compatible according to dependencies.
Se necesita proveerle a APT una «lista de paquetes fuente» (repositorios): el archivo /etc/apt/sources.list contendrá una lista de diferentes repositorios que publican paquetes Debian. APT importará la lista de paquetes publicada por cada una de estos repositorios. Realiza esta operación descargando los archivos Packages.xz o una variante como Packages.gz o .bz2 (que usa un distinto método de compresión) en caso de una fuente de archivos binarios y analizando sus contenidos. En caso de una fuente de paquetes fuente, APT descarga archivos Sources.xz o una variante usando un método de compresión diferente. Cuando ya posee una copia antigua de estos archivos, APT puede actualizarla solo descargando las diferencias (revise el recuadro SUGERENCIA Actualizaciones incrementales).

6.1. Contenido del archivo sources.list

6.1.1. Sintaxis

Cada línea activa en el archivo /etc/apt/sources.list representa un paquete fuente (repositorio) y está compuesta de al menos tres partes separadas por espacios. Para una descripción completa del formato de archivo y la estructura de entradas aceptada consulte sources.list(5).

Ejemplo 6.1. Ejemplo de formato de entrada en /etc/apt/sources.list

deb url distribución componente1 componente2 componente3 [..] componenteX
deb-src url distribución componente1 componente2 componente3 [..] componenteX
El primer campo indica el tipo de origen:
deb
paquete fuente (repositorio) de paquetes binarios
deb-src
paquete fuente (repositorio) de paquetes fuente
The second field gives the base URL of the source. Combined with the filenames listed in the Packages.xz files, it must give a full and valid URL. This can consist in a Debian mirror or in any other package archive set up by a third party. The URL can start with file:// to indicate a local source installed in the system's file hierarchy, with http:// or https:// to indicate a source accessible from a web server, or with ftp:// or ftps:// for a source available on an FTP server. The URL can also start with cdrom: for CD-ROM/DVD/Blu-ray disc based installations, although this is less frequent, since network-based installation methods are eventually more common. More methods like ssh:// or tor+http(s):// are supported and are either described in sources.list(5) or their respective apt-transport-method package documentation.
The syntax of the last field depends on the structure of the repository. In the simplest case, you can simply indicate a subdirectory (with a required trailing slash) of the desired source. This is often a simple “./” which refers to the absence of a subdirectory. The packages are then directly at the specified URL. But in the most common case, the repositories will be structured like a Debian mirror, with multiple distributions, each having multiple components. In those cases, name the chosen distribution by its “codename” — see the list in sidebar COMUNIDAD Bruce Perens, un líder polémico — or by the corresponding “suite” (oldoldstable, oldstable, stable, testing, unstable) and then the components to enable. A typical Debian mirror provides the components main, contrib, and non-free.
Los elementos cdrom describen los CD/DVD-ROMs que posee. A diferencia de otros elementos, un CD-ROM no siempre está disponible ya que debe encontrarse en el dispositivo y sólo un disco puede leerse en un momento dado. Por estas razones, se gestionan estos elementos de una forma ligeramente diferente y necesitan ser agregados con el programa apt-cdrom, usualmente ejecutado con el parámetro add. Este programa solicitará que introduzca el disco en el dispositivo y navegará su contenido en busca de archivos Packages. Utilizará dichos achivos para actualizar su base de datos de paquetes disponibles (generalmente realizada cuando ejecuta apt update). Desde ese momento en adelante, APT puede solicitarle introducir el disco si necesita uno de sus paquetes.

6.1.2. Repositorios para usuarios de Stable

Este es un archivo sources.list estándar para un sistema que ejecuta la versión Stable de Debian:

Ejemplo 6.2. el archivo /etc/apt/sources.list para usuarios de Debian «stable»

# Security updates
deb http://security.debian.org/ bullseye-security main contrib non-free
deb-src http://security.debian.org/ bullseye-security main contrib non-free

## Debian mirror

# Base repository
deb https://deb.debian.org/debian bullseye main contrib non-free
deb-src https://deb.debian.org/debian bullseye main contrib non-free

# Stable updates
deb https://deb.debian.org/debian bullseye-updates main contrib non-free
deb-src https://deb.debian.org/debian bullseye-updates main contrib non-free

# Stable backports
deb https://deb.debian.org/debian bullseye-backports main contrib non-free
deb-src https://deb.debian.org/debian bullseye-backports main contrib non-free
This file lists all sources of packages associated with the Bullseye version of Debian (the current Stable suite as of this writing). In the example above, we opted to name “bullseye” explicitly instead of using the corresponding “stable“ aliases (stable, stable-updates, stable-backports) because we don't want to have the underlying distribution changed outside of our control when the next stable release comes out.
Most packages will come from the “base repository”, which contains all packages but is seldom updated (about once every 2 months for a “point release”). The other repositories are partial (they do not contain all packages) and can host updates (packages with newer version) that APT might install. The following sections will explain the purpose and the rules governing each of those repositories.
Sepa que cuando la versión deseada de un paquete se encuentra disponible en varios repositorios, se utilizará el que se encuentre primero en el archivo sources.list. Por esta razón, generalmente se agregan orígenes no oficiales al final del archivo.
Como nota adicional, la mayoría de lo que diga esta sección sobre Stable también es aplicable a Oldstable ya que esta última es sólo una versión Stable más antigua que se mantiene en paralelo.

6.1.2.1. Actualizaciones de seguridad

Debian se toma la seguridad en serio. Las vulnerabilidades de software conocidas en Debian se supervisan en el Security Bug Tracker (rastreador de errores de seguridad) y normalmente se solucionan en un tiempo razonable. Las actualizaciones de seguridad no se encuentran en la red de réplicas de Debian usual sino en security.debian.org, un conjunto pequeño de equipos administrados por los Administradores de sistemas de Debian. Este compendio contiene las actualizaciones de seguridad preparadas por el equipo de seguridad de Debian, «Debian Security Team», y/o por los encargados de los paquetes para la distribución Stable y Oldstable.
The server can also host security updates for Testing but this doesn't happen very often since those updates tend to reach that suite via the regular flow of updates coming from Unstable.
Para incidencias serias, el equipo de seguridad publica un Aviso de Seguridad de Debian (en inglés Debian Security Advisory, DSA) y lo anuncia junto a la actualización de seguridad en la lista de correo (archivo).

6.1.2.2. Actualizaciones de Stable

Las actualizaciones de stable no implican riesgos de seguridad pero son consideradas suficientemente importantes como para ser enviadas a los usuarios antes de la publicación de la siguiente versión menor de stable.
Este repositorio generalmente incluirá correcciones de errores críticos y serios que no pudieron ser actualizados antes de la publicación o que fueron introducidos en actualizaciones posteriores. Dependiendo de la urgencia, también puede contener actualizaciones de paquetes que evolucionaron con el tiempo, como las reglas de detección de spam de spamassassin, la base de datos de virus de clamav, las reglas de horarios de verano de todos los husos horarios (tzdata), la versión ESR de Firefox (firefox-esr) o conjuntos de llaves criptográficas como debian-archive-keyring.
En la práctica, este repositorio es un subgrupo del repositorio proposed-updates, cuidadosamente seleccionado por los Gestores de Versiones Estables. Todas las actualizaciones se anuncian en la lista de correo (archivo) y se incluirán de todas formas en la próxima publicación punto algo de Stable.

6.1.2.3. Actualizaciones propuestas

Una vez publicada, la distribución Stable se actualiza sólo una vez cada 2 meses. El repositorio proposed-updates es donde se preparan las futuras actualizaciones (bajo la supervisión de los Gestores de la versión estable, «Stable Release Managers»).
Las actualizaciones de seguridad y de estable documentadas en las secciones anteriores siempre son parte de este repositorio, pero también habrá otras ya que los encargados de los paquetes también tienen la oportunidad de corregir errores importantes que no justifican que se publique una nueva versión inmediatamente.
Anyone can use this repository to test those updates before their official publication. The extract below uses the bullseye-proposed-updates alias which is both more explicit and more consistent since buster-proposed-updates also exists (for the Oldstable updates):
deb https://deb.debian.org/debian bullseye-proposed-updates main contrib non-free

6.1.2.4. Retroadaptaciones para Stable

El repositorio stable-backports contiene «retroadaptaciones de paquetes». Es término hace referencia a paquetes de software reciente que fue recompilado para una distribución antigua, generalmente para Stable.
Cuando la distribución entra en años, muchos proyectos de software habrán publicado nuevas versiones que no están integradas en la versión actual Stable, que solo es modificada para corregir los problemas más criticos, como los problemas de seguridad. Debido a que las versiones Testing y Unstable son más riesgosas, los encargados de paquetes a veces ofrecen voluntariamente recompilaciones de aplicaciones de software recientes para Stable, lo que para usuarios y administradores de sistemas tiene la ventaja de limitar la potencial inestabilidad a un número pequeño de paquetes seleccionados. La página web https://backports.debian.org proporciona más información.
Solo se crean las retroadaptaciones de stable-backports de los paquetes disponibles en Testing. Esto asegura que todas las retroadaptaciones instaladas se actualizarán a la versión estable correspondiente cuando se encuentre disponible la siguiente versión estable de Debian.
Aun cuando este repositorio provea versiones de paquetes más nuevas, APT no las instalará a menos que le indique explícitamente que lo haga (o si ya lo hizo con una versión anterior de dicha retroadaptación):
$ sudo apt-get install package/bullseye-backports
$ sudo apt-get install -t bullseye-backports package

6.1.3. Repositorios para usuarios de Testing/Unstable

Este es un archivo sources.list estándar para un sistema que ejecuta la versión Testing o Unstable de Debian:

Ejemplo 6.3. Archivo sources.list para usuarios de Debian Testing/Unstable

# Unstable
deb https://deb.debian.org/debian unstable main contrib non-free
deb-src https://deb.debian.org/debian unstable main contrib non-free

# Testing
deb https://deb.debian.org/debian testing main contrib non-free
deb-src https://deb.debian.org/debian testing main contrib non-free

# Testing security updates
deb http://security.debian.org/ testing-security main contrib non-free
deb-src http://security.debian.org/ testing-security main contrib non-free

# Stable
deb https://deb.debian.org/debian stable main contrib non-free
deb-src https://deb.debian.org/debian stable main contrib non-free

# Stable security updates
deb http://security.debian.org/ stable-security main contrib non-free
deb-src http://security.debian.org/ stable-security main contrib non-free
Con este archivo sources.list, APT instalará paquetes de la distribuciónUnstable. Si esto no es lo que desea, utilice la configuración APT::Default-Release (revise la Sección 6.2.3, “Actualización del sistema”) para indicarle a APT que utilice los paquetes de otra distribución (en este caso probablemente Testing).
There are good reasons to include all those repositories, even though a single one should be enough. Testing users will appreciate the possibility to cherry-pick a fixed package from Unstable when the version in Testing is affected by an annoying bug. On the other hand, Unstable users bitten by unexpected regressions have the possibility to downgrade packages to their (supposedly working) Testing version.
El incluir Stable es más discutible, pero generalmente proveerá acceso a algunos paquetes, que fueron eliminados de las versiones en desarrollo. También asegura que obtendrá las últimas actualizaciones para paquetes, que no fueron modificados desde la publicación de la última versión estable.

6.1.3.1. El repositorio Experimental

El compendio de paquetes Experimental se encuentra en todas las réplicas Debian y contiene paquetes que no están en Unstable aún debido a que su calidad está bajo los estándares normales — generalmente son versiones en desarrollo del software o versiones previas (alpha, beta, candidato de publicación...). Un paquete también puede ser enviado ahí luego de sufrir muchos cambios que pueden generar problemas. El desarrollador luego intentará descubrirlos con la ayuda de usuarios avanzados que pueden manejar problemas importantes. Luego de esta etapa, mueve el paquete a Unstable, donde alcanza una audiencia más grande y donde será probado en mucho más detalle.
Los usuarios que usan Experimental generalmente no les importa romper su sistema y luego repararlo. Esta distribución les da la posibilidad de importar un paquete que el usuario desea probar o usar según lo necesita. Esto es exactamente el enfoque que toma Debian ya que agregarlo en el archivo sources.list de APT no conlleva el uso sistemático de sus paquetes. La línea a agregar es:
deb https://deb.debian.org/debian experimental main contrib non-free

6.1.4. Usar Réplicas Alternativas

The sources.list examples in this chapter refer to package repositories hosted on deb.debian.org. Those URLs will redirect you to servers which are close to you and which are managed by Content Delivery Networks (CDN) whose main role is to store multiple copies of the files across the world, and to deliver them as fast as possible to users. The CDN companies that Debian is working with are Debian partners who are offering their services freely to Debian. While none of those servers are under direct control of Debian, the fact that the whole archive is sealed by GPG signatures makes it a non-issue.
Los usuarios exigentes que no estén satisfechos con el rendimiento de deb.debian.org pueden intentar encontrar una mejor réplica en la lista oficial de réplicas:
Pero cuando no sabes qué réplica es mejor para ti, esta lista no es muy útil. Afortunadamente para usted, Debian mantiene entradas DNS con la forma ftp.código-de-país.debian.org (p. ej., ftp.us.debian.org para los EE. UU., ftp.fr.debian.org para Francia etc.) que abarcan varios países y que apuntan a uno (o más) de las mejores réplicas disponibles dentro de ese país.
Como alternativa a deb.debian.org, existía httpredir.debian.org. Este servicio identificaba una réplica cercana a usted (entre la lista de réplicas oficiales, usando principalmente GeoIP) y redirigía las peticiones de APT a esa réplica. Este servicio ha quedado obsoleto debido a problemas de fiabilidad y ahora httpredir.debian.org proporciona el mismo servicio basado en redes de distribución de contenidos que deb.debian.org.

6.1.5. Recursos no oficiales: mentors.debian.net

Hay multitud de fuentes de paquetes de Debian no oficiales preparadas por usuarios avanzados que recompilan algun software —Ubuntu lo hizo popular con su servicio Archivos de Paquetes Personales (PPA)— de programadores que hacen que su creación esté disponible para todos e incluso desarrolladores de Debian que ofrecen versiones previas a sus paquetes online.
El sitio mentors.debian.net es interesante ya que reúne los paquetes creados por los candidatos al estado de desarrollador Debian oficial o por voluntarios que desean crear paquetes Debian sin pasar por ese proceso de integración. Los paquetes disponibles aquí no tiene garantías de calidad, asegúrese de revisar su origen e integridad y pruébelos antes de considerar utilizarlos en producción.
Instalar un paquete significa dar permisos de root a su creador, porque ellos deciden el contenido de los scripts de inicialización que ejecutan bajo esa identidad. Los paquetes oficiales de Debian son creados por voluntarios que fueron cooptados y verificados y que pueden firmar sus paquetes para que se pueda revisar su origen e integridad.
En general, desconfíe de un paquete cuyo origen desconoce y que no es almacenado en uno de los servidores oficiales de Debian: evalúe el grado en el que puede confiar en su creador y revise la integridad del paquete.

6.1.6. Proxy caché para paquetes Debian

Cuando una red completa de equipos está configurada para utilizar el mismo servidor remoto para descargar los mismo paquetes actualizados, todo administrador sabe que es beneficioso tener un proxy intermedio que funcione como caché para la red local (revise el recuadro VOCABULARIO Caché).
Puede configurar APT para que utilice un proxy «estándar» (revise la Sección 6.2.4, “Opciones de configuración” para la configuración de APT y la Sección 11.6, “Proxy HTTP/FTP” para la configuración del proxy), pero el ecosistema Debian ofrece mejores opciones para solucionar este problema. Esta sección presente un software dedicado que es más inteligente que un simple proxy caché porque utiliza la estructura específica de los repositorios APT (por ejemplo, conoce cuándo archivos particulares son obsoletos o no y así modifica el tiempo durante el cual los mantendrá).
apt-cacher y apt-cacher-ng funcionan como servidores proxy caché usuales. No se modifica el archivo sources.list, pero se configura a APT para utilizarlos como proxy para pedidos salientes.
approx, por el otro lado, funciona como un servidor HTTP que «replica» cualquier cantidad de repositorios remotos en su URL más genérica. Se almacena el mapeo entre estos directorios y las URLs remotas de los repositorios en /etc/approx/approx.conf:
# <name>   <repository-base-url>
debian     https://deb.debian.org/debian
security   http://security.debian.org/debian-security
De forma predeterminada, approx se ejecuta en el puerto 9999 a través de un zócalo de systemd y necesita que el usuario modifique su archivo sources.list para que apunte al servidor approx:
# Sample sources.list pointing to a local approx server
deb http://localhost:9999/security bullseye-security main contrib non-free
deb http://localhost:9999/debian   bullseye main contrib non-free