Jugando con APT (Modificacion del documento de PpluX)

+1
0
-1

Apt es uno de los mejores front-ends que hay para dpkg y todo el que lo usa coincide en lo cómodo que resulta que él solo resuelva dependencias, se baje los paquetes, los configure e instale. Pero mucha gente desconoce el uso de apt para gestionar y mezclar diferentes sources de forma controlada.

La finalidad de este artículo es que cada uno pueda tener al final una distribución debian-like con los paquetes que más le guste de cada uno de los diferentes sources (estable, inestable, el_de_mi_vecino, el_de_un_ruso_por_ahi_perdido, etc...) de forma organizada.

:: ¿Qué es un SOURCE? ::

Cada una de las líneas que encontramos en el fichero /etc/apt/sources.list se corresponde con una fuente de paquetes para nuestra distribución favorita.

Para introducir estos repositorios debemos editar nuestro sources.list de la siguiente manera :

(Uso nano para editarlos mismamente...)

En una consola root (#):

nano -w /etc/apt/sources.list

Pulsamos F2 y guardamos el archivo

Por ejemplo podemos tener perfectamente:

## Warty - Estable ##
deb http://archive.ubuntu.com/ubuntu warty main restricted
deb-src http://archive.ubuntu.com/ubuntu warty main restricted
deb http://archive.ubuntu.com/ubuntu warty universe
deb-src http://archive.ubuntu.com/ubuntu warty universe
deb http://archive.ubuntu.com/ubuntu warty multiverse
deb-src http://archive.ubuntu.com/ubuntu warty multiverse
deb http://security.ubuntu.com/ubuntu warty-security main restricted
deb-src http://security.ubuntu.com/ubuntu warty-security main restricted
## Hoary - Inestable ##
deb http://archive.ubuntu.com/ubuntu hoary main restricted
deb-src http://archive.ubuntu.com/ubuntu hoary main restricted
deb http://archive.ubuntu.com/ubuntu hoary universe
deb-src http://archive.ubuntu.com/ubuntu hoary universe
deb http://archive.ubuntu.com/ubuntu hoary multiverse
deb-src http://archive.ubuntu.com/ubuntu hoary multiverse
deb http://security.ubuntu.com/ubuntu hoary-security main restricted
deb-src http://security.ubuntu.com/ubuntu hoary-security main restricted
## Versiones Debian ##
#deb ftp://ftp.rediris.es/debian/ unstable main contrib non-free
#deb-src ftp://ftp.rediris.es/debian/ unstable main non-free contrib
## Desarrollo Mono ##
deb http://www.getsweaaa.com/~tseng/ubuntu/debs ./
deb-src http://www.getsweaaa.com/~tseng/ubuntu/debs ./
## Java ##
deb http://jrfonseca.dyndns.org/debian ./
## Codecs ##
deb ftp://ftp.nerim.net/debian-marillat/ testing main
deb http://apt.cerkinfo.be/ unstable main contrib non-free
## Ati Drivers ##
deb http://www.stanchina.net/~flavio/debian/ ./
deb-src http://www.stanchina.net/~flavio/debian/ ./

(La rama de debian es mejor tenerla comentada como en el ejemplo puesto que algun paquete se suele colar al hacer dist-upgrade. Solo la activo para bajar algun paquete concreto)

En este fichero sources.list el primer grupo de fuentes se corresponde con la versión estable de Ubuntu (Warty) , el segundo con la inestable (Hoary) y el tercero con la inestable de Debian (SID).
El problema de dejarlo así sin más es que tendremos mezclados los paquetes sin control (o más concretamente, sin que nosotros tengamos el control).

:: ¡¡ Apt-preferences !! la solución ::

En primer lugar vamos a establecer (si no lo tenemos hecho ya) cual es la distribución objetivo. para ello editamos (o creamos) el fichero /etc/apt/apt.conf y escribimos:

APT::Default-Release "warty";

Nota:warty es como se llama el source de la rama estable en ubuntu esto varía según la debian con la que estemos.

Lo segundo es editar (o crear) el fichero /etc/apt/preferences :

Package: *
Pin: release a=warty
Pin-Priority: 900

Package: *
Pin: release a=hoary
Pin-Priority: 50

¡Y ya está! de esta forma controlamos cómo queremos que actúe apt a la hora de instalar paquetes. Apt tiene un sistema de puntuación para establecer cuando tiene que actualizar un paquete, lo que hacemos con /etc/apt/preferences es determinar el peso que queremos darle. Para entender más sobre que valores usar es muy recomendable mirar man apt_preferences(5), pero como pequeña chuleta un adelanto:

P > 1000 la versión se instala incluso si es una versión anterior a la instalada en el sistema.
990 < P <=1000 la versión se instala aunque no venga de la distribución objetivo, a menos que la versión instalada sea más reciente.
500 < P <=990 la versión se instala a menos que exista otro ejemplar disponible perteneciente a la distribución objetivo o bien la versión instalada sea más reciente.
100 < P <=500 la versión se instala a menos que exista un ejemplarperteneciente a otra distribución o la versión instalada sea más reciente.
0 < P <=100 la versión sólo se instala si no hay ninguna versión del paquete instalado.
P < 0 la versión nunca se instala.

:: Cómo usar apt una vez configurado ::

Una vez dado valor a cada una de las fuentes, podemos actualizar el sistema sin miedo a que nos intente actualizar 500 paquetes a la versión inestable utilizando un simple 'apt-get upgrade'. De esta forma además podremos instalar paquetes que no estaban en la distribución objetivo de forma transparente.

Si quereis instalar un paquete que está en más de un source (por ejemplo tiene version estable e inestable) podemos hacer lo siguiente:

apt-get install paquete/source

(En este caso tenemos como source : warty , hoary o unstable si tenemos activada la rama debian)

Así intentará instalar el paquete paquete del source indicado . El problema es que puede negarse a instalar ciertas dependencias por ser estas a su vez inestables o diferentes del la distribución objetivo (o más concretamente, no tienen suficientes puntos para instalarse). En este caso podemos decirle a apt que resuleva las dependencias usando un source concreto:

apt-get -t source install paquete

(En este caso al forzar dependencias de otra rama es muy probable que te cargues todo el sistema...antes probaria a instalar el paquete que sea de la rama debian)

:: Cosas para leer ::

Para más información y para jugar además de con los sources, con las versiones de los paquetes, leed las siguientes páginas del man.
apt_preferences(5) apt.conf(5) sources.list(5) apt-get(8)

Aquí os dejo el enlace a la noticia original
http://www.polinux.upv.es/node/166

Y otro enlace sobre como manejar el apt mas amplio..
http://www.ubuntu-es.org/node/view/533