martes, 2 de diciembre de 2008

Inestablemente estable


A veces, en Debian, uno tiene que instalar un paquete de una rama diferente a la que está utilizando. Por ejemplo, uno tiene un servidor instalado con la rama estable y tiene que instalar un determinado paquete de la rama de pruebas o de la inestable porque es la única manera de conseguir determinada característica.

Para entendernos, Debian tiene cuatro ramas: la estable (stable), la de pruebas (testing), la inestable (unstable) y la experimental (experimental). Normalmente el trabajo de desarrollo se hace en la inestable, y los programas que después de diez días en inestable no dan problemas se pasan a la rama de pruebas. Así, si se quiere estar siempre a la última hay que instalar el sistema con la rama inestable, pero es perfectamente posible que el sistema quede inutilizable. La rama de pruebas es la preferida por mucha gente que quiere estar a la última con sus escritorios pero sin arriesgarse a que todo quede parado, mientras que la rama estable es ideal para servidores o para administrar grandes conjuntos de máquinas iguales.

Por su parte, la rama experimental tiene versiones demasiado inestables incluso para la rama inestable. De hecho no es una rama completa, uno no puede instalar un sistema complete utilizando solamente paquetes de esta rama.

Pues bien, se me ha dado el caso de que en un ordenador con la rama de pruebas instalada necesité instalar ImageMagick, pero resulta que la versión de este programa que viene en esta rama (la 6.3.7.9) utiliza como compresor MPEG el programa mpeg_encode, que no existe en Debian. En cambio, la versión de la rama experimental es la 6.4.5.4 que utiliza ffmpeg, que sí está disponible.

La primera opción es bajarse el imagemagick de experimental e instalarlo a mano. Esto se empieza a complicar cuando uno descubre que necesita dos librerías más, también de experimental, y cambiar la versión de otro paquete que también tiene dependencias.

Y claro, uno se pregunta "¿Para qué tengo que hacer todo esto si es justo el tipo de cosas que le encanta a apt?"

La solución:

Lo primero, hay que dejarle bien claro a apt qué rama queremos utilizar normalmente:

#/etc/apt/apt.conf

APT::Default-Release "testing";


Lo segundo, hay que tener las fuentes de la rama que necesitamos, aparte de las fuentes de la rama que tenemos normalmente:

#/etc/apt/sources.list

# Fuentes remotas de paquetes
deb http://ftp.es.debian.org/debian/ stable main contrib non-free
deb http://ftp.es.debian.org/debian/ testing main contrib non-free
deb http://ftp.es.debian.org/debian/ unstable main contrib non-free
deb http://ftp.es.debian.org/debian/ experimental main contrib non-free

# Actualizaciones de seguridad
deb http://security.debian.org/ stable/updates main contrib non-free
deb http://security.debian.org/ testing/updates main contrib non-free


Y listo. Actualizamos las listas de paquetes con aptitude update o apt-get update (o dselect o Synaptic o lo que cada uno prefiera) y ya estamos preparados para indicarle al sistema lo que queremos:

# aptitude install imagemagick/experimental
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Leyendo la información de estado extendido
Inicializando el estado de los paquetes... Hecho
Leyendo las descripciones de las tareas... Hecho
Los siguientes paquetes están ROTOS:
libmagickcore1
Se instalarán los siguiente paquetes NUEVOS:
ghostscript{a} gsfonts{a} imagemagick imagemagick-doc{a} libcupsimage2{a} libgd2-noxpm{a} libgomp1{a} libgraphviz4{a}
libgs8{a} libilmbase6{a} libjasper1{a} libltdl3{a} libmagickwand1{a} libopenexr6{a} libpaper-utils{a} libpaper1{a}
libwmf0.2-7{a} psfontmgr{a}
0 paquetes actualizados, 19 nuevos instalados, 0 para eliminar y 0 sin actualizar.
Necesito descargar 13,7MB de ficheros. Después de desempaquetar se usarán 48,4MB.
No se satisfacen las dependencias de los siguientes paquetes:
libmagickcore1: Depende: libdjvulibre21 (>= 3.5.21) pero no es instalable
Las acciones siguientes resolverán estas dependencias

Instalar los paquetes siguientes:
libdjvulibre-text [3.5.21-1 (unstable)]
libdjvulibre21 [3.5.21-1 (unstable)]

