Category Archives: Language

Ubuntu Warty Warthog liberada!

Hace 3 días que ha salido la primera versión (4.10) de la fantástica distribución Ubuntu. Como yo la tenia instalada desde la preview, he tenido que actualizar el sistema con apt-get. Concretamente he seguido estos pasos:

1) Actualización del listado de aplicaciones: apt-get update
2) Actualización del sistema: apt-get dist-upgrade
3) Uso de deborphan para borrar todas las aplicaciones sobrantes.
4) apt-get install ubuntu-desktop ubuntu-base

El paso 4 es necesario ya que son los metapaquetes que instalan todas las aplicaciones que trae por defecto Ubuntu, en mi caso faltaban algunas como el gnome-pilot, diccionarios, etc…

También he descubierto que se ha creado un nuevo repositorio llamado “multiverse” donde irán a parar los paquetes que no queden claro si se puedes distribuir libremente como por ejemplo el mplayer y sus codecs propietarios. Será también en este repositorio donde encontraremos utilidades para poder instalarnos java, de esta forma podemos dejar de depender de repositorios externos relacionados con Debian SID.

La plataforma mono también ha entrado en el repositorio “universe” aunque aplicaciones como el IDE monodevelop se deben instalar utilizando un repositorio externo ligado a Ubuntu. Tengo que actualizar la guía de Ubuntu para añadir todos estos detalles.

Realmente estoy encantado con esta distribución (también empiezo a estar cansado de lo lento que resulta administrar una Gentoo), solo falta que cumplan su intención de sacar una nueva versión cada 6 meses y que esta sea estable. Hasta ahora todas las instalaciones que he hecho han ido de maravilla 🙂 Por fin tengo una distribución que puedo recomendar a la gente que se quiere iniciar con GNU/Linux!

Sitios útiles para buscar ayuda/información sobre Ubuntu:

Ubuntu
Foros no oficiales de Ubuntu en ingles
Foros no oficiales de Ubuntu en español
Comunidad Ubuntu en español
Listas de correo
Wiki (importante el DocumentationArea)
Documentación
BugZilla
Canal #ubuntu, #ubuntu-es del servidor de IRC freenode

Me atrevería a decir que ahora mismo para mi el futuro es: Ubuntu, Gnome y Mono. Si acierto perfecto, si me equivoco querrá decir que saldrá algo mejor y por tanto también es perfecto 🙂

mCatalog: catalogador de películas y libros

mCatalog es un catalogador de libros y películas, podremos almacenar información sobre nuestra biblioteca personal para poder llevar un control de todo el material del que disponemos. Está escrito en C# y por tanto requiere que tengamos mono instalado.

Para instalarlo deberemos seguir los pasos habituales (en Ubuntu tuve que instalar el paquete libgtk2.0-dev, libsqlite0-dev, libgnome2-dev, libgnomeui-dev y no se si libgnomevfs2-dev) solo que habra que editar el archivo ‘configure’ y cambiar ‘SQLITE_REQUIRED=2.8.15’ por ‘SQLITE_REQUIRED=2.8.13’ y ‘GNOMEVFS_REQUIRED=2.6.2’ por ‘GNOMEVFS_REQUIRED=2.6.1’. Seguidamente:

./configure --prefix=/usr
make
make install

En mi caso en lugar de ‘make install’ prefiero hacer ‘checkinstall’ y así ya me generará el paquete .deb para mi sistema Ubuntu. De esta forma podré desinstalarlo más cómodamente en el futuro.

Una vez instalado basta ejecutar ‘mcatalog’ y podremos empezar a guardar información sobre nuestros libros y peliculas. La característica más llamativa es que la aplicación te permite buscar la información del libro que estemos introduciendo en Amazon y de encontrarla, la carga automáticamente. Por desgracia solo suele encontrar libros escritos en ingles.

CDColect: indexador de CDs

CDCollect es un indexador de CDs gráfico para GNOME escrito en C# y que por lo tanto necesita mono para ejecutarse. Vendria a ser algo similar a mi aplicación Indexator.NET pero bien hecho, con una interfaz clara y unas funcionalidades muy útiles.

