El viaje del código fuente a producción

Bueno pues ya he terminado un nuevo post en los blogs de Andago que he titulado El viaje del código fuente a producción. Para los que seguís mi blog pero igual no el de Andago voy a poner siempre un post enlazando mis artículos allí y con algún comentario adicional, tipo «behind the scenes», jajajaja. El post lo podéis encontrar en:

El viaje del código fuente a producción

La verdad es que era un post que tenía bastantes ganas de escribir porque a lo mejor así sobre el «papel» no parece un gran trabajo o un gran avance, pero para nosotros sí lo ha sido y creo que ha merecido la pena aunque aún tengamos mucho que avanzar.

walle-debian

Por cierto, habéis notado, aparte del tux que sustituye a la cucaracha amiga, el logotipo de Debian en el paquete que construye nuestro querido wall-e particular, jajajaja, el David a parte de un crack que es un artista. La otra foto, la de los servidores de virtualización la he tomado prestada del blog de mi compi de sistemas el manytas.

Pues que lo disfrutéis, y cómo en el blog de Andago aún no se permiten comentarios anónimos podéis hacerlo aquí. 😀

Whyfloss 2009

Aprovechando que hoy es fiesta en Getafe he podido pasarme el día entero en la Whyfloss que además se celebraba en el campus de Leganés de la Univ. Carlos III, con lo que me venía genial. Algunos pensarán que soy masoca porque en mi día libre me voy a pasar todo el día encerrado en unas charlas de Software Libre, pero la verdad es que yo disfruto cómo un enano. Aquí os dejo el enlace a la edición anterior a la que asistí.

whyfloss2009

En lugar de narrar toda la historia, voy a lanzar algunas ideas sobre el evento desde mi punto de vista, algunas ya las lanzé a través de mi twitter:

– ¿Por qué las empresas se empeñan en menospreciar la contribución e importancia de la comunidad en ell Software Libre? Señores, para ensalzar algo no hace falta pisotear otros, aquí va una recomendación para sus charlas «empresariales» sobre Software Libre: «aparte del esfuerzo de la comunidad también hay empresas cómo la nuestra para responsabilizarse de este o aquel desarrollo o soporte a un producto de Software libre», es decir sumemos en lugar de restar.

– La charla de Red Hat sobre virtualización demasiado superficial, casi he disfrutado más los cinco minutos de impresiones que he cambiado con el ponente en la cafetería.

– Me ha gustado la charla de @abiquo de introducción al mundo del Cloud y a su propuesta para la gestión de nubes: abicloud. Prometo probarla para ver si encaja en los proyectos de Saas que estamos desarrollando en Andago.

– Impresionante la arquitectura LAMP de Prisacom. Por un lado todo un orgullo que algunos de los mayores periódicos españoles se sirvan con Software Libre, pero por otro un trabajo de arquitectura impecable. Nos presentaron las distintas capas de las que disponen para evitar los excesos de trafico: en primer lugar Akamai, luego frontales Apache que realizan caché de segundo nivel antes de llegar a los servidores de contenidos php conectados con los clusters de Mysql. El único pero es que se pasaran hace algún tiempo de Debian a OpenSuse por temas de compatibilidad hardware, pero bromas aparte, chapó.

– La otra charla que me ha puesto los pelos de punta ha sido la de Martin Garcia, Jefe de Informática del Gobierno de Valencia que nos ha explicado cómo toda la consejería de Transportes e Infraestructuras se migraron a Software Libre, tanto en los escritorios con Lliurex cómo creando aplicaciones tan famosas cómo gvSig para reemplazar las herramientas propietarias que hacían uso. Que pena que tan poquita gente lo tenga tan claro cómo Martín, que tal y cómo contaba el primer motivo para migrar fue el impresionante ahorro económico en Licencias y que tras probarlo se ha convertido en todo un impulsor del Software Libre. Cuando nos encontramos en el pasillo no he podido sino felicitarle por su visión y por todo lo que ha llevado a cabo.

– Otra grata sorpresa ha sido comprobar que Bitnami era una empresa Española. Hace tiempo había dado con su web y me pareció una idea muy interesante: proveen de paquetes instalables multiplataforma de algunas de las soluciones de Software Libre más usuales cómo WordPress, Joomla, Alfresco, y muchas más. También ha sido muy interesante ver la visión de negocio internacional que tiene su director Daniel López y su explicación de algunos temas a tener en cuenta al respecto cómo los horarios en el resto del mundo para temas de soporte global.

