briconsejo: cómo conectarse a internet haciendo tethering con un móvil android

Aunque Forat se ha currado un manual espectacular en el que explica cómo conectar ubuntu y android, que funciona perfectamente y que me ha servido para iniciarme en este lío y dabo ha hecho lo propio con su iPhone, hay una manera más sencilla, mucho más sencilla, de acceder a internet a través del sistema operativo de Google con linux. El único requisito es que la versión de android sea igual o superior a la 2.1 (Eclair). Al menos, en la versión 1.5 de mi HTC Hero no había ninguna opción de tethering.

El primer paso se hace en el teléfono. Con esta versión de android, la 2.1, cuando se conecta el móvil a un ordenador, aparecen en los avisos del deslizador superior varias opciones: sólo cargar la batería; conectarse mediante HTC Sync (Windows only, me temo :) ); utilizar como una unidad de disco; y, finalmente, aparece el tethering con otro nombre, conexión compartida. Debemos seleccinar esta opción y activarla en el botón Listo.

El segundo paso tiene que hacerse en el ordenador. Yo lo he hecho con Debian GNU/Linux pero imagino que se podrá hacer en cualquier sistema operativo moderno, ya que son necesarias herramientas comunes a la mayoría, sino todos. A modo de resumen, hay que averiguar cuál es el dispositivo que se ha creado para la conexión y solicitar una dirección IP a través de dicho dispositivo. Para lo primero, basta con ejecutar lo siguiente:

$ sudo ifconfig -a
(...)
usb0 Link encap:Ethernet HWaddr fa:66:01:3f:b9:68
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000

He abreviado la salida del comando por claridad pero se puede ver como el último dispositivo de red se llama, curiosamente usb0. Ahora sólo hay que solicitar una dirección IP válida:

$ sudo dhclient -v usb0
Internet Systems Consortium DHCP Client 4.1.1-P1
Copyright 2004-2010 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Listening on LPF/usb0/fa:66:01:3f:b9:68
Sending on LPF/usb0/fa:66:01:3f:b9:68
Sending on Socket/fallback
DHCPREQUEST on usb0 to 255.255.255.255 port 67
DHCPACK from 192.168.100.254
bound to 192.168.100.100 -- renewal in 328550 seconds.

Tras esto, basta con abrir el navegador y empezar a navegar a través de la conexión de datos del teléfono. Eso sí, todo pasa lentamente, aunque suficiente para la elaboración de este artículo. :P

Actualización (dom nov 7 19:46:31 CET 2010): una vez efectuado el proceso completo, para establecer la conexión las siguientes ocasiones, sólo hay que activar en el teléfono la compartición de datos. Al instante, NetworkManager reconoce el dispositivo usb0 y efectúa la petición de dirección IP por su cuenta, facilitándonos el trabajo.

Recuperación de slapd (Program version 4.8 doesn’t match environment version 4.7)

Utilizo slapd para dar un servicio de directorio, la clásica agenda de contactos con email, teléfono y demás. Hace algunos años, cansado de tener que pasar de una a otra herramienta de gestión de contactos, según cambiaba de programa de correo (de mutt a pine; de pine a evolution; de evolution a thunderbird), decidí quedarme en el punto intermedio de todos ellos y, tras investigar un poco, éste resultó ser OpenLDAP.

Crear una estructura de directorio es sencillo (forat, cúrrate un howto ;) ) y muy útil. Como, además, el servicio lastra muy poco el equipo donde está alojado, puede funcionar en máquinas no muy potentes, como es mi caso. A cambio, dispondremos de una agenda de contactos rápida, accesible desde la mayoría de clientes de correo (incluso Outlook Express) y fácil de gestionar y mantener. En mi caso era así, hasta hoy.

Hay ciertos servicios que, una vez los pones a funcionar, dejas de pensar en ellos y únicamente los utilizas, los conviertes en rutina. Por eso, cuando fallan (porque nada es infalible), la sensación de estupor es grande y no sabes por dónde empezar la batalla.

Hace dos días, slapd decidió no arrancar más tras una actualización del equipo. El error que aparecía en syslog era bastante feo, llegando a mencionar el sacrosanto backup, toda una osadía, en mi opinión.

slapd[18614]: backend_startup_one: starting "dc=midominio,dc=net"
slapd[18614]: bdb_db_open: database "dc=midominio,dc=net": dbenv_open(/var/lib/ldap/midominio.net).
slapd[18614]: bdb(dc=midominio,dc=net): Program version 4.8 doesn't match environment version 4.7
slapd[18614]: bdb_db_open: database "dc=midominio,dc=net" cannot be opened, err -30971. Restore from backup!

Tras bucear un rato por internet (aquí y aquí) entendí que las bases de datos que utiliza slapd tenían el formato Berkeley DB version 4.7 y, desde la última actualización, debían tener el formato Berkeley DB version 4.8. Para pasar de un formato a otro hacen falta un par de paquetes, uno por cada versión de la base de datos con que vamos a trabajar. Se instalan:

$ sudo aptitude install db4.7-util db4.8-util

El directorio de las bases de datos está definido en el fichero de configuración de slapd (/etc/ldap/slapd.conf) pero, por defecto es /var/lib/ldap/midominio.net. Todas las modificaciones se harán sobre ese directorio y es conveniente, como siempre, hacer una copia de seguridad de los ficheros que vamos a tocar porque esta solución salió al tercer intento.

Lo primero es eliminar toda referencia a la versión 4.7 en los ficheros:

# db4.7_checkpoint -1 # escribe las transacciones pendienes
# db4.7_recover # deja la base de datos en un estado consistente

Y, una vez hecho esto, falta por restaurar la base de datos con la nueva versión del entorno, algo así como la nueva versión del gestor.