Para almacenar la información utiliza las librerias sqlite y por tanto no requiere que tengamos en marcha ninguna base de datos. Toda la información se guarda en nuestro directorio personal, concretamente ‘~/.gnome2/cdcollect’, por tanto podremos en cualquier momento guardar copias de seguridad para poder reestablecerlas en un futuro.

Para instalar la aplicación es necesario tener el compilador de mono instalado en el sistema, además de las librerias gtk# junto a las cabeceras (.h) de GTK… en el caso de gentoo ya se encontrarán en el sistema, en el caso de Ubuntu tendremos que instalar algún que otro paquete de desarrollo (creo que yo necesite libgtk2.0-dev, libsqlite0-dev, libgnome2-dev, libgnomeui-dev y no se si libgnomevfs2-dev).

Para compilar/instalar manualmente se siguen los pasos habituales, descomprimimos, entramos en el directorio creado y ejecutamos:

./configure --prefix=/usr
make
make install

En mi caso en lugar de ‘make install’ prefiero hacer ‘checkinstall’ y así ya me generará el paquete .deb para mi sistema Ubuntu. De esta forma podré desinstalarlo más cómodamente en el futuro.

Una vez instalado podremos ejecutar simplemente ‘cdcollect’ y ya vereis que es muy fácil de utilizar el programa. Ahora ya podemos comenzar a indexar CDs y así nos ahorraremos tener que mirar 30 CDs cada vez que busquemos una aplicación/fichero/mp3 ya que simplemente lo buscaremos utilizando CDCollect.

Otra característica interesante de CDCollect es que te descomprime los ficheros que encuentre comprimidos en el CD y guarda la información de los ficheros que contiene, por tanto no nos aparecerá simplemente en nuestro listado el nombre del comprimido sino que también saldrá su contenido.

Chownat: conexiones directas entre PCs detrás de NAT

Chownat es un fantástico script perl que permite que dos ordenadores que se encuentre en redes locales diferentes y accedan a internet a través de un servidor que hace NAT con firewall puedan conectarse directamente sin tener que redirigir puertos. Es decir, si tenemos una configuración:

Ordenador A -> Servidor LAN NAT1 -> Internet < - Servidor LAN NAT2 <- Ordenador B De forma directa, el ordenador A no podria establecer una conexión a un puerto del ordenador B ya que el Servidor NAT2 no permitiria ese tráfico, básicamente pq si la red local está compuesta por varios ordenadores no sabria a quien dirigir dicho paquete a no ser que tenga definida una regla explicita. La solución habitual es precisamente definir estas reglas, pero no siempre tenemos el control del servidor de salida de nuestra red. Continue reading Chownat: conexiones directas entre PCs detrás de NAT

MonkeyPop: sistema de notificación

Hoy he descubierto la existencia de MonkeyPop, un sistema de notificación para eventos que podría ser utilizado por ejemplo por el cliente de mensajería instantanea gaim cuando algun contacto se conecta. MonkeyPop utiliza el Chicken Framework que consiste en una serie de componenetes reutilizables escritos en C# (para estas aplicaciones es necesario tener Mono instalado).

Para instalar MonkeyPop en Ubuntu he tenido que instalar primero el paquete “libgtk2.0-dev” y a continuación ya he podido compilar tanto el framework como monkeypop sin problemas. Una vez instalado podemos probarlo ejecutando por ejemplo:

monkeypop –svg –info –header Header –text This is the body

Ya existe un script para el cliente de IRC xChat que te notifica cuando alguien te dice algo en el chat, lo podeis encontrar en la sección de scripts de monkeypop.

También he descubierto que existen otras implementaciones de otros sistemas diferentes para tener notificaciones de ese tipo en GNOME como por ejemplo Galago. Este utilizar el DBUS para lanzar los avisos, cosa que me parece más atractiva que tener que utilizar un ejecutable. Ya veremos quien gana la carrera y se convierte en el más usado 😉

Sincronización de directorios con Unison

