Libertonia
Portada · Todo · Software Libre · Desarrolladores · Comunidad · Internet · Tecnología · Meta · Diarios
Cómo construir un CD Debian extra

Debian
Por jcantero
departamento actualizacionitis , Sección Software Libre
Puesto a las Mon Feb 24th, 2003 at 10:53:24 PM CET
Una de las capacidades más apreciadas de Debian GNU/Linux es su capacidad de actualización a través de la red. De hecho, a pesar de que las versiones estables salgan con mucho tiempo transcurrido entre ellas, siempre disponemos de fuentes no oficiales de las cuales bajarnos los paquetes de las versiones más recientes de diverso software. Sin embargo, no siempre podemos tener acceso a la Red, o a veces se impone tener un método de actualización desde medios locales.

 


En el presente artículo voy a describir una forma de construir tu propio repositorio local de paquetes. La idea es crear CDs `de expansión', es decir, quemar el CD con los paquetes, ficheros y directorios que obtengamos para que, con un simple apt-cdrom add los tengamos disponibles, aunque también podríamos emplear los mismos pasos para crearnos un repositorio en nuestro disco duro con muy pocas diferencias.

Lo primero que tenemos que conseguir son los propios paquetes que queremos incluir en el repositorio. De sitios como apt-get.org podemos obtener las URLs de donde bajarlos. Con un poco de pericia en el uso de wget podemos obtener dichos paquetes. Por ejemplo:

wget --recursive --level=inf --no-parent --relative --timestamping \
--no-host-directories --cut-dirs=5 --directory-prefix=kde-3.0.5a --accept *.deb \
ftp://download.us.kde.org/pub/kde/stable/3.0.5a/Debian/woody/
con el comando anterior nos bajamos sólo los .deb de KDE 3.0.5a desde el directorio indicado, y los guardamos bajo el directorio kde-3.0.5. He puesto las opciones de wget en formato largo para que sean comprensibles a simple vista, aunque un vistazo a la página man no estaría de más. La opción --timestamping nos permite que interrumpamos la descarga y la lancemos de nuevo sin que se vuelvan a descargar los ficheros que no hayan variado.

En el ejemplo anterior nos descargábamos los ficheros de un FTP, pero no es diferente hacerlo desde un repositorio web. Por ejemplo:

wget --recursive --level=inf --no-parent --relative --timestamping \
--no-host-directories --cut-dirs=5 --directory-prefix=gnome2 --accept *.deb \
http://people.debian.org/~kov/debian/dists/woody/gnome2/binary-i386/
En este caso --accept *.deb impide además que nos bajemos los listados de directorios *.html, que no los necesitamos. Si quisiéramos bajarnos también los fuentes, añadiríamos las extensiones *.tar.gz, *.diff.gz y *.dsc. Pero no es necesario bajarse ni los Packages o Packages.gz ni los Sources o Sources.gz. Esos ficheros los construiremos nosotros según nuestras necesidades más adelante.

Obsérvese también el uso de --cut-dirs. Esta opción habrá que ajustarla para evitar los diversos directorios que no nos sirven de nada. En el segundo caso, despreciamos ~kov/debian/dists/woody/gnome2 (por eso --cut-dirs vale 5) y lo guardamos sólamente en el subdirectorio gnome2. Esto es así porque luego nosotros construiremos nuestro árbol de directorios a nuestra medida.

Supongamos que ya hemos bajados todos esos paquetes que deseamos añadir a nuestro repositorio o CD extra. Puede que sean grandes colecciones de paquetes, como los de XFree 4, KDE 3 o GNOME 2, o puede que no sean más que unos cuantos paquetes de actualización. En cualquier caso, antes de nada deberemos pensar como vamos a almacenarlos. Para ello, lo mejor es primero darle un vistazo a la organización de directorios que necesitamos.

Para construir un CD Debian, necesitamos un directorio principal que generalmente se llama debian/ (yo así lo recomiendo) en el cual guardaremos todos los ficheros y paquetes necesarios. Dentro de debian/ creamos el directorio dists y dentro las distintas ramas de la distribución. En este ejemplo estamos preparando un CD extra para la versión estable, así que crearemos un directorio stable/. Y no está de más añadirle un enlace simbólico con el codename (woody/ en mi caso) que apunte a stable/.

Dentro del directorio de la distribución concreta (stable en este ejemplo) es cuando las cosas empiezan a ponerse interesantes. Lo normal en un CD habitual de Debian es que tengamos en esta profundidad los directorios main/, contrib/ y non-free. Pero a nosotros este nivel nos va a servir para dividir los diferentes grupos de paquetes, de forma que en un futuro podamos prescindir de toda una parte de ellos y sin embargo poder seguir empleando otras.

Con un ejemplo se entenderá mejor. Si en este CD vamos a guardar la última versión de GNOME 2, KDE 3 y XFree 4.2, puede suceder que en el futuro preparemos otro repositorio que tenga versiones superiores de los mismos. Esto no sería demasiado problema. Sin embargo, sí que podría ser un problema que quisiéramos utilizar la versión GNOME 2 de este CD, pero la versión de KDE 3 del siguiente. Si los separamos en este nivel, luego en el fichero /etc/apt/sources.lists podemos indicarle qué apartados nos interesan de cada fuente (por ejemplo, de un CD), mientras que si agrupamos todo en un único apartado, esto no sería posible. Así que la recomendación es crear un apartado por cada conjunto de paquetes que pueda estar relacionado, teniendo en cuenta la flexibilidad anterior.

Dentro de cada apartado tenemos un subdirectorio por arquitectura (binary-i386/, binary-sparc/, binary-arm/, ...), uno común para todas las arquitecturas (binary-all), por ejemplo para los paquetes de documentación, y uno para los fuentes (source/). En mi caso sólo voy a usar paquetes para i386, así que me limito a crear dentro de cada apartado un directorio binary-i386, y ahí volcaré todos los *.deb descargados que corresponden a ese apartado, sin preocuparme de que estuvieran clasificados en diversos subdirectorios en el origen.

Aun hay otro nivel más de profundidad en los directorios (a estas alturas un ya está harto). La buena noticia es que no vamos a crear estos directorios a mano. Dejaremos que la máquina lo haga por nosotros (eso, que empiece a trabajar un poco). Para ello, movemos primero los *.deb del apartado dentro del binary-i386 correspondiente y luego ejecutamos el siguiente script, para el que antes debemos haber instalado los paquetes grep, textutils (cut) y dpkg-dev (dpkg-scanpackages):

#!/bin/bash
#
# Organizar en secciones una colección de paquetes .deb
#
dpkg-scanpackages . /dev/null > Packages

FICHEROS=`grep 'Filename: ' Packages | cut -d ' ' -f 2`
SECCIONES=`grep 'Section: ' Packages | cut -d ' ' -f 2`

for FICHERO in $FICHEROS; do
SECCION=`echo $SECCIONES | cut -d ' ' -f 1`
# crear los directorios de seccion
if [ ! -d $SECCION ]; then
mkdir -m 755 -p $SECCION
fi
# mover cada fichero a su seccion
SECCIONES=`echo $SECCIONES | cut -d ' ' -f 2-`
chmod 644 $FICHERO
mv $FICHERO $SECCION
done
rm Packages
Este script crea los directorios correspondientes a cada sección y mueve cada paquete al dicho directorio. Estas secciones son las `oficiales' de Debian (admin,base,...). Una advertencia: los paquetes que corresponde al apartado contrib aparecen aquí dentro de directorios contrib/seccion/ y lo mismo pasa con los non-free en non-free/seccion/. En mi caso he decidido no hacer distinciones entre estas ramas, así que he movido manualmente (suelen ser pocos) estos paquetes a su sección correspondiente (por ejemplo, non-free/admin/ a admin/. Otras opciones complicarían las cosas.

