Ayer fue un día intenso para mi con unidistro. Primero René nos dio una PACO sobre el asunto. Cuando llegué a casa tenía ganas de probarlo y estuve jugueteando un poco. Básicamente hice lo mismo que había hecho René en la charla. Al final, utilizando un isolinux de un CD de Bardinux, logré generar la iso correspondiente, aunque no la llegué a probar.
Tras estar jugando un rato me surgieron muchas cosas que se podrían hacer para mejorar el sistema pero no me había enfrentado al código. Una de las cosas que se me ocurrió era que los scripts en BASH podrían sobrar; pero claro hacer esto sin tener ni idea del código es complicado, así que se lo comenté al maestro de la comunidad y ahí quedó. Después, en mi ratito de unidistro, me puse a cambiar el módulo que se utiliza para parsear la entrada. Antes usábamos getopt, que no parecía ser suficientemente bueno.
Tras googlear un poco vi un módulo llamado optparser que servía para lo mismo y además forma parte del core de python. Siguiendo la documentación del módulo para python 2.3 no fue difícil hacer un par de ejemplitos sencillos aunque tengo instalado python 2.5.1.
Tras las pruebas pruebas me puse a añadir las opciones reales. Hubo algunas que no incluí porque no funcionan en el framework todavía pero en esencia están todas. René llegó y hablando un poco con él nos dimos cuenta de que simplemente con este cambio y llevando a cabo las distintas opciones en el orden correcto podríamos conseguir el objetivo de hacer innecesarios los scripts en bash (al menos algunas veces).
Con una línea como:
python framework.py -r create -i psmisc -i unidistro -i unidistro-live -i unidistro-base -i unidistro-desktop-base -i kubuntu-kde4 -i kubuntu-kde4-desktop -i kubuntu-kde4-live -i kdebase-dev-kde4 -i kdebase-workspace-dev -i kdebase-runtime -i kdm -i kdm-kde4 -i ksmserver -i unidistro-office -m ../unidistro-data/kubuntu-kde4.xml
Hay que tener en cuenta que los múltiples -i son para instalar cada uno de esos paquetes; pero en realidad lo lógico es sólo haya una. Es decir si tu proyecto se llama bardinux tendrás un metapaquete que dependa de todo lo que haga falta para que se instalen todos los paquetes necesarios.
11 Dic 2007 at 18:42
Creo que un objetivo interesante puede ser aliviar aún más toda esa linea de comandos, tal como dices, y ademas, una opcion “-a” de automatica.
En una primera simplificación quedaría asi:
python framework.py -r create -i kubuntu-kde4 -m ../unidistro-data/kubuntu-kde4.xmlY en una segunda simplificación, podría quedar así:
python framework.py -a kubuntu-kde4Es decir, que ese nombre sea el nombre del xml (que se busca en los sitios correspondientes del sistema) y que ese xml tenga dentro una definicion de un paquete que se llame igual que la distro, que sea el que lo instala todo. El -a vendría por el significado de “automático”.
11 Dic 2007 at 21:01
Es la primera vez que discuto cosas de desarrollo en un blog, pero para tod hay siempre una primera vez.
Me mola la idea de alberto y la de esaú, utilizar convenios se ha demostrado que es bueno. No hay más que ver Django, RoR, etc … pero a mi personalmente no me disgusta que se puedan hacer las cosas de forma tradicional. Es más, en los dos ejemplos que he puesto, al menos en Django que es el que conozco, las cosas no hacen falta que se hagan utilizando los convenios, sino que si uno quiere fuerza a que las cosas no se hagan como los desarrolladores han pensado que se deben hacer. Por lo tanto me molaría el tener un -a siempre que se permitan el resto de opciones.
11 Dic 2007 at 21:16
Yo estoy de acuerdo con los dos. La opción -a (en realidad es mejor que no haya que poner ni siquiera eso) es el caso más común y por tanto debería ser el más simple, pero eso no quiere decir que no se pueda seguir utilizando el framework como hasta ahora se ha hecho.
En particular para el caso de que quieras montar una demo es muy posible que tengas que utilizar la opción
-d edit_by_handpara instalar lo que sea que quieras demostrar. En mi opinión carece de sentido quitar esa posibilidad ahora que la tenemos.12 Dic 2007 at 01:12
Me acabo de dar cuenta de que la línea de comando es incorrecta ya que faltan algunas opciones
python framework.py -d create -x -r create -i metapaquete -m ../unidistro-data/otro.xmlEs más correcto. Aquí creamos el debootstrap, los metapaquetes, el repositorio, instalamos un único metapaquete y generamos la iso.