Debian APT Pinning, la minipimer del software


La verdad que tenia pensado hacer este post como parte del post sobre el unboxing y review de la Dell Vostro 1720 que esta en camino, pero, como Dell esta teniendo problemas para conseguir el disco rigido, el pedido se va a demorar mas de lo esperado … Y hacerlos esperar no es buena idea.

debian_logo

Bien … pero, que es esto de APT Pinning? … bien, los que hayan instalado un Debian alguna ves sabran que existen tres versiones, una estable, una testing y otra inestable. La version estable, esta integrada por software hiper testeado por el Security Team, y esto hace que nuevas versiones de software especifico no este disponible para ser instalado. Basicamente, un sistema estable es para ambientes productivos, por lo que para un usuario domestico, esto es demasiado y hasta no recomendable, ya que nos estariamos perdiendo de muchas actualizaciones de software. Podemos correr una version puramente en testing o puramente inestable, pero … ¿si quiero tener algunos programas o servicios estables y otros en testing o inestables por que tienen caracteristicas adicionales? Bien, aqui entra el APT Pinning.

Para hacer APT Pinning, necesitamos agregar en el /etc/apt/sources.list las fuentes de las versiones a las que queremos “pinear” … un ejemplo seria el sisguiente:

#Stable - Usado para mantener software critico
deb http://ftp.us.debian.org/debian stable main non-free contrib
deb http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free

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

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

Esto no es todo, el APT Pinning no es solamente agregar las fuentes en source.list, nop, para hacer que el pinning funcione debemos configurar las preferencias de APT, para esto debemos editar (o crear si no existe) el archivo /etc/apt/preferences. Lo que haremos en el preference, es agregar las prioridades de las versiones, usualmente siempre la version mas nueva es la que es elegida, pero nosotros no queremos esto, ya que necesitamos poder elegir entre estable, testing e inestable. Para evitar que apt siempre nos instale la ultima version (que sera la inestable) necesitamos darle mas prioridad a las versiones anteriores, por ejemplo:

Package: *
Pin: release a=stable
Pin-Priority: 700

Package: *
Pin: release a=testing
Pin-Priority: 650

Package: *
Pin: release a=unstable
Pin-Priority: 600

Como podran ver, el parametro Pin-Priority le dice a APT que la version estable tiene mayor prioridad sobre testing y testing sobre la version inestable.

El ejemplo de arriba, usa el wildcard (o comodín … como quieran llamarlo) * para decir que tome todos los paquetes del release, pero podemos configurar tambien paquetes especificos, versiones especificas y darles otras prioridades.

Tambien podemos decirle a APT como comportase al momento de hacer downgrades pasandole como valor de parametro Pin-Priority 1000 o 1001. Con 1001 APT va a reamplazar un paquete instalado con la version especificada en el parametro Pin, por lo que si tiene que hacer un downgrade lo hara sin problemas. El valor 1000 tambien mantendra la version espeficicada, pero, en caso de tener una version superior APT no hara el downgrade.

Para ver como se comporta APT … les recomiendo que le peguen una leida a el apt-howto de debian.

Nota: Antes de ponerse a probar esto, instalen una maquina virtual y prueben allí, cosa de no romper nada de su configuracion actual.

Ya tenemos todo listo como para empezar a Pinear … el proximo paso … el logico, actualizar nuestra lista de paquetes con un apt-get update.

En caso de que les tire un error luego de realizar el update … espeficiamente el error “E: Dynamic MMap ran out of room” tenemos que corregir el limite del cache de apt. Este error se debe a que la cache de apt es muy chica para manejar la lista de paquetes incluida en los tres releases, pero … como siempre en Linux todo tiene solucion, editamos el archivo /etc/apt/apt.conf y le agregamos la siguiente linea:

APT::Cache-Limit "8388608";

Y listo problema solucionado.

Ahora a instalar programas :)

Tenemos dos opciones para instalar paquetes:

1- apt-get install <paquete>/<release>

Con esta forma, apt va a instalar el paquete desde el realease X (por ejemplo unstable) pero va a tratar de satisfacer las dependencias con el release de mas alta prioridad (en caso de nuestro ejemplo seria stable) … esto, como es de esperar puede no llegar a funcionar.

2- apt-get -t <release> install <paquete>

Con esta otra forma, apt va a instalar el paquete desde el release X (nuevamente digamos unstable) y tratar de satisfacer todas las dependencias desde el release X.

Bien … creo que con esto he cubierto lo basico como para darles un punto de partida y seguir investigando … y nuevamente … queda demostrado porque Debian es el elegido por tanta gente.

Saludos.

Se libre ... comparti!!!

,

  1. #1 by joanzare on 26/06/2009 - 11:57

    amigo que buena informacion, es bastante interesante que se le puede establecer prioridad a los repositorios en debian, gracias por compartirlo es de gran utilidad.

    Saludos …

  2. #2 by TheCoffeMaker on 02/07/2009 - 21:11

    De nada! … la verdad que si, es muy interesante, igual, hay muchas otras cosas interesantes sobre el sistema de administracion de paquetes que posteare mas adelante!

  3. #3 by Drakeman on 11/07/2009 - 1:03

    Que tal, interesantisimo articulo, como tu mismo lo dices, una de las razones por la que muchos de nosotros nos vamos por debian, utilizas debian ? espero que sigas poniendo mas articulos de este gran sistema operativo.
    Saludos.

  4. #4 by TheCoffeMaker on 11/07/2009 - 20:51

    Claro que sí!!! … Debian 4 ever :) … claro que voy a seguir escribiendo sobre Debian … bah! … Debian … Unix en general … asi que apunta este blog en tu lector RSS por que vas a tener linda info