Unison es una herramienta que permite mantener varios directorios sincronizados con el mismo contenido entre 2 ordenadores. A diferencia de iFolder la sincronización entre multiples máquinas no es automática, para mantener sincronizado un directorio entre varios PCs (más de 2) tendremos que ir realizando la operación pareja a pareja.

Existe una interfície gráfica GTK para Unison que hace más intuitivo su uso, la versión estable utiliza GTK 1.x y por tanto se ve algo extraño en GNOME 2.x, por suerte la siguiente versión ya utilizará GTK 2.x.

Unison puede sincronizar un directorio de diferentes formas:

  • Localmente: en la misma máquina puede sincronizar 2 directorios.
  • Remotamente usando sockets: sincronización entre 2 máquinas diferentes conectadas por red. Una de ellas tendrá que ejecutar un demonio que este continuamente escuchando y los datos no viajarán cifrados.
  • Remotamente usando SSH: sincronización entre 2 máquinas diferentes conectadas por red. Una de ellas debe correr el servicio SSH. Los datos viajaran encriptados.

La opción más interesante es la última. Para instalar Unison:

  • Gentoo: emerge unison
  • Ubuntu: apt-get install unison-gtk

A continuación solo hay que ejecutar ‘unison-gtk’ y utilizar la interfaz gráfica para definir los 2 directorios que queremos mantener sincronizados. Al realizar la connexión entre 2 máquina usando SSH se nos pedirá password, pero no gráficamente… aparece en la consola donde hayamos ejecutado unison-gtk, por tanto es importante o bien ejecutarlo desde una consola o configurar el SSH para que no nos pregunte password desde nuetra máquina con nuestro usuario.

Podemos tener diferentes profiles, es decir, diferentes directorios que sincronizar. La información de estos profiles se encuentra en ‘~/.unison/’.

Sincronización de directorios con iFolder

iFolder de Novell es una herramienta de sincronización de directorios, permite mantener diferentes directorios con el mismo contenido en diferentes máquinas. La herramienta esta escrita en C# y se ejecuta sobre Mono, además esta disponible una versión Open Source para poder utilizar su servicio a pequeña escala (para grandes empresas se debe recurrir a la opción comercial ya que es muchisimo más potente). La versión open source actual se encuentra aun en desarrollo pero ya es posible descargar el código para probarla.

