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. Recursos no oficiales: mentors.debian.net
6.1.5. 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.
El segundo campo provee la URL base para el origen (combinado con los nombres de archivo presentes en los archivos Packages.gz debe generar una URL completa y válida): éste 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:// para indicar un origen disponible en un servidor web o con ftp:// para un origen disponible en un servidor FTP. La URL también puede comenzar con cdrom: para instalaciones desde CD-ROM/DVD-ROM/Blu-ray, aunque esto es menos frecuente ya que los métodos de instalación desde la red son más y más comunes.
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»

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

## Réplica debian

# Repositorio base
deb http://ftp.debian.org/debian jessie main contrib non-free
deb-src http://ftp.debian.org/debian jessie main contrib non-free

# Actualizaciones de stable
deb http://ftp.debian.org/debian jessie-updates main contrib non-free
deb-src http://ftp.debian.org/debian jessie-updates main contrib non-free

# Retroadaptaciones para stable
deb http://ftp.debian.org/debian jessie-backports main contrib non-free
deb-src http://ftp.debian.org/debian jessie-backports main contrib non-free
Este archivo enumera todos los orígenes de paquetes asociados con la versión Jessie de Debian (la versión Stable cuando esto fue escrito). Decidimos utilizar «jessie» explícitamente en lugar del alias «stable» correspondiente (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

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.
Cualquiera puede utilizar este repositorio para probar esas actualizaciones antes de su publicación oficial. El extracto a continuación utiliza el alias jessie-proposed-updates que es más explícito y más consistente ya que también existe wheezy-proposed-updates (para las actualizaciones de Oldstable):
deb http://ftp.debian.org/debian jessie-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.
El repositorio stable-backports ahora está disponible en las réplicas Debian usuales. Pero las retroadaptaciones para Squeeze continúan almacenadas en un servidor dedicado (backports.debian.org) y necesitan de la siguiente línea en el archivo sources.list:
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
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/jessie-backports
$ sudo apt-get install -t jessie-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://ftp.debian.org/debian unstable main contrib non-free
deb-src http://ftp.debian.org/debian unstable main contrib non-free

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

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

# Actualizaciones de seguridad
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://ftp.debian.org/debian experimental main contrib non-free

6.1.4. 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.5. 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://ftp.debian.org/debian
security http://security.debian.org
De forma predeterminada, approx ejecuta en el puerto 9999 a través de inted (revise la Sección 9.6, “El superservidor inetd) 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://apt.falcot.com:9999/security jessie/updates main contrib non-free
deb http://apt.falcot.com:9999/debian jessie main contrib non-free