MarioDebian, mi devlog

Bitácora de un desarrollador newbie.

El java de Sun en debian????
Hoy el cron de debmirror de alguno de los servidores que llevo me da dicho algo como esto:

[.....]
[ 80%] Getting: pool/non-free/s/sun-java5/sun-java5-bin_1.5.0-06-1_i386.deb... ok
[ 87%] Getting: pool/non-free/s/sun-java5/sun-java5-demo_1.5.0-06-1_i386.deb... ok
[ 91%] Getting: pool/non-free/s/sun-java5/sun-java5-doc_1.5.0-06-1_all.deb... ok
[ 91%] Getting: pool/non-free/s/sun-java5/sun-java5-fonts_1.5.0-06-1_all.deb... ok
[ 91%] Getting: pool/non-free/s/sun-java5/sun-java5-jdk_1.5.0-06-1_i386.deb... ok
[ 92%] Getting: pool/non-free/s/sun-java5/sun-java5-jre_1.5.0-06-1_all.deb... ok
[ 95%] Getting: pool/non-free/s/sun-java5/sun-java5-plugin_1.5.0-06-1_i386.deb... ok
[ 95%] Getting: pool/non-free/s/sun-java5/sun-java5-source_1.5.0-06-1_all.deb... ok
[....]

Todo apunta que en unstable/non-free ya tenemos los paquetes de java por lo que es un gran paso para aplicaciones (vease JClic) ya que con el java gnu no compila.

Estos son los datos del paquete jre:

# apt-cache show sun-java5-jre
Package: sun-java5-jre
Priority: optional
Section: non-free/libs
Installed-Size: 15568
Maintainer: Matthias Klose
Architecture: all
Source: sun-java5
Version: 1.5.0-06-1
Replaces: sun-java5-bin, ia32-sun-java5-bin
Provides: java-virtual-machine, java2-runtime
Depends: java-common, locales, sun-java5-bin (= 1.5.0-06-1) | ia32-sun-java5-bin (= 1.5.0-06-1),
debconf (>= 0.5) | debconf-2.0
Pre-Depends: debconf (>= 0.5) | debconf-2.0
Recommends: java-common (>= 0.24), gsfonts-x11
Suggests: sun-java5-plugin | ia32-sun-java5-plugin, sun-java5-fonts, ttf-baekmuk,
ttf-kochi-gothic | ttf-kochi-gothic-naga10, ttf-kochi-mincho | ttf-kochi-mincho-naga10, ttf-arphic-bsmi00lp
Conflicts: j2se-common
Filename: pool/non-free/s/sun-java5/sun-java5-jre_1.5.0-06-1_all.deb
Size: 7341098
MD5sum: 0cbe8453b3bdf95e996b25566090ac2f
Description: Sun Java(TM) Runtime Environment (JRE) 5.0
The Sun Java Platform Standard Edition Runtime Environment (JRE) 5.0
contains the Java virtual machine, runtime class libraries, and
Java application launcher that are necessary to run programs written
in the Java progamming language. It is not a development environment and
doesn't contain development tools such as compilers or debuggers.
For development tools, see the Java Development Kit JDK(TM) 5.0
(package sun-java5-jdk).
.
NOTE: You must accept Sun's EULA prior to successfully installing
this package
.
This package contains architecture independent files.


¿quién decia que ubuntu no devuelve el trabajo a debian? Aquí lo teneis han empaquetado java...




Gedit y los snippets
El nuevo gedit (2.14) trae bastantes novedades, y la que más me ha gustado sin nunguna duda es el soporte de snippets según el tipo de archivo que estemos editando.

¿Qué son los snippets? Pues dicho mal y pronto es aplicar la magia del tabulador de consola pero a programación, por ejemplo, editamos/creamos un nuevo archivo e indicamos a gedit que es php, a continuación llega la magia:

php(TABULADOR) escribiría

#code
?>

Dejándonos el tabulador en la parte code, otro ejemplo sería for(TABULADOR) lo que nos pone:

for ( $i=0; $i < ; $i++ )
{
# code...
}

Con el tabulador pasamos por cada uno de los puntos necesarios para personalizar el for, es decir, por los tres campos contador y por fin, dentro de las llaves.

Para demostrar un poco toda esta magia he preparado un pequeño video, (hecho con byzanz):



Si quereis probar esta versión de gedit en debian podeis usar (gedit-cvs) este paquete (se instala en opt, por lo que no se debería fastidiar nada)




Xfce4.4 ya está aquí...
Después de haber leido artículos como Major changes in Xfce 4.4BETA1 he estado compilando todos los paquetes (4.3.90.1) para debian TESTING (supongo que en unstable se instalará sin problemas..., en ubuntu no creo)

