Archivo por años: 2011

Instalando Eclipse Indigo en Ubuntu (u otro Linux)

Actualizado Ha salido la versión 3.7 (Indigo) del famoso IDE Eclipse. Por desgracia, todavía no está disponible como fichero .deb para Ubuntu, así que vamos a instalarlo «a mano».

Lo primero, desinstalar cualquier versión anterior de Eclipse.

A continuación, bajarse la versión correspondiente (32 o 64 bits) desde la página de descargas de Eclipse. Yo he instalado la edición Classic. Lo descomprimimos (como root, obviamente) en /opt/eclipse.

Instalamos la máquina virtual de Java, si es que todavía no la tenemos: sudo apt-get install openjdk-6-jre

Creamos un fichero eclipse.desktop en /usr/share/applications o en ~/.local/share/applications con el siguiente contenido:

[Desktop Entry]
X-MultipleArgs=false
Type=Application
Name=Eclipse
GenericName=Eclipse IDE
TryExec=/opt/eclipse/eclipse
Exec=/opt/eclipse/eclipse
Categories=Development;
Icon=/opt/eclipse/icon.xpm

¡Y listo! Ya tenemos Eclipse Indigo en nuestro sistema y en nuestro menú de aplicaciones.

Nos vemos en las calles

Mañana es la manifestación del 19J en contra del Pacto del Euro, la cual entronca directamente con la original del 15M. Para los que quieran ir, pueden buscar donde va a ser la de su ciudad en una de las muchas páginas que publican la información, como por ejemplo la de spanishrevolution. En Vigo será a las 18:00 horas desde la Plaza de España, aunque la gente de la acampada saldrá a las 17:30 desde la Plaza del Rey para unirse a esa hora con el resto.

El 19J toma la calle

Por último, una nota publicada en N-1 con una recomendación de protocolo de actuación en caso de violencia por parte de manifestantes. Es sólo una sugerencia, pero personalmente me parece perfecto.

Repositorio GIT para Devede

Hace unos días subí el código de Devede a un repositorio en GitHUB para hacer accesibles de manera más rápida las correcciones que voy haciendo ante los bugs que reporta la gente. En estos momentos ya hay varias correcciones, alguna de ellas bastante importante pues permite utilizar Devede con las últimas versiones de Mencoder (que necesitan usar el modificador AC3_FIXED en lugar de AC3 a secas para que funcione el sonido), así como con las últimas versiones de DVDAuthor (necesitan que se defina una variable de entorno con el tipo de vídeo por defecto -PAL o NTSC-).

También empiezan a llegar parches para el código, que iré añadiendo progresivamente.

Ahora quiero añadir algún sistema para facilitar la traducción. Me han recomendado Pootle, pero no tengo muy claro que pueda añadir ahí un proyecto cualquiera. Se aceptan sugerencias.

FBZX 2.5.0

La nueva versión de FBZX ya está en la calle con dos opciones pedidas por un usuario. Para empezar, ahora se pueden meter POKEs, lo que nos dará esas maravillosas vidas infinitas que tanto necesitamos. Por otro lado, ahora podemos emular una televisión en blanco y negro, para los nostálgicos pobretones que no nos podíamos permitir una tele en color para el speecy. Por último, y de rebote, le añadí soporte para cargar y hacer snapshots de la pantalla en formato SCR.

Nueva version de FBZX

Tras un aviso del autor de Gelide, he procedido a corregir un pequeño bug en los parámetros de línea de comandos de FBZX. Simplemente ocurría que, al activar la opción de double scan, sólo se podía desactivar desde el menú interno, quedándose activa incluso al salir y volver a entrar, además de no hacer caso al parámetro -ds. Ahora ya responde a él, y además incorpora el parámetro -ss para forzar el desactivar el double scan.

Ya esta aqui TTOS

¿Y qué es TTOS? Pues el proyecto en el que llevo embarcado desde hace siete meses. Se trata de un gestor de ventanas por composición para el navegador TomTom, que permite dotarlo de una serie de capacidades al estilo de Android o del iPhone.

La idea surgió el verano pasado, cuando, volviendo de vacaciones, tuve que hacer casi todo el viaje de vuelta en silencio porque me había olvidado los CDs de música, en la radio sólo se pillaba Radio Clásica y Radio María (nada que ver con la hierba), y casi no tenía batería en el móvil para reproducir mis MP3 desde él. Fue entonces cuando recordé que tenía un viejo TomTom que no utilizaba para casi nada, y dado que éste tiene un Linux embebido, se me ocurrió que podría hacer un pequeño reproductor de MP3 para él. Pero ya existía: TomPlayer.

Entonces me dije ¿por qué no intentar mejorarlo? Y entonces empecé a investigar sobre Android, pero era demasiado pesado para él. Así que decidí intentar hacer una versión ligera, con lo mínimo para poder hacer los efectos de scroll y demás que se ven en los móviles de hoy en día.

El resultado es TTOS, un pequeño entorno que permite desarrollar y ejecutar pequeñas aplicaciones sobre TomTom. El API es muy sencillo, y permite hacer mucho con pocas líneas.

