MarioDebian, mi devlog

Bitácora de un desarrollador newbie.

NUEVA URL==> dnsmasq: esto si que es efectividad (en mariodebian.com)
dnsmasq: esto si que es efectividad

Bug con parche sobre dnsmasq [532201] (realmente muy sencillo) y un día después nuevo upstream con el parche aplicado.

Acaba de llegarme el correo con el parche cerrado.

Así da gusto no como otros (aunque ponga Fix Released no lo han arreglado).





NUEVA URL==> Posicionamiento web de TCOS (en mariodebian.com)
Posicionamiento web de TCOS

Revisando estadísticas de la web de TCOS, me he llevado una grata sorpresa:

debian thin client [en google]

Esto me anima aún mas para seguir con el trabajo de subirlo a Debian... ya he solucionado muchos problemas y espero que en breve pueda estar listo.Tengo varios contactos con DD así que no creo que esta vez tenga problemas para que alguien esponsorice el paquete.





NUEVA URL==> Evolution 2.26 super inestable (en mariodebian.com)
Evolution 2.26 super inestable

Llevo 2 o 3 días maldiciendo evolution, la versión 2.26 recientemente incluida en Debian unstable peta más que una escopeta de feria.

Todos los bugs en su lista en alioth.



NUEVA URL==> Pavucontrol (en mariodebian.com)
Pavucontrol

El nuevo pavucontrol [Debian pkg] tiene una pinta estupenda:

Ya lo podían convertir en applet para tenerlo más a mano.

Revisaremos la traducción que no me acaba de convencer eso de "Frente izquierdo".

La entrada de hoy ha sido muy cortita (que estamos de fiesta).




Hace un año: Mi historia en Max

NUEVA URL==> Squid 3.0 con soporte a X_FORWARDED_FOR (en mariodebian.com)
Squid 3.0 con soporte a X_FORWARDED_FOR

Cuando se mezcla Dansguardian con Squid en un proxy transparente existen ciertos inconvenientes que es bueno conocer.

  1. Dansguardian escucha las peticiones de la red interna en el puerto 8080, con iptables redirigimos todo el tráfico de salida a este puerto.
  2. Dansguardian pasa su petición a Squid por localhost al puerto 3128.
  3. Squid hace la petición y dansguardian la procesa.

Esto tiene un inconveniente y es que todas reglas acl o delay_pool en squid dejan de trabajar ya que todo el tráfico usa como IP cliente 127.0.0.1.

Existe un parche relativamente antiguo llamado follow_xff (pensado para versiones 2.x) que he reescrito en parte para que Squid3 use la cabecera X_FORWARDED_FOR. El parche se guarda en debian/patches en formato dpatch. Me falta el detalle de que no muestre un mensaje de no reconocer las nuevas reglas, porque funcionar sí lo hace.

