Fuentes de software

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 consultar las Pin-Priority de cada fuente ejecutaremos el comando:
    # apt-cache policy

Artículos en la categoría "Instalar software en Linux"

  1. Cómo trabajar con APT
  2. Fuentes de software
  3. Instalar paquetes no-Debian
  4. Construir un paquete Debian desde las fuentes
  5. Paquetes virtuales
  6. El sistema de alternativas
  7. Crear un Live CD en Linux