En estos momentos TTOS trae una calculadora, un reloj calendario, un terminal, una aplicación de ejemplo y un reproductor de MP3/Vorbis, pero, cuando tenga algo más de tiempo, me estoy planteando portar Navit, un navegador libre que utiliza los mapas de OpenStreetMap.

Como muestra, una pequeña animación que muestra como es TTOS:

Instalando Windows desde un pen

Por una serie de circunstancias, este fin de semana necesité instalar un Windows XP en mi portátil, y una tarea tan aparentemente sencilla se convirtió en una tortura. ¿Por qué?

Lo que todo el mundo pensará es que basta con meter el CD en la unidad, reiniciar, y listo. Pero mi portátil es un EEE PC sin lector de CDs. Así que lo siguiente que se piensa es en utilizar un lector de CDs por USB… pero no tenía ninguno a mano, y no me apetecía comprar uno sólo para una vez.

Una opción era utilizar WinToFlash, una utilidad que permite meter el instalador en un pendrive; por desgracia sólo funciona en Windows… y no tengo ningún windows a mano. Incluso intenté hacerlo desde una máquina virtual, pero no funciona: es muy exigente y quiere un pincho «de verdad», no le sirve un disco duro, y la emulación de pinchos USB en KVM da problemas (ya ni hablemos de VirtualBox…).

También intenté utilizar UnetBootin, que está disponible para Linux, pero desgraciadamente no sirve para el instalador de XP.

Sin embargo, a tozudo no me gana nadie, y al final conseguí instalarlo con mucha paciencia, así que aquí está el método, por si a alguien más le puede ser de utilidad.

Lo primero, avisar que el proceso de instalación será mucho más lento de lo normal, así que tomadlo con mucha paciencia y una buena infusión.

Ingredientes necesarios:

Lo primero, copiamos cualquier dato importante que tengamos en nuestro pincho USB a otro lado, porque vamos a tener que formatearlo.

Antes de comenzar la instalación, necesitamos disponer de una partición primaria reservada para el nuevo disco. En caso de que no la tengamos, la mejor opción consiste en crear, mediante UnetBootin, un pincho USB de Ubuntu, arrancar con ella el portátil y utilizar GParted para reducir el tamaño de una de las particiones actuales y dejar sitio para la nueva. Sobre como hacer esto hay  abundante material en Internet, así que no profundizaré.

Cuando ya tengamos una partición primaria en el disco, etiquetada con sistema de archivos FAT32 (importante) y situada antes que cualquier otra partición primaria de tipo FAT en el disco, procedemos a particionar el pincho USB. Lanzamos GParted, borramos todas las particiones que hubiese, creamos una partición extendida, y dentro una unidad lógica, etiquetándola como de tipo FAT32.

Una vez hecho esto, arrancamos UnetBootin, escogemos la imagen de CD fdfullws.iso, y la volcamos en el pincho. Cuando esté listo, copiamos en el pincho todos los archivos del CD de instalación de Windows.

Ahora estamos listos para hacer la instalación de FreeDOS: reiniciamos el ordenador con el pincho, y cuando pregunte, iniciamos con HYMEM y EMM386. Nos saldrá un prompt de DOS, en el que teclearemos D:. Gracias a que el pincho tiene solamente una partición extendida, C: se corresponderá con la partición primaria del disco duro, y D: será el pincho en sí. Si hubiésemos utilizado una partición primaria en el pincho, como éste aparece como primer disco haría que C: fuese el pincho en sí, con lo que no podríamos instalar correctamente FreeDOS.

Ahora tecleamos setup para iniciar la instalación de FreeDOS. Instalamos todo (excepto las fuentes, que no son necesarias), y salimos de nuevo al prompt. Ahora copiamos también todo el CD de instalación de Windows al disco duro mediante xcopy:

    xcopy /E d:*.* c:

Ahora tenemos que asegurarnos de que podremos iniciar el sistema correctamente, para lo que tecleamos

    sys c:
    fdisk /mbr

El primero asegura de que el sistema de arranque de FreeDOS está instalado en C:; el segundo borra el MBR (lo que incluye a GRUB; luego lo recuperaremos) y pone en su lugar el código de arranque básico de DOS.

Reiniciamos el ordenador y debería arrancar FreeDOS. Ahora tecleamos:

    ./i386/winnt.exe

lo que lanzará el instalador de Windows XP. Nos dirá que la caché de disco no está instalada y que podemos cancelar el proceso. No lo haremos; eso sí, la copia de archivos se demorará durante un par de horas (y no sirve la caché que incluye el propio FreeDOS: no funciona). Nos tomaremos un buen café hasta que, por fin, termine de copiar los archivos básicos y reinicie, continuando, ahora sí, por fin, la instalación como siempre.

En determinado punto nos indicará que la unidad está en formato FAT32 y si queremos convertirla a NTFS. En teoría el cambio no supone la pérdida de los datos, pero por si acaso yo preferí hacer la conversión después de instalar todo, y, efectivamente, se puede hacer sin riesgo.

Recuperando GRUB

