La mayor comunidad de Debian en español

Sistemas Mixtos


A raíz de un articulo anterior acerca de los repositorios Debian, surgieron las dudas de como tener un sistema mixto, así que acá esta esta humilde guía.
Al grano !!
Frecuentemente tenemos la necesidad de instalar una nueva versión de un paquete, pero dicho paquete no esta disponible para la rama Debian que estamos usando.
El caso mas frecuente es probablemente aquel en una instalación de testing, en la cual necesitamos (o sufrimos de versionitis) instalar también paquetes presentes en la rama unstable o experimental, o también el hecho de querer usar un repositorio con paquetes particulares, pero compilados para una rama diferente a la nuestra.

APT puede se ser nuestro fiel amigo en estas circunstancias, permitiendo el uso de fuentes de ramas diferentes (y satisfacer las dependencias) sin obligarnos a una actualización del sistema entero y sin tener que enloquecer para resolver las dependencias, conflictos e inconsistencias varias.Esta característica es llamada también apt-pinning, nombre dado por el pin que se le otorga en el archivo de preferencias.

Lo que haremos en esta guía sera utilizar paquetes Debian provenientes de testing , unstable, experimental, Marillat (multimedia/video) y Rarewares.org (multimedia/audio), pero los pasos son fácilmente realizables también para otras situaciones como :

unstable + experimental
stable + testing
stable + unstable
stable + testing + unstable
etc...

Como primera medida realizamos una copia de seguridad de nuestro /etc/apt/sources.list (aunque creo que no sera necesario porque lo hacemos regularmente...no?,hecho esto lo editamos con nuestro editor favorito (http://www.esdebian.org/configuracion/24383/alternatives-configurando-nu...) y agregamos los repositorios (http://www.esdebian.org/articulos/24469/mis-repositorios-debian) que utilizaremos:

### Debian oficial -- Testing
deb http://ftp.br.debian.org/debian/ testing main non-free contrib
### Debian oficial -- Testing Seguridad.
deb http://security.debian.org/ testing/updates main contrib non-free
### Debian oficial -- Sid
deb http://ftp.br.debian.org/debian/ unstable main non-free contrib
###  Debian oficial -- Experimental
deb http://ftp.debian.org/debian/ ../project/experimental main
### Multimedia -- Audio -- Rarewares
deb http://www.rarewares.org/debian/packages/unstable ./
### Multimedia -- Video -- Marillat
deb http://www.debian-multimedia.org stable main
deb http://www.debian-multimedia.org unstable main

Guardamos el archivo y ejecutamos en consola:

#apt-get update

Llegados a este punto debemos preparar dos archivos que no están presentes en nuestro sistema Debian: se trata de los archivos preferences y apt.conf, que serán los encargados de instruir a APT sobre como gestir las dependencias de los paquetes, informándolo de como debe comportarse en caso de conflictos u otros problemas.

Creamos el archivo /etc/apt/preferences:

# nano /etc/apt/preferences

y agregamos las siguientes directivas:

Package: *
Pin: release o=Unofficial Multimedia Packages
Pin-Priority: 950

Package: *
Pin: release o=xmixahlx
Pin-Priority: 900

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

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

Package: *
Pin: release a=experimental
Pin-Priority: 750

El pinning puede ser redirigido a un archivo, un origen, la versión de un paquete, un componente etc...

Con "o=" se especifica el origen (osea la distribución) del paquete, con "a=" la rama (sarge, sid, stable, etc...).

Este dato es rastrado de modo inequívoco por APT cuando "hurga" al interno de los directorios "release" presente en todos los repositorios oficiales.

Veamos un par de ejemplos:

# cd /var/lib/apt/lists
# cat www.rarewares.org_debian_packages_unstable_._Release

cuya salida sera :

Archive: unstable
Origin: xmixahlx
Label: xmixahlx_rarewares-unstable
Architecture: i386

# cat www.debian-multimedia.org_dists_unstable_Release

Origin: Unofficial Multimedia Packages
Label: Unofficial Multimedia Packages
Suite: unstable
Version: None
Codename: sid
Date: Sat, 28 Jun 2008 10:21:17 UTC
Architectures: alpha amd64 armel hppa ia64 i386 mipsel powerpc sparc
Components: main
Description: This repository is mostly non-free
..............

hacemos otro mas porque me gusto el jueguito!

#cat security.debian.org_dists_testing_updates_Release

Origin: Debian
Label: Debian-Security
Suite: testing
Version: None
Codename: lenny
Date: Sat, 28 Jun 2008 09:30:14 UTC
Architectures: amd64 alpha arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc
Components: updates/main updates/contrib updates/non-free
Description: Debian testing Security Updates
.................

Donde:

* Archive o Suite = nos indica la rama a que pertenecen los paquetes (stable, testing. etc...);
* Components = indica el tipo de componente (main, contrib, non-free);
* Origin = especifica el propietario del repositorio
* Label = identifica el repository
* Architectures = la arquitectura de los paquetes contenidos en el repositorio (i386, sparc, etc...).

Ahora creamos el archivo apt-conf que como habíamos comentado antes, falta a la fiesta!

# nano /etc/apt/apt.conf

agregamos lo siguiente:

APT::Default-Release "testing";
APT::Cache-Limit 15000000;
Apt::Get::Purge;
APT::Clean-Installed;
APT::Get::Fix-Broken;
APT::Get::Fix-Missing;
APT::Get::Show-Upgraded "true";

:
Hacemos nuevamente la actualización de la base de datos de paquetes:

# apt-get update

de ahora en adelante tendremos dos posibilidades para instalar un paquete:
el método "normal":

# apt-get install nombre_paquete

que utiliza paquetes provenientes de la versión impuesta por defecto (en este caso testing) en apt.conf o como segunda opción con el comando:

# apt-get install -t version_de_debian nombre_paquete

que realizara la instalación del paquete deseado para la versión especificada, resolviendo las dependencias automáticamente.

Los aportes para mejorar y completar esta guía son siempre bienvenidos

Relacionado con Sistemas Mixtos