Actualizar a xfce 4.4:

ACTUALIZADO (23 Abr 2006): He separado el mirror en unstable y testing debido a incompatibilidades de bibliotecas de Xorg 6.9 y Xorg 7.0. Si usas testing pon solo los mirror de testing, si usas unstable pon los dos (en unstable hay alguna versión más nueva de algunos paquetes no todos) También he añadido el directorio addons con los siguientes plugins:

* thunar-archive-plugin
* thunar-media-tags-plugin
* xfce4-artwork
* xfce4-mount-plugin
* xfce4-quicklauncher-plugin
* xfce4-verve-plugin
* xfce4-xkb-plugin

Estan compilados en unstable pero no debería haber problemaspara instalarlos en testing.


Editar sources.list y añadir:
#DEBIAN TESTING
deb http://soleup.eup.uva.es/xfce4.4/testing ./
deb-src http://soleup.eup.uva.es/xfce4.4/testing ./

#DEBIAN UNSTABLE
deb http://soleup.eup.uva.es/xfce4.4/testing ./
deb-src http://soleup.eup.uva.es/xfce4.4/testing/ ./
deb http://soleup.eup.uva.es/xfce4.4/unstable ./
deb-src http://soleup.eup.uva.es/xfce4.4/unstable ./

#ADDONS (testing o unstable)
deb http://soleup.eup.uva.es/xfce4.4/addons ./
deb-src http://soleup.eup.uva.es/xfce4.4/addons ./




Actualizar lista de paquetes:

# apt-get update

Instalar:

# apt-get install xfce4-all

(esto instala todos los binarios que he compilado)

o

# apt-get install xfce4-devs

(esto instala los paquetes *-dev por si necesitamos compilar algo relaccionado con xfce)

A disfrutrarlo...




Televisión P2P
Una de las cosas que echaba en falta en mi debian es poder ver la televisión P2P.

La televisión P2P consiste en que alguien captura un canal de televisión haciendo streaming y para no colapsar su línea de subida el streaming se retrasnmite por medio de una red peer to peer.

Lo que necesitamos como clientes es un programa que capture el stream, siga compartiéndolo y permita conectar un reproductor a ese hilo.

En linux hay alguna cosa como gnome-peercast pero es bastante complicado de usar para ver símplemente la tele un rato. Así que buscando encontré que sopcast tiene una versión para linux.

Este es el aspecto:



La configuración:



Como reproductor en linux se puede usar cualquiera que soporte reproducción desde red, por ejemplo yo he probado con mplayer o gxine pero seguro que se pueden usar muchos otros.



En la captura no se ve video. Pero haberlo hailo.... de hecho esto es una captura hecha desde el propio gxine:



La mayoría de los canales son chinos pero por ejemplo es posible ver futbol de la liga española con un retraso de 5 a 10 minutos.... útil para las aburridas tardes de los domingos, aunque no me gusta demasiado el fútbol.

El paquete lo he descargado de esta web y me he permitido traducirlo a español y empaquetarlo como paquete debian.

Luego sólo hay que ir a alguna web [1] [2] [3] y mirar "qué echan".

Para el archivo TODO, falta hacer un manejador para firefox (protocolo sop://) que al picarlo cargue la url y abra el reproductor...





Plog mysql y tablas corruptas
Una de las cosas por las que no me gusta plog es porque uno de los plugins que instale en su día guarda el referral de cada entrada al blog por lo que se almacena en una tabla mysql gran cantidad de datos, la consecuencia de esto es que más tarde o más temprano mysql ya no quiere abrir esa tabla.

Al tener backups programados por las noches el día que esto ocurre empieza a avisar en el cron que algo malo pasa y los backups no se producen.

Hasta hace poco lo que hacía era recuperar una copia de seguridad del volcado de la tabla que se moría lo que conlleva pérdida de datos y tener que abrir un archivo de texto plano de 44 megas con algún tipo de editor (tarea harto complicada incluso para gedit o firefox), hoy después de la última petada he descubierto una consulta mysql que simplifica mucho las cosas:

REPAIR TABLE plog_statistics USE_FRM

Se puede ejecutar desde phpmyadmin o desde consola mysql.El resultado de la consulta es:

Table Op Msg_type Msg_text
blog_mario.plog_statistics repair info Key 1 - Found wrong stored record at 5350244
blog_mario.plog_statistics repair warning Number of rows changed from 0 to 82867
blog_mario.plog_statistics repair status OK

Como se puede ver el rango de esa tabla llega a 5 millones por lo que estoy pensando en borrar todos los datos ya que ralentiza UN HUEVO cada consulta mysql, como ya he dicho el volcado mysql en un archivo de texto plano son 44 megas.




Italc, ahora si!!!!!
He hablado hace tiempo de la aplicación italc y de sus ventajas e inconvenientes, pues bien, los inconvenientes se han reducido, ya que,cvs ya tiene soporte para redes thin client.

Hace unos días el autor ha subido el código al cvs de sourceforge (0.9.7-pre1) y hoy lo he visto / descargado / compilado y creado los correspondientes paquetes deb (italc-client, italc-server). Dentro de poco los colgaré del mirror.

He hecho las pruebas en nuestro servidor pxes y aunque consume bastante cpu (investigaré como optimizarlo) funciona genial, sólo hay que copiar la clave del usuario que usa el programa de gestión en un /etc/italc-client/public-keys/ y lanzar ivs en cada login de los usuarios. A lo mejor me curro un script bash para hacer esas cosas más sencillas y lo meto dentro del paquete, como he hecho con el lanzador ivs-start.

Cosas por hacer:

  • Necesito que el ivs se lance al inicio de sesión del usuario y que se abra en un puerto que sea 5900 más los ultimos números de la ip, eso ya lo tengo hecho pero lo que necesito realmente es que el proceso se lance como root y no como usuario, ya que si el usuario hace un killall ivs, se jodió el verle la pantalla. He aquí el código lanzador:
    #!/bin/sh

    host=$(echo $DISPLAY| awk -F ":" '{print $1}')

    # resolve ip
    ip=$(cat /etc/hosts |grep $host|awk '{print $1}')


    # calculate port
    port=$(echo $ip| awk -F "." '{print $4}')
    port=$((5900 + $port))


    # launch ivs
    ivs -noshm -rfbport $port

    Si tenemos un usuario con un $DISPLAY MAGNA25:0.0 es porque el hostname es MAGNA25 y la ip de ese hostname la hemos declarado en el /etc/host, tomamos la terminación 192.168.0.25 y le sumamos 5900 (5925). El problema es que en kdm o xdm si se lanza en el Xstartup se lanza como root con el $DISPLAY del user pero en gdm no encuentro la manera :( . Ya se que tiene un bug y es que la ip 192.168.0.100 no es válida porque le puerto 6000 lo usa el XDCMP (las conocidas X).

  • Necesito regenerar las imágenes de arranque de pxes para copiar la clave SSH en la home de root del terminal ligero y así podría usar los comandos de reiniciar y apagar terminal u otros como lanzar sonido o montar el disco duro o el cdrom de cada terminal. Quizás en el mismo script que hablaba antes también se pueda hacer.
Todos los que tengais una red PXES a vuestro cargo y querais monitorizar lo que hace la gente (supongo que hay que poner un cartel avisando de los que se está haciendo) o un profesor que quiera dar clase distribuida (permite tomar el control de cada alumno o realizar tareas para todos como lanzar una aplicación) pues que lo pruebe y me cuente. Mandaré un mail al autor para decirle que funciona casi todo menos la aplicación que toma el control de los clientes en pantalla completa que no se conecta al puerto y tampoco funciona la traducción.





Openoffice2 se acabaron las betas
Esta noche ha entrado por fin la versión 2 de OpenOffice.org en debian unstable, por lo que voy a dejar de empaquetar versiones como lo estaba haciendo hasta ahora, ya que en debian lo compilan sobre gcj-4.0 y así no depende de la máquina virtual java de sun.

Gracias a todos los que habeis probado los paquetes y los que me habeis mandado correos dándome las gracias.

Lo acabo de instalar y me parece que no toma del todo bien el tema gtk de gnome, al menos me parece tan feo como las versiones 1.1.x, las betas eran más elegantes...

Para usuarios de debina testing y debian sarge pueden seguir usando la versión final empaquetada en idefix ya que irá para largo la entrada en testing (en sarge no creo que entre)





Tener un escritorio ordenado
He descubierto una aplicación que facilita a la gente como yo, que abre muchas aplicaciones, a tener cada cosa en su sitio.

La aplicación en cuestión se llama devilspie y es un añadido al gestor de ventanas metacity que usa gnome.

Este programa se lanza en modo demonio al inicio de la sesión y permite (con un archivo de configuración xml) ubicar cada aplicación o ventana en un escritorio predeterminado. Por ejemplo, yo me suelo abrir evolution, firefox, beep-media-player, una o varias gnome-terminal y gaim. He configurado devilspie para que las ventanas de evolution residan siempre en el escritorio 4, firefox en el 3, gaim en el 2 y el resto en el 1.

De esta forma si alguien me abre una conversación en gaim se que se abrirá en el espacio 2 y no tendré un montón de ventanas solapadas. Devilspie permite además ajustar el tamaño u ocultar la aplicación para que no salga en la barra de tareas.

Forma de instalarlo:

# apt-get install devilspie

Copiamos el ejemplo de configuración:

$ cp /usr/share/doc/devilspie/examples/sample-config.xml ~/.devilspie.xml

Y lo editamos:

$ gedit ~/.devilspie.xml

Veremos alguna aplicación de ejemplo, básicamente añadiremos un bloque como este por cada aplicación a controlar:

  <!--
This will put all Gaim on the 2 workspace.
Note that the workspace number is a 1-based index, not a
0-based index.
-->
<flurb>
<matchers>
<matcher name="DevilsPieMatcherWindowName">
<property name="application_name" value="gaim"/>
</matcher>
</matchers>
<actions>
<action name="DevilsPieActionSetWorkspace">
<property name="workspace_index" value="2"/>
</action>
<action name="DevilsPieActionHide">
<property name="skip_tasklist" value="FALSE"/>
</action>
</actions>
</flurb>
Duplicaremos este bloque tantas veces como necesitemos cambiando si procede los cambos que puse en negrita, es decir, el nombre de la aplicación el número de espacio de trabajo (por defecto desde 1 hasta 4) y si no queremos (o si) que aparezca en la lista de aplicaciones.

Para firefox el application_name es firefox-bin, para evolution es evolution-2.2, etc... Si añades un bloque y no funciona correctamente lanza devilspie -a y mira el log que sale por consola para saber el nombre de la aplicación.

Una vez que lo tengamos todo a nuestro gusto y hayamos probado que funciona lo añadimos al gestor de inicio de sessiones: Escritorio --> Preferencias --> Sessiones, pestaña (solapa) de Programas al Inicio, y picamos en Añadir. Como nombre de ejecutable ponemos devilspie -a y como órden por ejemplo 90.

Si no queremos reiniciar la sesión para probar que funciona podemos lanzar con Aplicaciones --> Ejecutar aplicación el comando devilspie -a. La próxima vez que entremos en gnome no hará falta.

Para terminar me gustaría añadir que estoy probando beagle y a pesar de «rascar» mucho el disco duro, es una aplicación maravillosa. La nueva versión 0.1.1 incorpora un plugin para firefox y soporte para aplicaciones no gnome (como kmail o kopete). Indexa en tiempo real las páginas que visitamos y si algún día nos da por buscar algo que vimos podemos usar best para encontrar la url o un mini servidor web ASP.NET lanzado en el puerto 8888 de localhost: http://localhost:8888/beagle/search.aspx

Sigue soportando (las versiones anteriores lo hacían) indexar los correos de evolution y las conversaciones de gaim además de todos los directorios o archivos locales de nuestro directorio de usuario o los directorios que le digamos. El paquete nuevo aún no está en los repositorios de debian, lo he empaquetado y está en http://idefix.eup.uva.es/paquetes requiere la última versión de libgmime2.1 (debian unstable hoy) y librerías de mono gráficas (gtk2-sharp, libgnome-cil, etc...) Si usas unstable no hay problema, si usas testing deberás mezclar repositorios y configurar el apt-pining





Openoffice 2 Release Candidate 1
Por fin y después de un montón de meses ya tenemos una rc de Oo.

Los paquetes para debian/ubuntu ya están en idefix:

deb http://idefix.eup.uva.es/soleup soleupix main java games openoffice

La versión de los paquetes es la 2.0.0-1, excepto para el openofficeorg-debian-menus, el cual, esta vez se han lucido cometiendo barbaridades. Llevaban enlazando /opt/openofficex.x.x/ en /etc mucho tiempo pero crear links a sitios que no existen es la repera. Después de pegarme un rato con él ya está arreglado, he incluido los antiguos oo......2 como en su tiempo hice, de la siguiente forma:

#!/bin/bash
$(ls /opt/openoffice*/program/soffice) -writer "$@"

Por ejemplo este shell script dá la ruta y ejecuta el binario soffice (no importa la versión, para eso está el comodín *) y pasa los parámetros que le hayamos pasado abriéndolo con el writer. Este script lo encontrareis en /usr/bin/oowriter2 si habeis instalado el paquete openofficeorg-debian-menus. Para el resto los scripts son similares.

El script que tenía para empaquetar Oo desapareció en el último formateo, así que ahora estoy haciéndolo casi desde cero. Funcionar, funciona, y ha unido todos los core en uno sólo tal cual está en debian experimental.

En la próxima rc de soleupix ya irá incluido esta última versión. A propósito, ya funciona la 0.3.1-rc2, aunque faltan cosas por arreglar como por ejemplo que no se apaga, o no lee las particiones del disco. Si lo quereis probar arrancad con la opción lectura escritura.





Soleupix 0.3.1-alfa
Desde Junio no trabajaba en SOLEUPIX, y ya iba siendo hora, desde entonces sarge es estable, ha entrado Xorg en debian testing, gnome-2.10, y muchas aplicaciones nuevas.

Mucha gente (dos o tres para que nos vamos a engañar) se han ofrecido a colaborar en el desarrollo, ayer estuve diseñando y preparando el nuevo instalador que como el resto de asistentes que trae soleupix se basa en ruby y gtk2, además he portado el sistema de svn para que con un sólo comando regenere el nuevo paquete (el Makefile no tiene desperdicio). Se puede revisar el proceso en el SVN de soleupix, soleupix->paquete->usr->share->soleupix->instalador. Si descargais el tar.gz se puede crear el paquete deb ejecutando debuild en el directorio paquete.

Hoy me he puesto a repasar cosas que necesitaba y cosas que ya tenía. Para empezar, cambio de kernel por un 2.6.12 (mínimo para que funcione el udev nuevo de debian) Ya que nos ponemos con el kernel no estaría mal un sistema sobre unionfs para en modo livecd tener lectura escritura, en esto me voy a basar en el calzador de x-evian que por lo visto a ellos les funciona, el parche de supermount desaparece (TODO: arreglar scripts de detección de particiones) ya que gnome no lo necesita gracias a udev, pmount y hal, además de los parches de bootsplash, squashfs e inotify que lo he puesto por probar... De momento el kernel parece que va bien. Está instalado en el mismo server que almacena este blog y varias cosas más. El kernel 2.4 se ha eliminado permitiendo jugar con nuevas versiones de squashfs (2.1 y 2.2), el 2.4 nos limitaba a 2.0 que es ligeramente ás lento y «menos compresor».

Ahora hay que ampliar el soporte de dispositivos raros y seguir dándolo a los que ya lo hacía.

  • Driver de tarjetas gráficas (las que soporta xorg) más los propietarios de ATI y NVIDIA.
  • Driver de wireless (ipw2200 con su firmware) y ndiswrapper para esas tarjetas rebeldes sobre drivers windows.
  • Drivers de modem: eagle-usb que vale para el modem ADSL azul de telefónica o para el SAGEM F@ST de wanadoo por ejemplo.
  • Drivers de modems normales: slmodem que funciona con muchos via (como el de mi portátil)
  • Todos los dispositivos que soporte el nuevo kernel 2.6.12.

Reestructuración de programas instalados:

Se han ido (si sobra sitio alguno volverá):
  • mozilla
  • thunderbird
  • openoffice.org 1.1.4
  • jedit
  • mplayer
  • java sdk
  • dosemu
  • y un montón de programas y librerias varios
Nuevos paquetes:
  • java j2re (entorno de ejecución)
  • Openofficeorg beta (1.9.130-2) con idioma español.
  • totem (que en gnome 2.10 abre de todo)
  • debootstrap para instalar debian a lo bestia.
Se han actualizado:
  • Xserver -> Xorg
  • mysql-server a la versión 4.1
  • udev, hal y demas demonios del sistema
  • gnome 2.10
  • driver de ATI fglrx
Los paquetes no son los definitivos ya que la iso ocupa ahora 714 megas (no entra en un cdrom normal) por lo que habrá que rehacer la imagen base y limpiarla. Incluso si funciona el kernel 2.6.12 olvidarnos del 2.6.10 que supongo que no funcionará udev en él.

La iso todavía no la he probado, la estoy descargando del servidor... (1 hora a 170 Kb) Supongo que con el kernel 2.6.10 arranque, con el 2.6.12 espero que funcione unionfs, cuando la haya probado actualizaré el blog.


ACTUALIZADO 22:28

Por lo poco que he podido probar las X no arrancan con el kernel viejo (2.6.10) y el kernel nuevo tiene serios problemas de arquitectura, (nunca mejor dicho) ya que el archivo linuxrc del initrd está en formato mac, (gracias a compare me di cuenta del fallo de los kernel panic), con esto:

tr '15' '12' < in_file > out_file

lo he convertido. Digamos que es cosa de los saltos de línea. Al tener nuevas aplicaciones (unionctl) necesita más librerías, así que a copiar librerias del sistema al initr o compilarlo estáticamente.