Pequeña Guía para APT y 'sources.list'

¿Que quiere decir APT?

APT es el mnemotécnico para la Herramienta de Empaquetamiento Avanzado (Advanced Packaging Tool) y es una colección de programas y scripts que ayudan tanto al administrador del sistema (en este caso, root) con la instalación y gestión de archivos-deb, como también informa al mismo sistema para saber qué está instalado.

sources.list

El sistema "APT" necesita un archivo de configuración que contenga información acerca de las localizaciones de paquetes instalables y actualizables que es normalmente llamado sources.list.

Las fuentes están en un directorio o carpeta llamado:
/etc/apt/sources.list.d/

Dentro este directorio hay 2 archivos llamados:
/etc/apt/sources.list.d/debian.list y
/etc/apt/sources.list.d/aptosid.list

Esto tiene la ventaja de cambiar más rápidamente los espejos (está automatizado), y lo hace más seguro para reemplazar listas.

También puede agregar su propios archivos /etc/apt/sources.list.d/*.list

Todos los ISOs de aptosid tienen los siguientes repositorios preseleccionados:

#aptosid
# Free University Berlin/ spline (Student Project LInux NEtwork), Germany
deb ftp://ftp.spline.de/pub/aptosid/debian/ sid main fix.main
#deb-src ftp://ftp.spline.de/pub/aptosid/debian/ sid main fix.main

Se pueden encontrar entradas adicionales para necesidades no-libres en nuestras páginas web, siempre actualizadas aptosid.list y debian.list:

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

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

# Experimental
#deb http://ftp.us.debian.org/debian/ experimental main contrib non-free
#deb-src http://ftp.us.debian.org/debian/ experimental main contrib non-free

NOTA: En este ejemplo, el ftp.us indica que está usando repositorios desde los Estados Unidos de América. Puede editar este archivo, como raíz, para usar repositorios más cerca físicamente de usted, simplemente cambiando el país, por ejemplo, cambie ftp.us.* a ftp.es.* ó ftp.ar.*. Muchos países tienen espejos locales que ayudan a conservar el ancho de banda (bandwidth) y a mejorar las velocidades de descarga.

Lista de los servidores Debian y del estado actual de los espejos.

Para poder conseguir información actualizada sobre los paquetes, el sistema APT utiliza una base de datos. Esta base de datos contiene el paquete pero también los demás paquetes que necesita para poder funcionar (las llamadas dependencias). El programa apt-get usa esta base de datos cuando instala los paquetes escogidos para resolver todas las dependencias, y así garantiza que el paquete escogido funcione. La actualización de esta base de datos se realiza con la orden: apt-get update.

# apt-get update
	(lo que retorna:)
Get:1 http://aptosid.com sid Release.gpg [189B]
Get:2 http://aptosid.com sid Release.gpg [189B]
Get:3 http://aptosid.com sid Release.gpg [189B]
Get:4 http://ftp.de.debian.org unstable Release.gpg [189B]
Get:5 http://aptosid.com sid Release [34.1kB]
Get:6 http://ftp.de.debian.org unstable Release [79.6kB]

Instalación de un nuevo paquete

Tanto actualizar paquetes como instalar uno nuevo sin parar el servidor X puede originar problemas. Cualquier método en el que se instalen paquetes estando en X tiene este problema.

En la medida en que el paquete que usted quiera instalar no actualice otros paquetes, es seguro instalarlo sin parar el servidor X. No obstante, si instalar un paquete origina la actualización de otros, se debe tener gran cuidado y si no está completamente seguro de que los programas que se vayan a actualizar no se usen en aquel momento, debería parar X antes de instalar el paquete.

Si tiene alguna duda asegúrese de abandonar el servidor X como indican las instrucciones de dist-upgrade antes de instalar cualquier cualquier paquete. dist-upgrade - Pasos a realizar .

Presumiendo que la base de datos de Apt está actualizada y se conoce el nombre del paquete, entonces el siguiente comando instalará un paquete llamado "qemu" y todas sus dependencias: (más adelante se explica cómo buscar y encontrar paquetes.)

# apt-get install qemu
Leyendo listas de paquetes... Listo
Construyendo el árbol de dependencias... Listo
Los siguientes paquetes extras serán instalados:
  bochsbios openhackware proll vgabios
Paquetes recomendado:
  debootstrap vde
Los siguientes paquetes NUEVOS serán instalados:
  bochsbios openhackware proll qemu vgabios
0 actualizado, 5 nuevamente instalado, 0 para quitar y 20 no actualizado.
Necesito bajar 4152kB de archivos.
Después de desempacar 11.9MB de espacio adicional será usado.
Desea continuar [S/n]?

Eliminar un paquete

De forma similar, no sorprenderá que la siguiente orden desinstale un paquete (sin embargo, no quitará las dependencias):

apt-get remove gaim
Leyendo listas de paquetes... Listo
Construyendo el árbol de dependencias... Listo
Los siguientes paquetes serán REMOVIDOS:
  gaim gaim-irchelper
0 actualizado, 0 nuevamente instalado, 2 para quitar y 310 no actualizado.
Necesito bajar 0B de archivos.
Después de desempacar 4743kB de espacio será liberado.
Desea continuar [S/n]?
(Leyendo base de datos ... 174409 archivos y directorios actualmente instalados.)
Removiendo gaim-irchelper ...
Removiendo gaim ...

En este último caso los archivos del paquete 'gaim' (básicamente los que guardan la configuración) no fueron borrados del sistema. Serán utilizados si vuelve instalar el mismo paquete de nuevo y se utilizará la misma configuración.

Si también desea quitar los archivos de configuración, ejecute este comando:

apt-get --purge remove gaim

Leyendo listas de paquetes... Listo
Construyendo el árbol de dependencias... Listo
Los siguientes paquetes serán REMOVIDOS:
  gaim*
0 actualizado, 0 nuevamente instalado, 1 para quitar y 309 no actualizado.
Necesito bajar 0B de archivos.
Después de desempacar 4678kB de espacio será liberado.
Desea continuar [S/n]? S
(Leyendo base de datos ... 174405 archivos y directorios actualmente instalados.)
Removiendo gaim ...
Purgando archivos de configuración de gaim ...
#

Note el simbolo * después del nombre del paquete en la salida de apt. El asterisco indica que los archivos de configuración también serán eliminados.

Revertir (downgrade) o conservar (hold) un paquete

A veces es necesario revertir a una versión previa de un paquete o hacer que no se actualice, debido a un fallo mayor en la versión que acaba de instalar.

Retener (Hold) un paquete

echo package hold|dpkg --set-selections

Para quitar un "Hold" de un paquete

echo package install|dpkg --set-selections

Para listar paquetes en "Hold" (conservados):

dpkg --get-selections | grep hold

Revertiendo paquetes

Debian no soporta la reversión de paquetes. Si bien puede funcionar en algunos casos simples, puede fallar de forma estrepitosa en otros paquetes. Vea, por favor Reversión de emergencia.

A pesar del hecho de que no está soportada, se sabe que la reversión funciona para paquetes simples. Los pasos para revertir un solo paquete (usando kmahjongg como ejemplo) son:

  1. comentar las fuentes inestables en /etc/apt/sources.list.d/debian.list con un #
  2. Añadir las fuentes "testing" en /etc/apt/sources.list.d/debian.list , por ejemplo:
    deb http://ftp.nl.debian.org/debian/ testing main contrib non-free
    
  3. apt-get update
    
  4. apt-get install kmahjongg/testing
    
  5. Poner el paquete recién instalado en hold con:
    echo kmahjongg hold|dpkg --set-selections
    
  6. comentar con # las fuentes de testing en /etc/apt/sources.list.d/debian.list y quitar el # de las fuentes inestables, y así volverá a usarlas:
  7. apt-get update
    

Cuando desee actualizar a la versión más reciente, haga esto:

echo kmahjongg install|dpkg --set-selections
apt-get update
apt-get install kmahjongg

apt-mark

apt-mark es una útil herramienta que muestra qué paquetes están instalados automática o manualmente y que ofrece al administrador del sistema la oportunidad de marcar y retener los paquetes que no deban ser borrados automáticamente. Vea:

man apt-mark

Actualización de todo un sistema instalado - dist-upgrade - Vista general

Actualizar todo el sistema completo se hace a través de dist-upgrade. Siempre debe revisar los Current Warnings en la página web principal de aptosid, y allí revise las advertencias acerca de los paquetes que su sistema va a actualizar con dist-upgrade. Si necesita retener (hold) un paquete, vea la referencia en Revertir y mantener un paquete

El uso de 'upgrade' solamente no está recomendado en 'debian sid'.

Frecuencia de dist-upgrade

Realizar el dist-upgrade tan rutinamente como pueda, idealmente una vez a la semana o cada dos semanas está bien, y como mínimo una vez al mes para estar seguro. Un dist-upgrade realizado cada 2 ó 3 meses es considerado como el limite de seguridad. Para paquetes no-estándar, o autocompilados, tiene que tener más cuidado con la actualización, porque pueden causar fallos en su sistema debido a incompatibilidades.

Después de actualizar la base de datos puede determinar qué paquetes tienen versiones más nuevas: (primero tiene que instalar: apt-show-versions)

apt-show-versions -u
libpam-runtime/unstable upgradeable from 0.79-1 to 0.79-3
passwd/unstable upgradeable from 1:4.0.12-5 to 1:4.0.12-6
teclasat/unstable upgradeable from 0.7m02-1 to 0.7n01-1
libpam-modules/unstable upgradeable from 0.79-1 to 0.79-3.........

La actualización de un paquete en particular con todas sus dependencias, por ejemplo, "gcc-4.0", puede ser realizado con:

# apt-get install gcc-4.0
Leyendo listas de paquetes... Listo
Construyendo el árbol de dependencias... Listo.
gcc-4.0 ya es la versión más nueva.
0 actualizado, 0 nuevamente instalado, 0 para quitar y 295 no actualizado.
#

Solamente bajar sin instalar

Una opción poco conocida y muy util es la bandera "-d" para revisar qué paquetes están involucrados:

apt-get update && apt-get dist-upgrade -d

El -d permite bajar los paquetes sin instalarlos, mientras sigue en X desde una consola. Además le permite realizar el dist-upgrade en init 3 en el momento que más le convenga. También le permite revisar las advertencias en la lista, porque, sabiamente, le da la opción de proceder o abortar el proceso.

apt-get dist-upgrade -d
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following NEW packages will be installed:
  elinks-data
The following packages have been kept back:
  git-core git-gui git-svn gitk icedove libmpich1.0ldbl
The following packages will be upgraded:
  alsa-base bsdutils ceni configure-ndiswrapper debhelper
  discover1-data elinks file fuse-utils gnucash.........
35 upgraded, 1 newly installed, 0 to remove and 6 not upgraded.
Need to get 23.4MB of archives.
After this operation, 594kB of additional disk space will be used.
Do you want to continue [Y/n]?Y 

La respuesta Y bajará los paquetes actualizados sin tocar el sistema instalado.

Después de que el 'dist-upgrade -d' haya bajado los paquetes y desee completar el dist-upgrade, ya sea inmediatemente o posteriormente, por favor, siga estas instrucciones:

dist-upgrade - Pasos a realizar

ABSOLUTAMENTE NUNCA debe realizar un "upgrade" ni un "dist-upgrade" mientras esté en el ambiente gráfico X. Siempre revise la sección "Current Warnings" en la página web principal de aptosid. Estos avisos están allí por razón de la naturaleza de "Debian sid/unstable" y porque se actualiza diariamente.

## Log out of KDE.  
## Go to Textmode by doing Ctrl+Alt+F1
## logon as root, and then type:
service kdm stop  ##If using another window manager replace kdm, for example with gdm
apt-get update
apt-get dist-upgrade
apt-get clean
service kdm start ##If using another window manager replace kdm, for example with gdm

NUNCA HAGA el DIST-UPGRADE (ni UPGRADE) con ADEPT o SYNAPTIC

Si no va a "init 3", bueno, lo sentimos, "usted ha sido advertido."

¿Por qué recomendamos SOLAMENTE "apt-get" para "dist-upgrade"?

Los gestores de paquetes "adept", "aptitude", "synaptic" y "kpackage" no son siempre capaces de acomodarse a los muchos cambios que suceden en Sid (cambios de dependencias, de nombres, en los scripts de los mantenedores, etcétera).

Esto no es un fallo de los desarrolladores ni de estas herramientas, que son excelentes para la rama estable de Debian. Simplemente, no son aptas para las necesidades especiales de Debian Sid.

Utilice lo que más le agrade para buscar paquetes, pero recomendamos utilizar el "apt-get" para "install", "remove", "purge" y "dist-upgrade".

Los gestores de paquetes "adept", "aptitude", "synaptic" y "kpackage" no son determinísticos para selecciones complejas de paquetes: cuando estas se mezclan con un conjunto de paquetes tan cambiantes como hay en Sid, y aún peor, un repositorio externo de calidad cuestionable (no lo recomendamos, pero ésta es una realidad en algunos sistemas de usuarios) se estará acercando al desastre.

Otra cosa a notar es que todos estos gestores de paquetes necesitan ejecutarse en X, y hacer un dist-upgrade (ni siquiera upgrade) en X está desaconsejado. Puede dañar el sistema hasta un punto irreparable, quizás no hoy ni mañana, pero dentro de algún tiempo sucederá.

Por otro lado "apt-get" hace exactamente lo que se espera de él. Si hay alguna rotura puede encontrar el lugar del error para depurar y arreglar la causa. Si acaso "apt-get" quiere borrar la mitad del sistema (debido a transiciones de librerias) es una decisión que el administrador (probablemente usted) tendrá que tomar después de leer todos los mensajes.

Esta es la razón porque el sistema "Debian builds" utiliza apt-get y ninguna otra de las demás herramientas de paquetes.

Buscando un paquete con el apt-cache

Otro comando muy útil en el Sistema-APT es el apt-cache; lo busca en la Base de Datos de APT y muestra la información sobre paquetes; por ejemplo, una lista de todos los paquetes que contienen o están dirigidos a "aptosid" y "manual" es retornado por la siguiente orden:

$ apt-cache search aptosid manual
..........
aptosid-manual-ro - manual oficial de aptosid en rumano
aptosid-manual-hr - manual oficial de aptosid en croata
aptosid-manual-common - manual oficial de aptosid - comunes
aptosid-manual-en - manual oficial de aptosid en inglés
aptosid-manual-ru - manual oficial de aptosid en ruso
aptosid-manual - manual oficial de aptosid en  - todos
aptosid-manual-nl - manual oficial de aptosid en holandés
aptosid-manual-es - manual oficial de aptosid en español

Si desea más información sobre un paquete en particular, puede usar lo siguiente:

$richard@aptosid:[~]# apt-cache show aptosid-manual-es
Package: aptosid-manual-es
Priority: optional
Section: doc
Installed-Size: 1644
Maintainer: Kel Modderman <kel@otaku42.de>
Architecture: all
Source: aptosid-manual
Version: 01.12.2007.06.03-1
Depends: aptosid-manual-common
Filename: pool/main/s/aptosid-manual/aptosid-manual-es_01.12.2007.06.03-1_all.deb
Size: 904836
MD5sum: 470715455445a711e69b60f92a6e241f
SHA1: ae0a9d8f144641561d49fb28665ecf4a4b9d811c
SHA256: 039f92e06844899b6f49d5af7203588db85677145ec067966a80b6a6cfc7ce5f
Description: el manual official de aptosid en Español
 Este manual es dividido en secciones comunues, por ejemplo: una topica acerca
 de particiones se encuentra en la sección: Particionando el Disco Duro. Topicas
 con respecto al conexión inalámbrica están en la sección Internet y Redes.
 Hay tópicos que requieren estar por si sólos.
 .
 Como en cualquier documentación nuevo, pueden occurir errores/fallas de gramática
 y tipeo. Aunque esperamos corregirlos todos, los errores de logica son los más
 importante a nosotros. Los de tipografia los corregimos cuando encontramos o
 cuando estamos avisados. Esperamos su ayuda y cooperación en la depuración.
 .
 Mientras que el proyecto sigue creciendo, más documentación será agregada.
 La gente de aptosid esperamos que éste resulte un recurso valioso para ustedes.
 Gracias por formar parte de la familia de aptosid.

Todos las versiones instalables de los paquetes (dependiendo de la configuración del "sources.list") pueden ser listadas con este comando:

$apt-cache policy aptosid-manual-es
aptosid-manual-es:
  Instalados: 01.12.2007.06.03-1
  Candidato: 01.12.2007.06.03-1
  Tabla de versión:
 *** 01.12.2007.06.03-1 0
        500 http://aptosid.com sid/main Packages
        100 /var/lib/dpkg/status

Una descripción completa del Sistema-APT puede encontrarse en el APT-HOWTO

Una descripción completa del APT-System puede encontrarse en el APT-HOWTO

Última modificación 31/12/2014 1540 UTC