El script de arriba debería modificarse para hacer lo mismo pero con la tripleta de ficheros fuente paquete.dsc paquete.orig.tar.gz y paquete.diff.gz (directorio source/). Además, habría que emplear dpkg-scansources en vez de dpkg-scanpackages. Se deja como ejercicio al lector interesado. O:-)

En este punto hemos conseguido crear una estructura que equivale a la organización de un CD debian, con los paquetes en los directorios correspondientes. Pero aun nos falta lo más importante: los ficheros índices de paquetes Packages.gz (y Sources.gz, para los fuentes). Podría ser un trabajo pesado, pero las herramientas de Debian nos proporcionan lo necesario para hacerlo de manera sencilla. Nos movemos al directorio superior de debian (debian/) y lanzamos el siguiente script que automágicamente nos hará el trabajo sucio:

#!/bin/bash

for x in `find . -type d -name 'binary-*'`; do
cmd="apt-ftparchive packages $x | gzip -9 > $x/Packages.gz"
echo "$cmd"
eval "$cmd"
done
for x in `find . -type d -name 'source'`; do
cmd="apt-ftparchive sources $x | gzip -9 > $x/Sources.gz"
echo "$cmd"
eval "$cmd"
done
El segundo for sólo es necesario en el caso de tener fuentes, pero tampoco pasa nada si lo ejecutamos no teniéndolos.