– Me ha gustado la demo de EzWeb de TID, había probado antes la aplicación pero no estaba tan acabada. Muy fácil de configurar y muy flexible parece una herramienta de mashup, peazo palabrota, a tener en cuenta, aunque sigo pensando que provablemente la mayor parte también se podía hacer con Liferay, aunque no sé si mejor o peor. La única duda que me quedaba me la resolvió @JuanjoHierro y era si se podía integrar con portales ya desplegados y me comentó que incluso tenían una demo dentro de otro portal e incluso de un Liferay, si es que está todo ya inventao.

– Otra de las partes que más he disfrutado ha sido charlar con la gente: de nuevo me encontré con mi paisano Javier del CESLCAM y charlamos de cómo van muchos temas de Software Libre por mi Mancha querida, muchos twitteros por la sala, Andrés Leonardo de TID con el que he coincidido ya en varios eventos, todos los chicos del GUL de la UC3M a los que felicito por su gran trabajo en la logística y mejor no sigo nombrando porque seguro que me dejo a mucha gente.

Conclusión… ¿cuando es el próximo evento de la Comunidad? Irme haciendo sitio… eso sí he descubierto que el portatil del curro ya está demasiado viejo y me dura media hora la batería, cachis, ahora que eramos tan amigos, así que tendré que irme pensando en ahorrar para pillarme un móvil con Android con el que me habría ahorrado el portátil. 😀

Empaquetando (II)

En primer lugar deciros que ya está disponible para descarga el primer paquete Debian de las Soluciones Andago, en este caso se trata de OpenGeoServices y podéis descargarlo aquí, y probarlo sobre Debian Etch, tras rellenar un pequeño formulario de registro. Cualquier comentario o problema que encontréis no dudéis en enviarmelo.

Mientras tanto he seguido depurando mis paquetillos y aprendiendo de los errores que voy cometiendo, así que voy a comentar un poco más sobre el proceso de empaquetado para dummies, como un servidor.

Un tema muy importante que debemos tener en cuenta a la hora de crear nuestro paquete es el proceso de actualización del mismo. Una vez que nuestro paquete ha sido distribuido y decidimos empaquetar una nueva versión, debemos dominar el proceso exacto de actualización de dicho paquete. Yo inicialmente pensaba que el paquete se actualizaba encima del anterior mientras que algunos compañeros apostaban porque primero se desinstalaba el anterior para dejar paso a la instalación del nuevo. Bueno pues el sitio correcto para comprobarlo era la página man de dpkg que nos indica cuál es el proceso de instalación de un paquete, y lo que ocurre si ya hay una versión anterior del mismo instalada.

dpkg -i | –install package-file…

La instalación consiste en los siguientes pasos:

1. Extraer los ficheros de control del nuevo paquete.
2. Si ya se había instalado otra versión del mismo paquete antes de la nueva instalación, se ejecuta el script prerm del viejo paquete.
3. Se lanza el script preinst, si el paquete dispone de uno.
4. Desempaquetamos los nuevos ficheros, y al mismo tiempo hacemos backup de los viejos, para que en caso de que algo vaya mal, puedan ser restaurados.
5. Si ya se había instalado otra versión del mismo paquete antes de la nueva instalación, se ejecuta el script postrm del viejo paquete. Tenga en cuenta que este script se ejecuta después del script preinst del nuevo paquete, ya que los nuevos ficheros se escriben al mismo tiempo que se borran los viejos.
6. Se configura el paquete. Consulta –configure para información detallada de cómo se realiza esto.

Así que el siguiente paso sería el de configure habitual:

dpkg –configure package …

La configuración consiste en los siguientes pasos:

1. Desempaquetes los ficheros de configuración, y al mismo tiempo hacer backup de los antiguos ficheros de configuración, de forma que puedan ser restaurados si algo va mal.

2. Lanzar el fichero de postinstalación, si el paquete dispone de uno.

Cómo se observa, se mezclan los scripts de desinstalación del paquete anterior y del nuevo, con lo que desde el principio debemos ser cuidadosos con este tema y tenerlo en cuenta para cuando lancemos una nueva versión del paquete.

