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 ----------------------------+
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.
¡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.