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. Using Alternate Mirrors
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. Interfaces: aptitude, synaptic
6.4.1. aptitude
6.4.2. synaptic
6.5. Comprobación de la autenticidad de un paquete
6.6. Actualización de una distribución estable a la siguiente
6.6.1. Procedimiento recomendado
6.6.2. Manejo de problemas tras una actualización
6.7. Manutención de un sistema actualizado
6.8. Actualizaciones automáticas
6.8.1. Configuración de dpkg
6.8.2. Configuración de APT
6.8.3. Configuración de debconf
6.8.4. Manejo de interacciones de línea de órdenes
6.8.5. La combinación milagrosa
6.9. 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 orígenes de paquetes»: el archivo /etc/apt/sources.list contendrá una lista de diferentes repositorios («sources») 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 (en el caso de paquetes binarios) o una variante que utiliza otro método de compresión (como Packages.gz o .bz2) y archivos Sources.xz o una variante (en el caso de un origen de paquetes fuente) y analizando sus contenidos. Cuando ya posee una copia antigua de estos archivos, APT puede actualizarla sólo descargando las diferencias (revise el recuadro SUGERENCIA Actualización incremental).

6.1. Contenido del archivo sources.list

6.1.1. Sintaxis

Cada línea del archivo /etc/apt/sources.list contiene una descripción de un origen, compuesta por 3 partes separadas por espacios.
El primer campo indica el tipo de origen:
  • «deb» para paquetes binarios,
  • «deb-src» para paquetes fuente.
The second field gives the base URL of the source (combined with the filenames present 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:// to indicate a source accessible from a web server, or with ftp:// for a source available on an FTP server. The URL can also start with cdrom: for CD-ROM/DVD-ROM/Blu-ray disc based installations, although this is less frequent, since network-based installation methods are more and more common.
La sintaxis del último campo depende de la estructura del repositorio. En los casos más simples, 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, utilice la distribución elegida (por su «nombre código» — revise la lista en el recuadro COMUNIDAD Bruce Perens, un líder polémico — o su «suite» correspondiente — stable, testing, unstable) y luego los componentes (o secciones) que desea activar (en un repositorio Debian típico: 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.1. el archivo /etc/apt/sources.list para usuarios de Debian «stable»

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

## Debian mirror

# Base repository
deb http://deb.debian.org/debian stretch main contrib non-free
deb-src http://deb.debian.org/debian stretch main contrib non-free

# Stable updates
deb http://deb.debian.org/debian stretch-updates main contrib non-free
deb-src http://deb.debian.org/debian stretch-updates main contrib non-free

# Stable backports
deb http://deb.debian.org/debian stretch-backports main contrib non-free
deb-src http://deb.debian.org/debian stretch-backports main contrib non-free
This file lists all sources of packages associated with the Stretch version of Debian (the current Stable as of this writing). We opted to name “stretch” explicitly instead of using the corresponding “stable“ alias (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.
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

Las actualizaciones de seguridad no se encuentran en la red de réplicas de Debian usual sino en security.debian.org (en 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.
El servidor también puede contener actualizaciones de seguridad para Testing, pero esto no sucede frecuentemente ya que dichas actualizaciones suelen llegar a Testing a través del flujo normal de actualizaciones provenientes de Unstable.

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 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 o las reglas de horarios de verano de todos los husos horarios (tzdata).
En la práctica, este repositorio es un subconjunto del repositorio proposed-updates, seleccionado cuidadosamente por los Gestores de la versión estable («Stable Release Managers»).

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 stretch-proposed-updates alias which is both more explicit and more consistent since jessie-proposed-updates also exists (for the Oldstable updates):
deb http://ftp.debian.org/debian stretch-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 de Stable (que sólo es modificada para corregir los problemas más criticos, como los problemas de seguridad). Debido a que las distribuciones Testing y Unstable son más riesgosas, los encargados de paquetes a veces ofrecen recompilaciones de aplicaciones de software recientes para Stable que tienen la ventaja de limitar la potencial inestabilidad a un número pequeño de paquetes seleccionados.
Siempre 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.
Aún 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/stretch-backports
$ sudo apt-get install -t stretch-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.2. Archivo sources.list para usuarios de Debian Testing/Unstable

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

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

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

# Security updates
deb http://security.debian.org/ stable/updates main contrib non-free
deb http://security.debian.org/ testing/updates main contrib non-free
deb-src http://security.debian.org/ stable/updates main contrib non-free
deb-src http://security.debian.org/ testing/updates main contrib non-free
Con este archivo sources.list, APT instalará paquetes de Unstable. 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 http://deb.debian.org/debian experimental main contrib non-free

6.1.4. Using Alternate Mirrors

The sources.list examples in this chapter refer to package repositories hosted on deb.debian.og. 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 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.
Picky users who are not satisfied with the performance of deb.debian.org can try to find a better mirror in the official mirror list:
But when you don't know which mirror is best for you, this list is of not much use. Fortunately for you, Debian maintains DNS entries of the form ftp.country-code.debian.org (e.g. ftp.us.debian.org for the USA, ftp.fr.debian.org for France, etc.) which are covering many countries and which are pointing to one (or more) of the best mirrors available within that country.
As an alternative to deb.debian.org, there used to be httpredir.debian.org. This service would identify a mirror close to you (among the list of official mirrors, using GeoIP mainly) and would redirect APT's requests to that mirror. This service has been deprecated due to reliability concerns and now httpredir.debian.org provides the same CDN-based service as 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), por 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   http://deb.debian.org/debian
security http://security.debian.org
approx runs by default on port 9999 via a systemd socket and requires the users to adjust their sources.list file to point to the approx server:
# Sample sources.list pointing to a local approx server
deb http://apt.falcot.com:9999/security stretch/updates main contrib non-free
deb http://apt.falcot.com:9999/debian stretch main contrib non-free