Lo último que tenemos que repasar antes de quemar nuestro CD es revisar los permisos de ficheros y directorios. Unos buenos permisos pueden ser 644 para ficheros y 755 para directorios. Si no damos permisos de lectura suficientes, nos podemos encontrar con ficheros inaccesibles, y un CD con problemas. Puesto que me he encontrado con CDs de revistas que las versiones de Debian de los paquetes tenían todo tipo de problemas, no os aconsejo que paséis por alto este detalle. Es suficiente:

find debian/ -type f -exec chmod 644 {} ";"
find debian/ -type d -exec chmod 755 {} ";"
por encima del directorio debian/ para tenerlo como queremos.

El último paso es quemar el CD. No es mi objetivo dar una explicación de cómo quemar CDs, para eso está la CD-Writing HOWTO. Sólo recomendar que muevas todo debian/ dentro de un directorio que hará el papel del punto de montaje del CD (por ejemplo cd/). Además, ahí puedes añadir el resto de cosas que quieras quemar en el CD, aparte de los paquetes debian, si es que así lo quieres. Una vez todo listo:

mkisofs -r -o cd_image cd/
debería ser suficiente para crear el fichero cd_image con la imagen a quemar (fíjate que no sobrepasa la capacidad del CD) y, usando cdrecord un otra herramienta quemarlo en el medio. ¡Hay Más De Una Manera De Hacerlo(TM)!, como usar otros programas gráficos que no necesitan de mkisofs, etc. Esta es simplemente a la hackers' way, y no es ni mejor ni peor que otras.