Bueno y por ahora voy a dejar de empaquetar programas y empezar a empaquetar mi maleta porque desde esta tarde comienzan mis vacaciones. 😀

Empaquetando

Tranquilos que no estoy empaquetando mis cosas para irme a otro lado y ni siquiera este post es para contar que ya me queda poco para empaquetar la maleta rumbo a mis merecidas vacaciones en México. La historia va de que desde hace tiempo tenía una espinita clavada en mi espíritu Linuxero y es que nunca me había puesto a crear mis propios paquetes de Debian. Bueno pues las últimas semanas y cómo parte de uno de los objetivos del departamento de Arquitectura de Andago he estado empaquetando algunas cosillas con dos objetivos: facilitar la instalación de nuestros desarrollos a la hora de desplegar soluciones y por otro lado distribuir las versiones Comunity de nuestras soluciones.

En primer lugar indicar que aunque crear un paquete no es un proceso sencillo tampoco es la mar de complicado si tienes algo de experiencia en el funcionamiento de Debian. Por otro lado me quito el sombrero ante todos los desarrolladores de Debian que durante todo este tiempo nos permiten disfrutar de la mejor distribución del planeta, porque el trabajo de crear y mantener un paquete con la calidad exigida por Debian es una tarea complicada.

No voy a replicar aquí el proceso de creación de un paquete porque hay muchos manuales en internet sobre ello y porque me llevaría bastante tiempo, pero voy a hacer algunos comentarios… Como siempre para hacer un paquete lo mejor es fijarnos en los que ha echo otra gente, para ello podemos usar el comando apt-get source y aprender cómo está echo su fichero de control, sus scripts de post y pre instalación y borrado, etc… Podemos encontrar así muchos pasos que no se nos habrían ocurrido y que pueden ser interesantes, así cómo comprobar el proceso correcto de crear un usuario para dicho paquete, reiniciar servicios, etc…

También nos será de gran ayuda pasarle Lintian a nuestro paquete cómo parte del proceso de depuración del mismo. Lintian nos indicará muchos de los errores más comunes a la hora de empaquetar y también nos ayudará a seguir de una forma más adecuada la Debian Policy. Por ejemplo yo no conocía la existencia del comando mktemp para la creación de ficheros temporales y que es mucho más útil que implementarlo nosotros a mano.

Otra parte con la que estuve trasteando fue con el uso de Debconf para la iteración con el usuario a la hora de instalar y configurar el paquete. El sistema de templates que posee es bastante potente y muy versátil, además que es muy fácil integrarlo con los scripts de gestión del paquete. Aún así me costó un poco pillarle el tranquillo ya que a veces se quedaba colgado al hacer algunas cosas raras. Un apunte que me resultó bastante curioso en alguno de los manuales de Debconf es el que te indica que no debes usarlo cómo un registro unificado de configuración al estilo Guindows… señores que esto es un sistema Unix, me moría de la risa.

El proceso de construcción de tu propio repositorio es bastante sencillo y una vez que has depurado el paquete y está listo para probar e instalar es una gozada ver lo fácil que es instalar un programa con una sola línea mientras que antes necesitabas un manual de 50 páginas de pasos a realizar.

En cuanto termine de pulir alguno de los paquetes sobre los que he estado trabajando y estén listos para ser públicos os pasaré un link por si los queréis probar y/o depurar, mientras sigo empaquetando…

Y no olvides llevar tu BusyBox

La verdad es que BusyBox puede salvarte la vida si has hecho alguna burrada con tu sistema linux. Se trata de una shell con muchas de las herramientas más comunes (cp, mv, etc…) implementadas en su interior.

Medical Kit

De hecho la que es realmente interesante es la versión static que no depende de ninguna librería con lo cuál puede salvarte cuando el resto te falla. Así que no lo dudes y déjala por algún sitio en todos tus sistemas Linux. En debian es tan sencillo cómo ejecutar:

apt-get install busybox-static

Por cierto, cómo curiosidad, esta es la shell que se ejecuta en los instaladores de Debian cuando abrimos una consola durante dicho proceso. De nuevo gracias a Isma por presentarme tan interesante utilidad.