Espanol
Unidistro es un framework para creación de distribuciones linux derivadas de Debian/Ubuntu. Inicialmente el proyecto surge de distintas universidades, es de ahí de donde viene el nombre del proyecto, una mezcla entre universidad y distribución.
Actualmente el proyecto está hospedado en launchpad
Requisitos
- debootstrap
- dpkg-dev
- squashfs-tools
- coreutils
- gzip
- mkisofs
- e2fsprogs
- dput
Hay paquetes disponibles para gutsy en el ppa de Agarfu.
deb http://ppa.launchpad.net/agarfu/ubuntu gutsy main deb-src http://ppa.launchpad.net/agarfu/ubuntu gutsy main
Si quieres crearte tu propia distribución utilizando unidistro, el paquete que necesitas es undisitro-framework. Hay muchos otros paquetes en el repositorio que se utilizan para otros menesteres.
La versión de desarrollo está actualmente hospedada en Launchpad
bzr branch http://bazaar.launchpad.net/~unidistro/unidistro/unidistro
Documentación
Usage: framework.py [options] config_file [package1 package2 ...] note if you select -i or -u at least one package MUST be provided Options: --version show program's version number and exit -h, --help show this help message and exit -d DBS_ACTION, --debootstrap=DBS_ACTION Debootstrap action to run -i INSTALL_PACKAGES, --install_package=INSTALL_PACKAGES A package to install -p GENPACKAGES, --gen-package=GENPACKAGES Packages to build -u REMOVE_PACKAGES, --remove_package=REMOVE_PACKAGES A package to remove -m, --make_iso Generate the iso -x, --create_metapackages Create metapackages -y, --create_configpackages Create configpackages -r REPOSITORY, --repository=REPOSITORY Repository action to run -t THE_TEMPLATE, --template=THE_TEMPLATE Generate a template -S, --source Build only binary packages -g, --gpgsign Sign created packages -k KEYID, --key-id=KEYID GPG's ID -U UPLOADREPO, --upload=UPLOADREPO Upload packages using dput -l, --list-packages List packages
Unidistro
Unidistro es un proyecto que nació de la colaboración entre varias universidades, inicialmente la Universidad de Sevilla, la Universidad de Las Palmas de Gran Canaria, la Universidad Rey Juan Carlos III, la Universidad de La Laguna, la Universidad de Huelva y la UNED.
El objetivo del proyecto es generar una herramienta cómoda para la creación de distribuciones universitarias. Entre los objetivos del proyecto está la compartición de conocimiento relacionado con qué aplicaciones son útiles a cada sector de usuarios de la universidad. Pasando por alumnos, profesores e investigadores de las diferentes titulaciones hasta llegar al personal de administración y servicios. También se encuentra la facilitación de la tarea de obtener varias distribuciones con diferentes sabores, por ejemplo, una para reparti al alumnado y otra para utilizar en las máquinas de la institución con el software y los servicios preconfigurados.
El proyecto está actualmente hospedado en el launchpad de ubuntu https://launchpad.net/unidistro/
Para descargar del bzr el proyecto:
bzr branch http://bazaar.launchpad.net/~unidistro/unidistro/unidistro
El framework para la creación de distribuciones
El framework se basa en la utilización de documentos XML para definir diferentes cuestiones de la distribución, como nombre, repositorio principal, distribución base, etc ... así como la definición de paquetes de configuración y metapaquetes para instalar software adicional.
La herramienta está pensada para poder derivar de cualquier distribución basada en debian, pero actualmente sólo hay paquetes para crear distros derivadas de ubuntu. Un fichero de configuración típico constará de una sección en la que definiremos cuestiones como directorios para la generación, distribución padre, repositorios de los que partir, etc ... y otra parte de definición de paquetes de nuestra distribución.
Una de las ventajas del framework es que permite la generación de versiones para diferentes arquitecturas de forma muy simple, prácticamente cambiando el tag arch de la configuración nos es suficiente.
Los tags de la configuración están bastante claro, excepto los build_reposiories. Estos son los repositorios de los que se descargarán los paquetes que se quieran instalar y los repositorios que finalmente permanecerán en la distribución live.
<configuration> <project_name>unidistro</project_name> <project_dir>/bardinux/</project_dir> <live_extra_content_dir>live-extra/</live_extra_content_dir> <debfiles_dir>debs</debfiles_dir> <tmp_dir>/bardinux/tmp</tmp_dir> <remove_tmp_files>yes</remove_tmp_files> <repository_dir>var/tmp/paquetes</repository_dir> <repository_remote_base>http://archive.ubuntu.com/ubuntu</repository_remote_base> <base_distribution>feisty</base_distribution> <arch>i386</arch> <build_repositories> <repository>deb http://archive.ubuntu.com/ubuntu gutsy main universe multiverse</repository> <repository>deb http://ppa.launchpad.net/tsimpson/ubuntu gutsy main</repository> <repository>deb http://ppa.launchpad.net/agarfu/ubuntu gutsy main</repository> </build_repositories> </configuration>
En el framework a históricamente teníamos la posibilidad de generar dos tipos diferentes de paquetes, metapaquetes y paquetes de configuración. Con la evolución del framework hemos fusionado ambos tipos de paquete ya que los paquetes de configuración son un superconjunto de los metapaquetes. Con esta fusión hemos eliminado la dependencia de equivs y tenemos capacidad de generar paquetes fuentes de todo lo que especificamos en el framework. Esto nos da la posibilidad de utilizar de forma automatizada "dput" para subir los nuevos paquetes a los repositorios.
Metapaquetes
Un metapaquete es un paquete que no instala software, sólamente tiene dependencias, predependencias, confictos, recomendaciones, etc ... En el framework de unidistro la creación de un metapaquete es tan simple como añadir su descripción a un fichero en xml.
<configpackages> <package name="unidistro-live"> <priority>optional</priority> <section>metapackages</section> <maintainer name="Carlos De La Cruz Pinto" email="carlos@ssl.ull.es"/> <architecture>all</architecture> <version>0.2</version> <depends> <pkg>casper</pkg> </depends> <recommends> <pkg>ubiquity-ubuntu-artwork</pkg> <pkg>xfsprogs</pkg> <pkg>jfsutils</pkg> <pkg>ntfsprogs</pkg> <pkg>discover1</pkg> <pkg>man</pkg> <pkg>man-db</pkg> <pkg>groff-base</pkg> <pkg>xresprobe</pkg> <pkg>laptop-detect</pkg> <pkg>linux-image-generic</pkg> <pkg>command-not-found</pkg> </recommends> <description>Metapackage to create an unidistro distribution.</description> <bugs>becarios@ssl.ull.es</bugs> <origin>Unidistro</origin> </package> </configpackages>
Este metapaquete de ejemplo dependerá de todos los paquetes que están listados en el tag <depends>. En la configuración de apt de Ubuntu, se especifica que se instalen todas las sugerencias de los paquetes que pertenezcan a la sección metapackages. Además de este tag podemos utilizar los siquientes:
<suggests> <pkg>mozilla-firefox</pkg> </suggests> <pre-depends> <pkg>bash</pkg> <pkg>python</pkg> <pkg>audacity</pkg> </pre-depends> <depends> <pkg>gnuplot</pkg> <pkg>octave</pkg> </depends> <recommends> <pkg>audacity</pkg> </recommends> <conflicts> <pkg>emacs21</pkg> </conflicts> <replaces> <pkg>unidistro-ingenieria</pkg> </replaces>
Paquetes de configuración
Un paquete de configuración es un paquete que es capaz de instalar ficheros en diferentes directorios y crear diverts de otros ficheros de configuración que pertenezcan a otros paquetes diferentes al nuestro, rodeando de esta manera a la debian policy.
<configpackages> <package name="unidistro-live"> <priority>optional</priority> <section>base</section> <maintainer name="Carlos De La Cruz Pinto" email="carlos@ssl.ull.es"/> <architecture>all</architecture> <version>0.2</version> <depends> <pkg>casper</pkg> <pkg>ubiquity-frontend-kde</pkg> <pkg>ubiquity-ubuntu-artwork</pkg> <pkg>xfsprogs</pkg> <pkg>jfsutils</pkg> <pkg>ntfsprogs</pkg> <pkg>discover1</pkg> <pkg>man</pkg> <pkg>man-db</pkg> <pkg>groff-base</pkg> <pkg>xresprobe</pkg> <pkg>laptop-detect</pkg> <pkg>linux-image-generic</pkg> <pkg>command-not-found</pkg> </depends> <copyright>unidistro-live/copyright</copyright> <diverts> <file genuine="/ruta/a/sustituir/en/la/distro.sh">ruta/hasta/el/fichero/partiendo/de/projectdir</file> <file genuine="/ruta/a/sustituir/en/la/distro.desktop">ruta/hasta/el/fichero/partiendo/de/projectdir</file> <file genuine="/ruta/a/sustituir/en/la/distro.directory">ruta/hasta/el/fichero/partiendo/de/projectdir</file> <file genuine="/ruta/a/sustituir/en/la/distro.png">ruta/hasta/el/fichero/partiendo/de/projectdir</file> </diverts> <install> <file installpath="/ruta/a/instalar/en/la/distro">ruta/hasta/el/fichero/partiendo/de/projectdir</file> <file installpath="/ruta/a/instalar/en/la/distro">ruta/hasta/el/fichero/partiendo/de/projectdir</file> <file installpath="/ruta/a/instalar/en/la/distro">ruta/hasta/el/fichero/partiendo/de/projectdir</file> </install> <changelog> <log maintainer="René Martín Rodríguez" email="rene@ssl.ull.es" datetime="Mon, 23 Jul 2007 17:09:20 +0100" version="0.1"> Primera versión del paquete de configuración de bardinux ... </log> </changelog> <description>Metapackage to create an unidistro distribution.</description> <bugs>becarios@ssl.ull.es</bugs> <origin>Unidistro</origin> </package> </configpackages>
En este tipo de paquetes también podremos utilizar las etiquetas que soportan los metapaquetes y además las etiquetas diverts e install. Los ficheros que están entre los tags diverts instalan el fichero que se le indica en la distribución que se genera y añade un dpkg-divert del fichero que aparece en el atributo installpath. Esto vale, por ejemplo para poner nuestra propia configuración de cualquier servicio. Por ejemplo, si queremos cambiar la configuración de samba por defecto deberemos robreescribir /etc/samba/smb.conf. Si nosotros hacemos un paquete que instale este fichero, el sistema de paquetería evitará instalar nuestro paquete informándonos de que uno de los ficheros del mismo pretende sobreescribir un fichero (/etc/smb/samba.conf) que pertenece a otro paquete. Para evitar esto lo que haremos es instalar /etc/samba/smb.conf.unidistro, hacer un dpkg-divert de /etc/samba/smb.conf y seguidamente hacer un enlace simbólico desde /etc/smb/samba.conf.unidistro a /etc/smb/samba.conf. Además nuestro paquete es lo suficientemente inteligente, para que una vez que se desinstale deshaga el cambio hecho y vuelva a dejar el fichero de configuración del paquete original.
Generación de paquetes
Una vez que tengamos definido en el xml el paquete necesitaremos generar el .deb, para ello simplemente tendremos que ejecutar el framework pasando el flag -y
./framework fichero_xml_de_configuracion.xml -y
Esto nos dejará en el directorio que le hayamos especificado en el fichero de configuración un .deb que contiene lo que hemos descrito en el xml.
Creando una distribución live
Para crear una distribución live los pasos que tendremos que seguir son los siguientes:
- Crear una instalación base (debootstrap)
- Si los hubiera, generar los paquetes que tenemos en el xml.
- Generar un repositorio local con los paquetes generados.
- Instalar cuantos paquetes querramos
- Limpiar la distribución live de "impurezas"
- Generar la iso final.
./framework fichero_xml_de_configuracion.xml -d create -y -r create -i paquete_a_instalar1 -i paquete_a_instalar2 -m
Unidistro/Espanol (last edited 2008-08-06 17:01:13 by localhost)