Para poder instalar software, APT necesita saber dónde encontrarlo.
El archivo donde figura la lista de fuentes de software es /etc/apt/sources.list. Su contenido será similar a:
deb cdrom:[Debian 3.1 r1 _Sarge_ - i386]/ sarge main contrib deb ftp://ftp.debian.org/debian/ stable main non-free contrib deb-src ftp://ftp.debian.org/debian/ stable main non-free contrib deb ftp://ftp.debian.org/debian/ testing main non-free contrib deb-src ftp://ftp.debian.org/debian/ testing main non-free contrib deb http://security.debian.org/ stable/updates main |
Para añadir nuevas fuentes de software editaremos /etc/apt/sources.list:
- los repositorios oficiales, mantenidos por Debian, figuran en la página debian.org/mirrors/list.
- un repositorio no oficial muy utilizado (imprescindible si utilizamos
aplicaciones multimedia), es el mantenido por Christian Marillat
(debian-multimedia.org):
deb http://www.debian-multimedia.org stable main
- otro es el repositorio Backports (backports.org):
contiene paquetes de testing (mayoritariamente) o unstable pero recompilados con
las librerías de stable. De esta manera, podemos instalar un paquete moderno
(testing) sin que se reinstale todo el sistema:
deb http://www.backports.org/debian/ sarge-backports main
- en apt-get.org encontraremos fuentes no oficiales de paquetes .deb: permite buscar un paquete y obtener las líneas a agregar en /etc/apt/sources.list.
- para añadir como fuente de software un CD ejecutaremos:
# apt-cdrom add
Actualizar la lista de paquetes
Para actualizar la lista de paquetes y sincronizar nuestra lista local de paquetes con los paquetes disponibles en los servidores de software que figuran en /etc/apt/sources.list, usaremos el comando:
# apt-get update |
Atención
- Antes de instalar paquetes siempre debemos actualizar la lista ejecutando:
# apt-get update
- También debemos actualizar la lista de paquetes siempre que modifiquemos /etc/apt/sources.list o /etc/apt/preferences.
- Si tenemos muchas fuentes de software en /etc/apt/sources.list la cache de APT será
demasiado pequeña y obtendremos el error:
E: Dynamic MMap ran out of room
Para evitarlo, incluiremos en el archivo /etc/apt/apt.conf la línea:
APT::Cache-Limit "100000000";
Sistema de prioridades (Pin-Priority o Pinning)
Veamos cómo funciona el sistema de prioridades, Pin-Priority o Pinning.
- Cada fuente de software que tengamos en /etc/apt/sources.list tiene asignada una prioridad (Pin).
- Cuando instalamos un paquete, si APT encuentra varios con el mismo nombre instalará el que proceda de la fuente con mayor prioridad (a igual prioridad instalará la última versión del paquete).
- Por defecto, la Pin-Priority de las fuentes de software es 500, pero podemos cambiarlo estableciendo otros valores en el archivo /etc/apt/preferences.
- Podemos saltarnos las prioridades e instalar un paquete desde una fuente de baja prioridad:
# apt-get install <paquete>/<fuente_baja_prioridad>
Para instalar desde una fuente de baja prioridad tanto el paquete como sus dependencias haremos:
# apt-get install -t <fuente_baja_prioridad> <paquete>
- Los significados de las Pin-Priority son:
- < 0: un paquete con esta prioridad nunca se instalará.
- 0-1000: el paquete se instalará si es una versión más moderna.
- > 1000: el paquete se instalará aunque sea una versión anterior.
- 100: prioridad de los paquetes instalados.
- 500: prioridad por defecto de las fuentes de software.
- 0-99: este paquete no actualizará a un paquete instalado.
- 990: prioridad de la opción -t.
- Para asignar una Pin-Priority a una fuente la identificaremos con los parámetros
release a=<archivo> y origin <dominio>. Algunos ejemplos:
- para dar prioridad a los paquetes de Marillat y que al actualizar no se
sobreescriban con los paquetes oficiales con el mismo nombre:
Package: * Pin: origin www.debian-multimedia.org Pin-Priority: 900
- para que Backports no tenga prioridad sobre los repositorios oficiales:
Package: * Pin: release a=sarge-backports Pin-Priority: 200
De esta manera, para instalar un paquete desde Backports tendremos que saltarnos la Pin-Priority:
# apt-get install <paquete>/sarge-backports
- para permanecer en stable, instalándose paquetes de testing
y unstable si no existen en stable:
Package: * Pin: release a=stable Pin-Priority: 500 Package: * Pin: release a=testing Pin-Priority: 60 Package: * Pin: release a=unstable Pin-Priority: 50
- para pasar a testing: stable 500, testing 600, unstable 50
- para pasar a unstable: stable 500, testing 600, unstable 700
- para volver a stable: stable 1100, testing 600, unstable 700
- si en vez de Package: * ponemos Package: <paquete> podemos
asignar una Pin-Priority específica a un paquete. Por ejemplo, para que la versión
prioritaria de Mutt sea unstable:
Package: mutt Pin: release a=unstable Pin-Priority: 900
- para dar prioridad a los paquetes de Marillat y que al actualizar no se
sobreescriban con los paquetes oficiales con el mismo nombre:
- Para consultar las Pin-Priority de cada fuente ejecutaremos el comando:
# apt-cache policy