# db4.8_recover -e

Como los ficheros que se han tocado no pertenecen al programa que los va a usar, retoco permisos y propietario:

# chown openldap:openldap *
# chmod 600 *

Y, al reiniciar de nuevo slapd, funciona sin más problemas.

Información y enlaces de lo mencionado en el podcast

Coincidiendo con la salida del podcast número 18 de daboblog, dejo aquí los enlaces a los programas y aplicaciones que mencionamos en la sección Linux en un entorno hostil, de Kernel panic.

Supongo que será más sencillo de seguir así, teniendo en cuenta nuestra pronunciación chusquera. Creo que ganaríamos si comenzásemos a utilizar el alfabeto fonético de la OTAN, ese tan conocido de alfa, bravo, charlie…

La lista es lo más minuciosa posible pero, como siempre, asumo cualquier incorrección y/o ausencia.

Y, finalmente, el lema del día:

todos los caminos conducen a debian

Información extra del estado de los paquetes con aptitude ({a}, {u})

Dabo, que es un culo inquieto, me llamó una noche para preguntarme por un tema que le atormentaba y no le dejaba dormir. Tras la enésima actualización del macbook se dio cuenta de que aparecían unos códigos tras cada paquete a instalar o desinstalar y, como casi nada es casualidad en este mundo, pretendía averiguarlo antes de irse a dormir. Y, ya de paso, fastidiarme el sueño a mí :D .

Hablábamos de unos caracteres escritos entre llaves que aparecían tras cada uno de los paquetes a tratar en un aptitude full-upgrade (creo que con los install también pasa) y de los que no había ni rastro con otras herramientas de gestión de paquetes como apt o synaptic. Dedujimos que se trataba de alguna mejora en aptitude y nos pusimos a darle vueltas a una hora en que deberíamos estar durmiendo.

El ejemplo se puede ver al intentar la actualización diaria con aptitude:

diego@malum:~$ sudo aptitude full-upgrade
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Leyendo la información de estado extendido... Hecho
Inicializando el estado de los paquetes... Hecho
Leyendo las descripciones de las tareas... Hecho
Se instalarán los siguiente paquetes NUEVOS:
libdrm-nouveau1{a} xserver-xorg-video-nouveau{a}
Se actualizarán los siguientes paquetes:
at-spi binutils dia dia-common dia-libs dialog groff-base insserv libatspi1.0-0 libcairomm-1.0-1 libcanberra-gtk-module libcanberra-gtk0 libcanberra0 libdevkit-power-gobject1 libgstfarsight0.10-0 libgweather-common libgweather1 libid3-3.8.3c2a libieee1284-3 libjack0 libkpathsea5 libnet-dbus-perl libpcre3 libsqlite3-0 libupower-glib1 libusb-1.0-0 libwww-perl python-pyatspi ttf-freefont upower x11-common xbase-clients xorg xserver-xorg xserver-xorg-input-all xserver-xorg-video-all xterm
37 paquetes actualizados, 2 nuevos instalados, 0 para eliminar y 0 sin actualizar.
Necesito descargar 35,5MB de ficheros. Después de desempaquetar se usarán 3236kB.
¿Quiere continuar? [Y/n/?]

Suponíamos, erróneamente, que la etiqueta {a} aparecía al añadir (add) un nuevo paquete y {u} al desinstalarlo (uninstall) pero se dieron un par de casos en que las etiquetas se aplicaban en las operaciones contrarias.

Al final, cansado de buscar infructuosamente durante un día y pico, decidí enviarle un correo electrónico al mantenedor del paquete aptitude en Debian, planteándole la duda. Es una medida un tanto expeditiva y que utilizo sólo en ocasiones justificadas, tras cribar la documentación del paquete e internet en busca de respuestas. Y la respuesta sigue dejándome de piedra.

Veinticinco minutos después recibí un correo, cordial y amable en donde el señor Burrows me sacaba de dudas y me explicaba que las etiquetas dan información extra acerca del estado de los paquetes a tratar.

In the list of actions to be performed, some packages will be followed by one or more characters enclosed in braces; for instance: “aptitude{u}”. These characters provide extra information about the package’s state, and can include any combination of the following:
‘a’: the package was automatically installed or removed.
‘b’: some of the package’s dependencies are violated by the proposed changes.
‘p’: the package will be purged in addition to being removed.
‘u’: the package is being removed because it is unused.

Traducido libremente, viene a decir que las etiquetas significan:

  • {a}, cuando el paquete se instaló o eliminó automáticamente.
  • {b}, cuando alguna dependencia del paquete tiene incompatibilidades con los cambios propuestos.
  • {p}, cuando el paquete va a ser purgado además de borrado.
  • {u}, cuando el paquete va a ser borrado porque no se utiliza.

Así pues, sólo se trataba de eso, de ampliar la información del estado de los paquetes sobre los que va a efectuar alguna operación. Más información para tomar mejores decisiones, supongo.

Y por último me gustaría mencionar el gran trabajo que hacen los desarrolladores y mantenedores, en debian y en cualquier otro sistema operativo y programa Open Source, por su rapidez de respuesta y sus ganas de ayudar. Esta es, definitivamente, una guerra que hemos ganado entre todos.

[short] KDE 4.4.3 en debian sid

Logo Debian Hackers Short

Han anunciado que ya está disponible, desde hace dos días, KDE 4.4.3 y que se puede instalar desde Debian sid. También se hace referencia a que será la versión 4.4.4. la que, probablemente, termine en la próxima versión estable de Debian.

También animan a instalar la nueva versión, probarla y remitirles todos los bugs encontrados ya que, como apuntan, quedan menos de mil para dar la versión por estable.

+ info | ekaia.org.