Llega el momento de probar el CD (aunque, dicho sea de paso, podrías haberlo probado antes de quemarlo, te remito nuevamente a la CD-Writing HOWTO). Hacemos un apt-cdrom add e introducimos el CD. Después de recorrer el CD y leer los Packages.gz y Sources.gz existentes, te pedirá un nombre para el CD. Se lo introduces (por ejemplo Debian GNU/Linux 3.0 Bilo's Golden Edition) y listo. Si haces un apt-get update ya deberías tener los paquetes disponibles. Con un apt-get upgrade, te actualizará aquellos que tengas instalados y haya en los CDs una versión superior, pidiéndote el CD recién creado para realizar la operación. ¿Impresionante, verdad? ;-)

Ya que estuvimos hablando de ello, no estaría de más echar un vistazo al fichero /etc/apt/sources.lists. Por ejemplo:

deb cdrom:[Debian 3.0 jcantero-1 Extension]/ debian/dists/stable/gnome2/binary-i386/
deb cdrom:[Debian 3.0 jcantero-1 Extension]/debian/ stable acrobat5 kde-3.0.5a mozilla-1.2.1 multimedia xfree-4.2.1
¡Vaya! parece que sí que ha pillado los diversos apartados del CD, aunque no perfectamente el de Gnome 2. No obstante, parece que funciona. Comentando/borrando lo que queramos de estas líneas tendremos un control más fino de lo que queramos que esté disponible de éste CD en nuestra instalación Debian.

Por último comentar que el método de organización de paquetes aquí empleado es el tradicional de Debian, y vale para versiones anteriores. Para rizar el rizo, este artículo debería introducirse en el proceloso mundo de los Package Pools. Pero eso... será en otra ocasión (para empezar, porque hay bastante poca información sobre los mismos).

Podéis encontrar más información sobre la construcción de repositorios en:

< Lindows se mete en el negocio de los portátiles (13 comments) | ¿Intel quiere reemplazar la BIOS? (5 comments) >
Enlaces Relacionados
· escomposlinux.org
· Debian GNU/Linux
· fuentes no oficiales
· CD-Writing HOWTO
· Debian GNU/Linux 3.0 Bilo's GoldenEdition
· Debian Repository HOWTO
· More on Debian
· Also by jcantero

Menu
· crear cuenta
· FAQ
· búsqueda
· Fuentes de Noticias

Login
Nueva cuenta
Usuario:
Contraseña:

Ver: Modo: Orden:
Cómo construir un CD Debian extra | 12 comentarios (9 temáticos, 3 editoriales, 0 ocultos)
Muuuuy chulo (2.00 / 1) (#4)
por suy (suy21.existe-en.lycos.es) a las Tue Feb 25th, 2003 at 01:21:30 AM CET
(Información Usuario) http://lacurva.net/

Bueno, no voy a hacer comentarios sobre la calidad del artículo, porque me parece que está claro :-).

Pero me pregunto una cosa...

Tengo un amigo que quiere linux. Se iba a poner Mandrake, porque quería "algo gráfico y con dibujitos" (sí, así lo dijo, es triste, lo sé). Yo pensé, que teniendo ADSL, lo mejor es que se metira Debian Woody, y se actualizara a kde 3.1, que es muy fácil. Pues bien...

Ya sé que no es lo mismo, pero para un caso como el que me ocupa, ¿no es mejor copiar los debs de mi /var/cache/apt, y en el pc de mi amigo, pasar esos archivos al mismo punto?

Ya sé que no aporta tanto como tener un CD que sea un repositorio Debian, pero para salir del paso, ¿pues serviría, verdad :-)?


Esto será mi vida, porque es lo único importante en ella.
Y, si fracaso, moriré, porque para mí no existe nada más.

Raistlin Majere


Otra salida (3.50 / 2) (#7)
por trinux a las Tue Feb 25th, 2003 at 03:19:55 PM CET
(Información Usuario) http://solognu.wordpress.com/

También puede servir para que revistas del sector publiquen cd's como una forma de exterder y actualizar tu woody de forma off-line ;-)

Lo digo por que, yo antes de tener conexión cable-modem, el ultimo software lo tenia por revistas del sector y no había forma de conseguirlo

Es una idea para las revistas.

Saludos

[ Padre ]


 
algo gráfico y con dibujitos (3.00 / 1) (#11)
por sinner a las Thu Feb 27th, 2003 at 06:43:49 PM CET
(Información Usuario) http://www.escomposlinux.org/sinner/

Hola,

Si queria Mandrake, por que no ponerle Mandrake? Tiene esos graficos y dibujitos. Y es Linux. Y usa el sistema de menues de Debian, tiene urpmi (apt-get para rpm nativo), la deteccion de hardware es muy buena, tiene repositorios de paquetes extra (PLF, PCLinuxOnline...)... y todo grafico o en modo texto, a eleccio del usuario.

Si, ya se que Debian esta muy bien. Pero Mandrake tambien. Debian esta pensada para y por los usuarios tipo de Libertonia. Pero no todo el mundo es igual.

Por que ese rechazo de Mandrake? Por que ese rechazo de Mandrake aunque te lo pidan explicitamente?

Salut,
Sinner


--
Sinner from the Prairy
Pogüered bai Mandrake
BOFHers Syndicate http://bofhers.org
[ Padre ]


No es rechazo (3.00 / 2) (#12)
por suy (suy21.existe-en.lycos.es) a las Fri Feb 28th, 2003 at 04:46:58 PM CET
(Información Usuario) http://lacurva.net/

No es rechazo, es desconocimiento. Donde me he "formado" como usuario de linux, es en la lista de Bulma, y ahora, los linuxeros que estamos haciendo un pequeño grupo de usuarios en Barcelona, son también básicamente Debianitas (almenos bastantes), así que tan solo con Debian, y con Red Hat, tengo una buena experiencia, y confianza.

Con Debian me encuentro que ha sido muy muy fácil el coger una Woody, y actualizar a kde 3.1, incluso en el ibook. De hecho, en la última quedada, un mandrakero, me preguntó por la distro que usaba en el ibook, ya que tenía problemas con su mandrake.

Ya veremos con que distro acaba, pero desde luego, el sistema de paquetes, y de configuración de Debian, me parece sensacional.

Un saludo.


Esto será mi vida, porque es lo único importante en ella.
Y, si fracaso, moriré, porque para mí no existe nada más.

Raistlin Majere
[ Padre ]


 
Copiar cache (2.00 / 1) (#6)
por ch3m4 a las Tue Feb 25th, 2003 at 12:06:10 PM CET
(Información Usuario) http://zaralinux.org

Utilizo apt4rpm en equipos con SuSE. Cuando quiero actualizar un equipo que tengo con internet lenta (modem) lo que hago es copiarme de otro los directorios /var/cache/apt/ y /var/state/apt/ (y por si acaso el /etc/apt/sources.list). El apt-get pilla los paquetes de la cache sin problemas.

[ Padre ]


eso no vale siempre (none / 0) (#9)
por Envite a las Wed Feb 26th, 2003 at 12:58:43 AM CET
(Información Usuario)

Hay gente que borra los caches... simplemente porque no les sobra espacio en disco.
No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a decirlo.
Voltaire

[ Padre ]


 
Teniendo ADSL (none / 0) (#5)
por Envite a las Tue Feb 25th, 2003 at 09:26:49 AM CET
(Información Usuario)

Hombre teniendo ADSl, creo que la mejor opcion es que se baje y se queme los 8 CDs de la Debian GNU/Linux 3.0rc1 que no es tanto rato. Yo andaba con una Potato (comprada, no de revista), y en cuanto tuve el ADSL me queme los 8 CDs de la 3.0rc0 (la que habia entonces) y la instale, y ahora tengo en el cron de root un apt-get update y un apt-get dist-upgrade -s, para controlar que paquetes van mejorando. Y menudo susto me dio el ultimo KDE cuando salio, que tuve que actualizar toneladas de paquetes...
No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a decirlo.
Voltaire

[ Padre ]


Gracias (2.00 / 1) (#10)
por suy (suy21.existe-en.lycos.es) a las Wed Feb 26th, 2003 at 01:53:46 PM CET
(Información Usuario) http://lacurva.net/

En realidad tengo los CDs de Woody, aunque los que no están sin revisar (tampoco importa mucho estando security.debian.org). La "gracia" era que tuviera el sistema a tope en poco tiempo, y que tenga todo funcionando sin tener que esperar unos 30 minutos a que se baje el kde entero :-/.

Además, yo tengo adsl con router, y no sé si sabré configurarle el modem usb ese (a googlear tocan).

Gracias por el comentario. Un saludo.


Esto será mi vida, porque es lo único importante en ella.
Y, si fracaso, moriré, porque para mí no existe nada más.

Raistlin Majere
[ Padre ]


 
¡OLÉ! (2.00 / 1) (#8)
por Navegant a las Tue Feb 25th, 2003 at 10:21:07 PM CET
(Información Usuario)

En efecto, más que un artículo debería ser un mini Howto.
Estas cosas son las que más se agradecen de las web dedicadas al software libre. Gracias ;-)



 
Cómo construir un CD Debian extra | 12 comentarios (9 temáticos, 3 editoriales, 0 ocultos)
Ver: Modo: Orden:

ecol Logo Powered by Scoop
Todas las Marcas Registradas y copyrights de esta página son propiedad de sus respectivos dueños.
Los comentarios son propiedad del que los escribe.
Los iconos de las noticias y el logotipo son propiedad de Javier Malonda.
El Resto © 2002 Escomposlinux.org y aledaños.

Puedes sindicar los contenidos de libertonia en formato RSS 1.0 y RDF 0.9. También se puede sindicar la cola de envíos pendientes de moderación.

El proyecto escomposlinux.org está dedicado a la memoria de tas

crear cuenta | faq | búsqueda