Parece que en Debian (#523943) estaba activado, pero solo era un modificador de debian/rules, no había ni rastro de código y también parece que se ha añadido a Squid a partir de la versión 3.1.0.1.

He preparado un repositorio GIT de squid para compilarlo en Debian lenny con el parche y un simple «git-buildpackage».





NUEVA URL==> El xorg.conf más pequeño que hayas visto nunca (en mariodebian.com)
El xorg.conf más pequeño que hayas visto nunca

Hoy me ha dado por actualizar a la última versión de Xorg en Debian SID (1:7.4+1) y como ya había visto por el planet las quejas de la gente, estaba avisado que ahora HAL es el que configura en caliente las Xorg. Copia de seguridad de xorg.conf (por si las moscas) y dpkg-reconfigure xserver-xorg. He añadido a mano la línea del driver nvidia aunque no estoy seguro si hace falta.

$ grep -v -e ^$ -e ^# /etc/X11/xorg.conf
Section "Device"
Identifier	"Configured Video Device"
Driver		"nvidia"
EndSection

Reinicio y a pesar de parpadear un par de veces las X cargan y el monitor externo parece que lo reconoce y consigo configurarlo como extendido sin mucho problema.

Desde Octubre tengo un ratón Logitech Laser y la rueda tiene la función de botones laterales, en mi anterior xorg.conf tuve que hacer malabarismos para configurarlo como ratón de 7 botones, ahora con ayuda de xbindkeys funciona sin tocar nada:

$ grep -v -e ^# -e ^$ ~/.xbindkeysrc 
"xbindkeys_show" 
control+shift + q
"/usr/bin/xvkbd -xsendevent -text "\C\[Prior]""
m:0x0 + b:6
"/usr/bin/xvkbd -xsendevent -text "\C\[Next]""
m:0x0 + b:7

Con esta configuración puedo cambiar de pestaña del navegador o la consola de una manera super cómoda.

Ya para terminar último truco "GRATIX", mi portatil da 1680x1050 de resolución y hace unos meses me compré otro monitor (LG de 22") para trabajar con escritorio extendido (3360x1050).

Al usar el driver de NVidia estas obligado a usar su interfaz gráfico «nvidia-settings» y son un montón de clicks para configurarlo, en Launchpad he encontrado un proyecto super interesante: disper, son unos binding en python para que ataque a las libs de nvidia o a xrand y poder cambiar resolución mediante atajos de teclado, scripts o usandolos en otros programas...

Me he hecho un script y con un botón en el panel lo llamo:

#!/bin/sh
cd /home/mario/sources/disper/disper
RES=$(/usr/lib/tcos/screensize)
if [ "$RES" = "1680x1050" ]; then
# extend if CRT-0 is connected
python src/cli.py --list| grep -q "CRT-0" && python src/cli.py --extend
elif [ "$RES" = "3360x1050" ]; then
python src/cli.py --single
else
zenity --error --text="NVidia extend resolución desconocida ($RES)"
fi

Básicamente lo que hace es detectar la resolución actual y si es 1680x1050 y detecta el monitor CRT-0 la cambia a extendida (3360x1050), si ya está extendida la pone en simple deshabilitando el monitor externo. Si esto lo añadimos a un atajo de teclado tipo Fn+F6 ya tenemos el conector desconector de proyectores.

Por hoy nada más, voy a investigar como le sienta a TCOS el cambio de Xorg.





NUEVA URL==> NVidia en Debian con el kernel 2.6.29 (en mariodebian.com)
NVidia en Debian con el kernel 2.6.29

Es un verdadero dolor de cabeza cada vez que se cambia algo en el kernel y nvidia da largas.

Esta vez el motivo es una nueva versión de kbuild y diferentes modelos de empaquetado de las cabeceras del kernel (antes entre el common y el -686, por ejemplo, había enlaces para que el de cada arquitectura tuviera lo necesario del common, ahora parece que no)

He probado miles de cosas hasta que he dado con el truco para hacerlo funcionar, inspirado en un comentario de este bug de Debian: #520706. Primero hay que buscar el archivo Makefile_32.cpu y copiarlo en su sitio.

¿Como compilamos?

  1. Ejecutar module-assistant como siempre (y esperar el fallo) para así tenerlo descomprimido.
  2. Editar /usr/src/modules/nvidia-kernel/debian/rules y cambiar la línea:

    IGNORE_CC_MISMATCH=1 CC="$(CC)" $(MAKE) -C $(CURDIR)/$(dirname) -f Makefile SYSSRC=$(KSRC) $(KPKG_EXTRAV_ARG) KBUILD_PARAMS=$(KBUILD_PARAMS) module;

    por:

    IGNORE_CC_MISMATCH=1 CC="$(CC)" $(MAKE) -C $(CURDIR)/$(dirname) -f Makefile SYSSRC=/usr/src/linux-headers-2.6.29-1-common/ KERNEL_OUTPUT=$(KSRC) $(KPKG_EXTRAV_ARG) KBUILD_PARAMS=$(KBUILD_PARAMS) module;

  3. Ejecutar nuevamente m-a -O -t build,install nvidia (es muy importante el -O ya que así no descomprime de nuevo las fuentes, y nos chafa la edición)

En el bug comentaban de usar la variable $(KCOM), pero debo tener una versión de module-assistant que no genera esa variable.

Escribo desde un kernel 2.6.29-1-686 con el driver nvidia 180.44.

A todo esto y ya se que «glxgears» es una unidad de medida de una credibilidad nula, pero hay un aumento considerable de rendimiento desde el 180.22 o 180.29 (2.500FPS) a este 180.44 (4200 FPS) (NVidia Quadro NVS 140M).

Los paquetes deb del 180.44 me los hice hace tiempo para el 2.6.28, pero eso será una historia para otro día.





NUEVA URL==> Y ya van dos (en mariodebian.com)
Y ya van dos

Acaba de llegarme el mail de confirmación de un nuevo paquete Debian: p910nd.

Este pequeño paquete es un servicio que escucha en el puerto 9100 y siguientes (de ahí su nombre) y redirige las peticiones a un dispositivpo de impresora del tipo /dev/lpX, lo que venía haciendo en TCOS con lp_server (de dudosa licencia) o print_server (que nunca llegó a funcionar bien del todo).

Con este, son dos los paquetes de los que soy responsable en Debian, aunque dependo de un sponsor para las subidas, las dos personas que me han ayudado (xam@d.o y piotr@d.o) estan dispuestas a seguir esponsorizando las subidad y suelen ser bastante rápidos en responder.

¿Por qué subo estos paquetes?

En mi cruzada de subir TCOS a Debian, son las primeras y más sencillas dependencias, ahora me tengo que pegar con busybox o buscar otra alternativa a tinylogin, este es el Roadmap para subir TCOS a Debian.

La rama tcosdebian del paquete initramfs-tools-tcos es donde estoy trabajando los cambios para que el paquete sea más amigable con las políticas de Debian.





NUEVA URL==> Marketing bluetooth por proximidad: python-thinblue (en mariodebian.com)
Marketing bluetooth por proximidad: python-thinblue

ThinBlue es una aplicación desarrollada en python que envía archivos mediante el protocolo OBEX a dispositivos móviles (teléfonos por ejemplo).

Desde Thinetic Systems (empresa en la que trabajo) hemos liberado una primera versión (funcional, aunque beta) de esta aplicación bajo la licencia GPL2.

De momento tenemos un repositorio GIT con el código y en breve publicaremos paquetes *.deb para las versiones más usadas de Debian y Ubuntu.

Tienes más información en la noticia de nuestra web: ThinBlue, aplicación bluetooth para marketing por proximidad.

Una de las cosas más chulas ha sido desarrollar el panel de administración con el framework web: web.py , de hecho sin contar javascript, html o css son apenas 300 líneas.

A disfrutarla Wink





NUEVA URL==> Manteniendo paquetes Debian con GIT (en mariodebian.com)
Manteniendo paquetes Debian con GIT

Llevo ya un tiempo usando GIT y voy aprendiendo a manejarlo muy poco a poco.

Una de las cosas que más me gustan es la facilidad para tener varias ramas y poder crear paquetes deb de una manera simple con «git-buildpackage».

Por ejemplo, con el paquete gnome-pulse-audio tengo 3 ramas:

  • master: rama de trabajo (lo que sería trunk en SVN)
  • upstream: rama de donde se obtienen las fuentes del paquete Debian (orig.tar.gz)
  • gnome-pulse-audio: rama SVN que se sincroniza con el upstream y que permite hacer merges sencillos contra upstream y master.
A veces entre tanta rama se pierde «el norte» (o el HEAD Laughing) y es necesario acudir a una interfaz gráfica, he probado varias pero la que más me convence es gitg. De hecho está en cola de NEW.


Se que GIT hace mucho más que todo esto (podría deshacerme del sistema dpatch) pero iremos aprendiendo poco a poco.