Vamos a ver los pasos que debemos dar para compilar (necesitamos el compilador de Mono, GTK#..) e instalar iFolder en Ubuntu (los pasos para la instalación en Gentoo son muy similares):

  1. Bajamos el código fuente de iFolder. Concretamente:
    – Capa de sincronización y almacenamiento: simias-1.0.20040902.tar.gz
    – Capa de gestión de usuarios: addressbook-1.0.20040902.tar.gz
    – Shell gráfica: ifolder3-3.0.20040902.tar.gz
  2. Compilamos e instalamos simias:
    tar -zxvf simias-1.0.20040902.tar.gz
    cd simias-1.0.20040902/
    ./configure –prefix=/usr
    make
    sudo checkinstall
    

    * Con la aplicación checkinstall (apt-get install checkinstall) se ejecutara ‘make install’, monitorizará todos los ficheros que se instalen, creará un .deb y lo instalará en el gestor de paquetes de Ubuntu. De esta forma podremos desinstalarlo fácilmente y sin dejar restos. En caso de no querer usar checkinstall, simplemente substituir ese comando por ‘make install’.

  3. Compilamos e instalamos el addressbook:
    tar -zxvf addressbook-1.0.20040902.tar.gz
    cd addressbook-1.0.20040902/
    ./configure –prefix=/usr
    make
    sudo checkinstall
    
  4. Compilamos e instalamos la shell gráfica:
    apt-get install libgtk2.0-dev
    tar -zxvf ifolder3-3.0.20040902.tar.gz
    cd ifolder3-3.0.20040902/
    ./configure –prefix=/usr
    make
    sudo checkinstall # Falla la instalación pq tiene que sobreescribir un .png, lo forzamos:
    sudo dpkg -i --force-overwrite ifolder3-3.0.20040902_3.0.20040902-1_i386.deb
    
  5. Definimos en ‘/etc/hosts’ un alias a nuestro servidor de correo:
    192.168.0.1 mail
    

    o cambiamos el archivo ‘~/.local/share/simias/simias.conf’ (se generará la primera vez que ejecutemos iFolder):

      <section name="Simias.Mail">
        <setting name="smtpServer" value="mail" />
      </section>
    

Ahora ya tenemos instalado iFolders en nuestro sistema. Para utilizarlo basta ejecutar “ifolder” en 2 ordenadores diferentes y:

  1. Crear una agenda nueva.
  2. Añadir un contacto con un email al que podamos acceder.
  3. Crear un iFolder y añadir el contacto.
  4. El contacto recibe un mail con un adjunto (el mail será enviado por el nombre de host ‘mail’, por eso lo hemos definido anteriormente en el /etc/hosts).
  5. El contacto utiliza el asistente de invitaciones para procesar el fichero adjunto y selecciona donde quiere ubicar el directorio de sincronización.
  6. El “invitador” va a subscripciones y acepta finalmente la subscripción.

La sincronización se produce automáticamente cada 60 segundos por defecto. Si un mismo fichero ha sido modificado en ambos ordenadores, se produce un conflicto que puede solucionarse:

  1. Abrimos iFolder y en el status se visualizará “Has file conflicts”
  2. Click derecho y vamos a “Resolve conflicts”.
  3. En la nueva ventana seleccionamos el archivo conflictivo, elegimos que copia queremos mantener y pulsamos “Resolve”.

He comprobado que no es necesario usar siempre la interfaz gráfica para sincronizar, se puede iniciar el servicio simias desde la consola:

simias start

Para pararlo:

simias stop

La experiencia con iFolder ha sido más bien decepcionante por varios motivos:

  • El envio de invitaciones por mail es engorroso y la falta de configurabilidad lo hace complicado.
  • Nunca se cerraba la aplicación correctamente
  • No hay disponible ningún botón para hacer la sincronización en el momento que nos interese, tenemos que esperar a que pase el tiempo establecido.
  • La interfaz gráfica sólo se integra en GNOME por el uso de GTK, el diseño es más propio de otros sistemas operativos. Las notificaciones no son visibles fácilmente

Le queda un largo camino que recorrer para llegar a ser una buena aplicación. Hoy mismo he probado Unison como herramienta de sincronización y me ha parecido mucho más útil. La comentaré en otro post 🙂

Editor SciTE

Hoy he probado el editor SciTE y me ha gustado bastante, es rápido y sencillo. En Ubuntu basta con hacer ‘apt-get install scite’ y a los pocos minutos ya lo tendremos instalado. En la primera ejecución podemos ir a “Options -> Open user options file” y añadir nuestra configuración personalizada, esto representa un pequeño inconveniente ya que no existe una interfaz gráfica para editar las preferencias 🙁 De todas formas la sintaxis es sencilla y hay documentación en su web. También he experimentado algun que otro problema al intentar copiar/pegar y las fuentes que usa no me acaban de convencer, pero por ahora creo que le daré una oportunidad ya que jedit es lento y a gedit le faltan detalles.

Mi configuración:

# Tamaño inicial del editor
position.width=900
position.height=900

# Fondo gris
#font.monospace=font:bitstream vera sans mono,size:12
#font.monospace=font:monospaced,size:14
font.monospace=font:courier,size:14
style.*.32=$(font.monospace),back:#BBBBBB,fore:#000000
caret.fore=#00000
use.monospaced=1


# Buffers (max ficheros simultaneos abiertos)
buffers=100

# Mostrar tabuladores
tabbar.visible=1
# No esconder si hay solo un tabulador
tabbar.hide.one=0
# Multiples lineas
tabbar.multiline=1

# Para una correcta tabulación: if () { ... }
indent.automatic=1
indent.opening=0
indent.closing=0

# Autocompletado
autocompleteword.automatic=0


tabsize=4
indent.size=4
# Tabuladores en lugar de espacios:
use.tabs=1
# Espacios en lugar de tabulaciones (?)
indent.automatic=1
indent.opening=0
indent.closing=0

# Wrapping
wrap=1

# Line numbers visible
line.margin.visible=1