Ahora que ya está instalado Windows nos queda recuperar GRUB para poder arrancar de nuevo Linux. Para ello volvemos a particionar el pincho, dejando una única partición primaria, instalamos en ella un CD Live de Ubuntu u otra distribución preferida y arrancamos desde él.

Una vez hecho, abrimos un terminal y procedemos a montar la partición raíz de nuestro sistema Linux, así como enlazar los pseudo sistemas de archivos /proc, /dev y /sys. Finalmente, usamos chroot para entrar en nuestro viejo sistema. Si la partición raíz está en /dev/sda1 y tenemos el directorio /tmp disponible para montar en él lo que queramos, haríamos:

    mount /dev/sda1 /mnt
    mount -o bind /proc /mnt/proc
    mount -o bind /dev /mnt/dev
    mount -o bind /dev/pts /mnt/dev/pts
    mount -o bind /sys /mnt/sys
    sudo chroot /mnt /bin/bash

Ahora ya estamos dentro de nuestro sistema como root,  y podemos proceder a reinstalar GRUB. En Ubuntu es tan sencillo como

    dpkg-reconfigure grub-common

el cual reconfigurará GRUB para añadir automáticamente el nuevo windows instalado. En otras distribuciones de Linux es necesario utilizar un editor para modificar el fichero de configuración de GRUB y luego ejectuar grub-install /dev/sda para reinstalarlo en el MBR.

¡Y listo!

InkScape no tiene quien le escriba

Desde que actualicé a la última versión de Ubuntu, InkScape me estaba dando problemas a la hora de añadir tipografías: cada vez que intentaba escribir algo se negaba a cambiar a la fuente o tamaño que yo le decía, y me mostraba una alerta junto a la fuente, que siempre volvía, una y otra vez, a Bitstream Vera Sans, escogiese la que escogiese.

 

Tras rebuscar y rebuscar, encontré en un foro de Ubuntu que el problema es, precisamente, que dicha fuente (que es la que InkScape utiliza por defecto) no está instalada, y por un bug, no deja cambiar a ninguna otra.

La solución fue instalar el paquete ttf-bitstream-vera con un sencillo:

sudo apt-get install ttf-bitstream-vera

(aunque los que odien la línea de comandos pueden usar Synaptic, obviamente 😀 )

Enlace dinamico

Acabo de lanzar la versión 8.0 de FPT_BT4LXMedia. La primera novedad es la nueva versión de Transmission, la 2.21. La segunda es que, por fin, los ejecutables utilizan enlazado dinámico.

Como recordareis, las versiones anteriores utilizaban enlazado estático porque no conseguía que arrancasen desde el disco, a pesar de utilizar LD_LIBRARY_PATH para apuntar al directorio con las nuevas bibliotecas. Para los que no sepan qué es eso, es una variable de entorno que permite añadir nuevas rutas en donde buscar bibliotecas de enlace dinámico, y éstas tienen prioridad sobre las «normales» del sistema. Así, si tengo un programa enlazado con una versión concreta de libc, diferente de la del sistema, puedo instalarla en otro directorio (por ejemplo, /tmp/libs) y lanzar el programa con:

LD_LIBRARY_PATH=/tmp/libs mi_programa

Por desgracia, esto no funcionaba en mi disco duro. Tras investigar mucho, descubrí que el problema estaba en el enlazador dinámico en tiempo de arranque. Resulta que el núcleo sólo es capaz de arrancar, por sí solo, binarios que estén enlazados estáticamente. Para los dinámicos lo que hace es delegar en /lib/ld-linux.so (o /lib/ld-uclibc en la biblioteca uClib). A pesar de llevar extensión .so, este fichero es realmente un programa (enlazado estáticamente, claro) diseñado para cargar en memoria el programa dinámico deseado, analizar qué bibliotecas necesita, cargarlas en memoria si aún no están, realizar toda la operación de enlazado y, finalmente, lanzar el código.

Por desgracia, la versión del enlazador dinámico de la gentoo que utilizo para desarrollar es más reciente que la de mi disco duro, lo que hacía que recibiese un error cada vez que intentaba ejecutar un programa compilado directamente. Para complicar aún más las cosas, la ruta del enlazador dinámico está especificada en cada ejecutable de manera inamovible, estableciéndose dicho valor durante la compilación. Y por si fuera poco, el enlazador de Busybox no permite su ejecución directa, por lo que tampoco podía hacer un simple /lib/ld-uclibc mi_programa.

Ante todo esto, la única solución que me quedó fue la de copiar el enlazador dinámico del entorno de desarrollo en una carpeta diferente y, al compilar bftpd, transmission y ctransmission, especificar la ruta deseada. Esto se hace en la etapa final de enlazado mediante la opción -Wl,–dynamic-linker=path/al/enlazador. De esta manera bastó con copiar el enlazador y el resto de bibliotecas a /tmp/hdd/root/libs y lanzar los programas con

LD_LIBRARY_PATH=/tmp/hdd/root/libs mi_programa

Con esto espero ahorrar algo de memoria. También haré algunas pruebas para ver si los programas funcionan bien con la versión de la uClib del propio disco duro, en cuyo caso podría ahorrar aún más.