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.3. La orden apt-cache
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 son las siglas de «herramienta avanzada de paquetes» («Advanced Package Tool»). Lo que hace este programa «avanzado» es su enfoque sobre paquetes. No sólo los evalúa individualmente sino que los considera como un todo y produce la mejor combinación posible de paquetes dependiendo de lo que esté disponible y sea compatible (según dependencias).
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
El segundo campo provee la URL base para el origen. Combinado con los nombres de archivo listados en los archivos Packages.xz debe generar una URL completa y válida. Esta puede consistir de una réplica Debian o en cualquier otro compendio de paquetes configurado por un tercero. La URL puede comenzar con file:// para indicar un origen local instalado en la jerarquía de archivos del sistema, con http:// o https:// para indicar un origen disponible en un servidor web o con ftp:// o ftps:// para un origen disponible en un servidor FTP. La URL también puede comenzar con cdrom: para instalaciones desde CD-ROM/DVD/Blu-ray, aunque esto es menos frecuente ya que los métodos de instalación desde la red son cada vez más comunes.
La sintaxis del último campo depende de la estructura del repositorio. En el caso más simple, puede indicar un subdirectorio (con la barra final necesaria) del origen deseado. Generalmente suele ser «./» que hace referencia a la ausencia de un subdirectorio. Los paquetes se encuentran directamente en la URL especificada. Pero en el caso más común, los repositorios tendrán la estructura similar a una réplica Debian, con varias distribuciones y varios componentes en cada una. En estos casos, nombre la distribución elegida (por su «nombre código» —revise la lista en el recuadro COMUNIDAD Bruce Perens, un líder polémico— o por su «suite» correspondiente (oldstable, stable, testing, unstable) y luego los componentes que desea activar. Un repositorio Debian típico proporciona los componentes main, contrib y 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»

# Actualizaciones de seguridad
deb http://security.debian.org/ buster/updates main contrib non-free
deb-src http://security.debian.org/ buster/updates main contrib non-free

## Réplica debian

# Repositorio base
deb https://deb.debian.org/debian buster main contrib non-free
deb-src https://deb.debian.org/debian buster main contrib non-free

# Actualizaciones de stable
deb https://deb.debian.org/debian buster-updates main contrib non-free
deb-src https://deb.debian.org/debian buster-updates main contrib non-free

# Retroadaptaciones para stable
deb https://deb.debian.org/debian buster-backports main contrib non-free
deb-src https://deb.debian.org/debian buster-backports main contrib non-free
Este archivo enumera todos los orígenes de paquetes asociados con la versión Buster de Debian (la versión Stable cuando esto fue escrito). En el ejemplo anterior decidimos utilizar «buster» explícitamente en lugar de los aliases de «stable» correspondientes (stable, stable-updates, stable-backports) ya que no deseamos que se modifique la distribución correspondiente fuera de nuestro control cuando se publique la siguiente versión estable.
La mayoría de los paquetes provendrán del «repositorio base» que contiene todos los paquetes pero rara vez es actualizado (alrededor de una vez cada 2 meses para «versiones menores» — «point release»). Los otros repositorios son parciales (no contienen todos los paquetes) y pueden almacenar actualizaciones (paquetes con versiones más recientes) para que instale APT. Las secciones siguientes explicarán su propósito y las reglas que regulan cada uno de estos repositorios.
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.
El servidor también puede contener actualizaciones de seguridad para Testing, pero esto no sucede frecuentemente ya que dichas actualizaciones suelen llegar a la distribución Testing a través del flujo normal de actualizaciones provenientes de 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.
deb https://deb.debian.org/debian buster-updates main contrib non-free

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.
Cualquiera puede utilizar este repositorio para probar esas actualizaciones antes de su publicación oficial. El extracto a continuación utiliza el alias buster-proposed-updates que es más explícito y más consistente ya que también existe stretch-proposed-updates (para las actualizaciones de Oldstable):
deb https://deb.debian.org/debian buster-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 paquete/buster-backports
$ sudo apt-get install -t buster-backports paquete

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

# Actualizaciones de seguridad de Testing
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

# Actualizaciones de seguridad de Stable
deb http://security.debian.org/ stable/updates main contrib non-free
deb-src http://security.debian.org/ stable/updates 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).
Existen buenas razones para incluir todos estos repositorios, inclusive cuando sólo uno debería ser suficiente. Los usuarios de Testing apreciarán la posibilidad de seleccionar paquetes específicos de Unstable cuando la versión en Testing posee un error molesto. Por el otro lado, los usuarios de Unstable afectados por regresiones inesperadas pueden desactualizar paquetes a la versión de Testing (que supuestamente funciona).
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

Los ejemplos de sources.list en este capítulo se refieren a repositorios de paquetes alojados en deb.debian.org. Esas URLs le redirigirán a servidores cercanos a usted y que están gestionados por redes de distribución de contenido (en inglés se abrevia CDN, Content Delivery Networks) cuyo papel principal es almacenar varias copias de los archivos por todo el mundo y entregarlas lo más rápido posible a los usuarios. Las empresas de redes de distribución de contenidos con las que Debian trabaja son patrocinadoras de Debian que ofrecen sus servicios a Debian de forma gratuita. Aunque ninguno de estos servidores está bajo el control directo de Debian, el hecho de que el archivo entero esté sellado por claves GPG hace que no sea un problema.
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:
# <nombre> <URL base del repositorio>
debian   http://deb.debian.org/debian
security http://security.debian.org
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:
# Archivo sources.list de ejemplo que apunta a un servidor approx local
deb http://localhost:9999/security buster/updates main contrib non-free
deb http://localhost:9999/debian buster main contrib non-free