La puntuación es 12

¿Acepta esta solución? [Y/n/q/?]
Se instalarán los siguiente paquetes NUEVOS:
ghostscript{a} gsfonts{a} imagemagick imagemagick-doc{a} libcupsimage2{a} libdjvulibre-text{a} libdjvulibre21{a}
libgd2-noxpm{a} libgomp1{a} libgraphviz4{a} libgs8{a} libilmbase6{a} libjasper1{a} libltdl3{a} libmagickcore1{a}
libmagickwand1{a} libopenexr6{a} libpaper-utils{a} libpaper1{a} libwmf0.2-7{a} psfontmgr{a}
0 paquetes actualizados, 21 nuevos instalados, 0 para eliminar y 0 sin actualizar.
Necesito descargar 14,4MB de ficheros. Después de desempaquetar se usarán 50,5MB.
¿Quiere continuar? [Y/n/?]
Escribiendo información de estado extendido... Hecho
Des:1 http://ftp.fr.debian.org testing/main libcupsimage2 1.3.8-1lenny2 [98,5kB]
Des:2 http://ftp.fr.debian.org testing/main libpaper1 1.1.23+nmu1 [20,6kB]
Des:3 http://ftp.fr.debian.org testing/main libgs8 8.62.dfsg.1-3.1 [2219kB]
Des:4 http://ftp.fr.debian.org testing/main gsfonts 1:8.11+urwcyr1.0.7~pre44-3 [3373kB]
Des:5 http://ftp.fr.debian.org testing/main ghostscript 8.62.dfsg.1-3.1 [766kB]
Des:6 http://ftp.fr.debian.org testing/main libgomp1 4.3.2-1 [13,2kB]
Des:7 http://ftp.fr.debian.org unstable/main libdjvulibre-text 3.5.21-1 [74,4kB]
Des:8 http://ftp.fr.debian.org unstable/main libdjvulibre21 3.5.21-1 [682kB]
Des:9 http://ftp.fr.debian.org testing/main libgd2-noxpm 2.0.36~rc1~dfsg-3 [221kB]
Des:10 http://ftp.fr.debian.org testing/main libltdl3 1.5.26-4 [177kB]
Des:11 http://ftp.fr.debian.org testing/main libgraphviz4 2.20.2-3 [536kB]
Des:12 http://ftp.fr.debian.org testing/main libilmbase6 1.0.1-2+nmu2 [118kB]
Des:13 http://ftp.fr.debian.org testing/main libjasper1 1.900.1-5.1 [145kB]
Des:14 http://ftp.fr.debian.org experimental/main libmagickwand1 7:6.4.5.4.dfsg1-1 [332kB]
Des:15 http://ftp.fr.debian.org testing/main libopenexr6 1.6.1-3 [262kB]
Des:16 http://ftp.fr.debian.org testing/main libwmf0.2-7 0.2.8.4-6 [174kB]
Des:17 http://ftp.fr.debian.org experimental/main libmagickcore1 7:6.4.5.4.dfsg1-1 [1667kB]
Des:18 http://ftp.fr.debian.org experimental/main imagemagick 7:6.4.5.4.dfsg1-1 [86,1kB]
Des:19 http://ftp.fr.debian.org experimental/main imagemagick-doc 7:6.4.5.4.dfsg1-1 [3410kB]
Des:20 http://ftp.fr.debian.org testing/main libpaper-utils 1.1.23+nmu1 [17,6kB]
Des:21 http://ftp.fr.debian.org testing/main psfontmgr 0.11.10-0.2 [22,2kB]
Descargados 14,4MB en 3min47s (63,5kB/s).
Preconfigurando paquetes ...
[...]
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Leyendo la información de estado extendido
Inicializando el estado de los paquetes... Hecho
Escribiendo información de estado extendido... Hecho
Leyendo las descripciones de las tareas... Hecho


Como se puede ver, la barra al final del nombre del paquete indica "quiero este paquete de esta rama", y el sistema ha bajado el paquete de experimental, y sus dependencias, mientras fue posible, de la rama actual, la de pruebas. Además, las actualizaciones del sistema no darán problemas diciendo siempre "hay nuevos paquetes disponibles" cuando esos paquetes no sean de la rama actual.

No hay comentarios: