El popular logotipo de Debian

Creando un DVD con los paquetes de Debian non-free y debian-multimedia

No todos tenemos un disco duro externo, ni suficiente espacio para mantener una copia del repositorio Debian en nuestras PCs. Entonces nos agenciamos para obtener los CD/DVDs de la distribución oficial de Debian, pero a veces también necesitamos paquetes de la rama non-free o de debian-multimedia para ese fichero compactado con winrar que se le resite al unrar-free, la última versión de flashplayer-mozilla o cualquier otra cosa que se nos ocurra.

Entonces llega una posible tabla de salvación, me haré un DVD que contenga estos paquetes pero ¿cómo?

Básicamente el proceso consiste en poner en el DVD la estructura de un repositorio Debian con los paquetes que queremos, personalmente utilizo lenny en plataforma i386. Dentro de un directorio temporal /dvd_root para preparar el DVD he optado por tener un directorio pool donde pondremos los paquetes deseados:

pool
pool/multimedia/main
pool/multimedia/main/…
pool/multimedia/non-free
pool/multimedia/non-free/…
pool/non-free
pool/non-free/…

y un directorio dists de la forma:

dists
dists/lenny
dists/lenny/multimedia
dists/lenny/multimedia/main
dists/lenny/multimedia/main/binary-i386
dists/lenny/multimedia/non-free
dists/lenny/multimedia/non-free/binary-i386
dists/lenny/non-free
dists/lenny/non-free/binary-i386

Entonces faltaría generar los ficheros de índice dentro de dists

Generando los ficheros «Packages» (apt-ftparchive al rescate)

Para generar el fichero Packages en dists/lenny/non-free/binary-i386 (por ejemplo) ejecutar

$ apt-ftparchive packages /dvd_root/pool/non-free > /dvd_root/dists/lenny/non-free/binary-i386/Packages

Packages.gz y Packages.bz2 se generan mediante:

$ cat /dvd_root/dists/lenny/non-free/binary-i386/Packages | gzip > /dvd_root/dists/lenny/non-free/binary-i386/Packages.gz
$ cat /dvd_root/dists/lenny/non-free/binary-i386/Packages | bzip2 > /dvd_root/dists/lenny/non-free/binary-i386/Packages.bz2

lo mismo para cada uno de los directrios */binary-i386

Faltaría entonces el fichero /dvd_root/dists/lenny/Release

$ apt-ftparchive release /dvd_root/dists/lenny > /dvd_root/dists/lenny/Release.tmp
$ mv /dvd_root/dists/lenny/Release.tmp /dvd_root/dists/lenny/Release

Con esto ya tenemos una estructura de directorios casi lista para quemar faltaría solamente crear un directorio

/dvd_root/.disk

con un fichero de texto

/dvd_root/.disk/info

en el que pondremos información sobre nuestro DVD, por ejemplo:

Unofficial Debian non-free + multimedia binary-i386 DVD

Ahora si podemos grabar el contenido de /dvd_root en la raíz de nuestro DVD o generar una imagen ISO lista para grabar mediante

$ mkisofs -o debian_non-free_multimedia_i386-DVD.iso -r dvd_root/

Solamente quedaría cuando tengamos listo el DVD unirlo a nuestro sources.list mediante

$ apt-cdrom add

Adjunto un script que utiliza debmirror para generar la imagen ISO automáticamente y es el que estoy utilizando para mi propio DVD, este script se incluye a sí mismo dentro de la imagen final.

S@lu2

wzaldivar

#+------------------- INICIO SCRIPT ----------------------------+
##########################################################################
#                                                                        #
# prepare_dvd.sh: Prepara un DVD con debian/non-free y debian-multimedia #
# Copyright (C) 2010 Walber Zaldivar          #
#                                                                        #
# This program is free software: you can redistribute it and/or modify   #
# it under the terms of the GNU General Public License as published by   #
# the Free Software Foundation, either version 3 of the License, or      #
# (at your option) any later version.                                    #
#                                                                        #
# This program is distributed in the hope that it will be useful,        #
# but WITHOUT ANY WARRANTY; without even the implied warranty of         #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the          #
# GNU General Public License for more details.                           #
#                                                                        #
# You should have received a copy of the GNU General Public License      #
# along with this program.  If not, see .  #
#                                                                        #
##########################################################################

#! /bin/bash

debian_mirror_host=ftp.us.debian.org
debian_mirror_root=debian

debian_multimedia_host=www.debian-multimedia.org
debian_multimedia_root=/

dist=lenny
arch=i386

# debian/non-free
echo Preparando paquetes de debian/non-free

debmirror 
    --section=non-free 
    --nosource 
        --progress 
    --host="$debian_mirror_host" 
    --method=http 
    --timeout=3600 
    --root="$debian_mirror_root" 
    --dist="$dist" 
    --arch="$arch" 
    --postcleanup 
    --ignore-missing-release 
    --ignore-release-gpg 
    --ignore-small-errors 
        --pdiff=none 
    debian

mkdir -p dvd_root/pool
mv debian/pool/non-free dvd_root/pool/
rm -Rf debian

# debian-multimedia
echo Preparando paquetes de debian-multimedia

debmirror 
    --section=main,non-free 
    --nosource 
        --progress 
    --host="$debian_multimedia_host" 
    --method=http 
    --timeout=3600 
    --root="$debian_multimedia_root" 
    --dist="$dist" 
    --arch="$arch" 
    --postcleanup 
    --ignore-missing-release 
    --ignore-release-gpg 
    --ignore-small-errors 
        --pdiff=none     
    debian-multimedia

mkdir -p dvd_root/pool/multimedia
mv debian-multimedia/pool/main dvd_root/pool/multimedia/
mv debian-multimedia/pool/non-free dvd_root/pool/multimedia/
rm -Rf debian-multimedia

# indices
for rama in {non-free,multimedia/main,multimedia/non-free}
do
  echo Preparando dists/"$dist"/"$rama"/binary-"$arch"/Packages
  mkdir -p dvd_root/dists/"$dist"/"$rama"/binary-"$arch"
  apt-ftparchive packages dvd_root/pool/"$rama" > dvd_root/dists/"$dist"/"$rama"/binary-"$arch"/Packages.tmp
  apt-sortpkgs dvd_root/dists/"$dist"/"$rama"/binary-"$arch"/Packages.tmp > dvd_root/dists/"$dist"/"$rama"/binary-"$arch"/Packages
  rm dvd_root/dists/"$dist"/"$rama"/binary-"$arch"/Packages.tmp

  echo Preparando dists/"$dist"/"$rama"/binary-"$arch"/Packages.gz
  cat dvd_root/dists/"$dist"/"$rama"/binary-"$arch"/Packages | gzip > dvd_root/dists/"$dist"/"$rama"/binary-"$arch"/Packages.gz

  echo Preparando dists/"$dist"/"$rama"/binary-"$arch"/Packages.bz2
  cat dvd_root/dists/"$dist"/"$rama"/binary-"$arch"/Packages | bzip2 > dvd_root/dists/"$dist"/"$rama"/binary-"$arch"/Packages.bz2
done

echo Preparando dists/"$dist"/Release
apt-ftparchive release dvd_root/dists/"$dist" > dvd_root/dists/"$dist"/Release.tmp
mv dvd_root/dists/"$dist"/Release.tmp dvd_root/dists/"$dist"/Release

# info
echo Preparando .disk/info
mkdir -p dvd_root/.disk
echo Unofficial Debian non-free + multimedia binary-"$arch" DVD - $(date -Ru)> dvd_root/.disk/info

# adicionar script
mkdir dvd_root/script
cp prepare_dvd.sh dvd_root/script/

# crear la imagen iso
echo Creando imagen iso del DVD
mkisofs -o debian_non-free_multimedia_"$arch"-DVD.iso -r dvd_root/

# limpiar
echo Limpiando el directorio
rm -Rf dvd_root
#+------------------- FIN SCRIPT ----------------------------+

¿Te resultó interesante? Compártelo ...



GUTL

Publicado por GUTL

Forma parte de GUTL desde el 6 diciembre, 2011.

Este artículo tiene 2 comentarios

  1. hola hermano que buena tu preocupación de explicarles a la comunidad la manera de crear un dvd, yo estoy a favor de la migración, pero para poner un ejemplo he ido en varias ocasiones, al Palacio Central de Computación y nunca existe una imagen dvd de alguna distro que contenga todas las aplicaciones basicas, para así poder llegar al laboratorio de una escuela y poder instalarlo sin necesidad de recurrir a tener que buscar el repo de dicha distro, pienso que si existieran diferentes imagenes dvd de las diferentes distribuciones, fuera mas facil la migración por lo menos en las escuelas o hasta en las Entidades.

  2. ¡Excelente tip!

    Así se puede prevenir casos en los cuales se requiera acceder a los repos para poder así instalar de forma semiautomáticas los drivers propietarios.

Los comentarios están cerrados.