Download Instalación de myro en Lihuen 2 Instalación de python

Document related concepts
no text concepts found
Transcript
Instalación de myro en Lihuen 2
Myro es un paquete de módulos para python que permite controlar los robots del proyecto http://roboteducation.org/.
Myro depende del paquete python-imaging en una versión igual o superior a 1.1.6. Lihuen 2 lamentablemente trae una versión un poco más vieja la
1.1.5-11. Así que veamos como actualizar este paquete.
Nota: En Lihuen 3 no es necesario compilar python-imaging, simplemente instalarlo normalmente desde los repositorios
Contenido
• 1 Instalación de python-imaging
♦ 1.1 Descargando python-imaging
♦ 1.2 Compilando
• 2 Instalando otras dependencias
• 3 Terminando la instalación
• 4 Notas
• 5 Como asociar un dispositivo serie con el robot de forma dinámica
Instalación de python-imaging
Para esta guía usamos python-imaging 1.1.6-3 de Debian Lenny.
Descargando python-imaging
Para su instalación debemos bajar el paquete fuente de python-imaging (podemos buscarlo en el sitio http://packages.debian.org), éste paquete esta
conformado por 2 archivos:
• http://ftp.de.debian.org/debian/pool/main/p/python-imaging/python-imaging_1.1.6-3.dsc
• http://ftp.de.debian.org/debian/pool/main/p/python-imaging/python-imaging_1.1.6-3.tar.gz
Debemos tener instalado los paquetes debhelper y fakeroot.
Así que vamos a descargarlo y descomprimirlo:
mkdir paquetes
cd paquetes
wget http://ftp.de.debian.org/debian/pool/main/p/python-imaging/python-imaging_1.1.6-3.dsc
wget http://ftp.de.debian.org/debian/pool/main/p/python-imaging/python-imaging_1.1.6-3.tar.gz
dpkg-source -x python-imaging_1.1.6-3.dsc
Ahora tenemos que compilar este paquete, es seguro que no funcione al primer intento, lo que va a pasar la primera vez es que nos mostrará la lista de
paquetes necesarios para compilar python-imaging.
Compilando
Así que nos posicionamos en el directorio donde dpkg-source descomprimió el paquete y ejecutamos
fakeroot dpkg-buildpackage
Por ejemplo luego de hacer esto por primera vez en mi máquina dpkg-buildpackage devolvió
dpkg-buildpackage: source package is python-imaging
dpkg-buildpackage: source version is 1.1.6-3
dpkg-buildpackage: source changed by Matthias Klose <[email protected]>
dpkg-buildpackage: host architecture i386
dpkg-buildpackage: source version without epoch 1.1.6-3
dpkg-checkbuilddeps: Unmet build dependencies: python-all-dev python-all-dbg python-tk-dbg (>= 2.4.3) libsane-dev
dpkg-buildpackage: Build dependencies/conflicts unsatisfied; aborting.
dpkg-buildpackage: (Use -d flag to override.)
Ahora tenemos que instalar las dependencias, como este paquete es de Debian Lenny no vamos a encontrar todos los paquetes pero por suerte
podemos compilar python-imaging puede ser compilado sin que estén absolutamente todos los paquetes.
Hay un paquete en especial que no vamos a encontrar en Lihuen que se llama python-all-dbg, en Lihuen éste paquete se llama python-dbg.
Así que instalamos los paquetes pedidos salvo python-tk-dbg que no está en el repositorio y python-all-dbg al cual reemplazamos por python-dbg:
apt-get install python-all-dev python-dbg
libsane-dev
Ahora corregimos un archivo de los fuentes para poder compilar este paquete, el archivo es python-imaging-1.1.6/debian/rules. Para corregirlo
debemos abrirlo con un editor de texto y comentar las líneas donde aparezca "dh_movefiles"
Por ejemplo, si encontramos:
dh_movefiles -ppython-imaging-tk \
--sourcedir=debian/python-imaging \
usr/lib/python$*/site-packages/PIL/_imagingtk.so \
usr/lib/python$*/site-packages/PIL/ImageTk.py
Debemos comentarlo de la siguiente manera:
#dh_movefiles -ppython-imaging-tk \
#
--sourcedir=debian/python-imaging \
#
usr/lib/python$*/site-packages/PIL/_imagingtk.so \
#
usr/lib/python$*/site-packages/PIL/ImageTk.py
Luego construimos el paquete, pero esta vez pasando el argumento "-d" para que dpkg-buildpackage no nos pida instalar todas las dependencias.
fakeroot dpkg-buildpackage -d
Al compilarlo veremos varios paquetes ".deb" en el directorio donde descargamos los fuentes de python-imaging.
Así que vamos a instalarlos con:
dpkg -i --force-all *.deb
dpkg --configure -a
apt-get -f install
Si quedan paquetes sin configurar o problemas de dependencias habrá que ver bien en que orden instalar estos paquetes.
Instalando otras dependencias
Para que todo funcione debemos instalar python-serial, python-numpy, python-xmpp y tkSnack Los primeros están en los repositorios de Lihuen, así
que con lo siguiente alcanza:
apt-get install python-serial python-numpy python-xmpp
Terminando la instalación
Luego podemos terminar la instalación como se detalla en http://wiki.roboteducation.org/Linux_Setup.
Pronto ampliaremos este documento con más información en español.
Notas
En ocasiones, sobre todo cuando el robot (Scribbler) se empieza a quedar sin baterías, python puede quedarse bloqueado y el robot se queda también
realizando la última instrucción recibida. En general con reiniciar el robot, y terminar con el proceso de python alcanza pero a veces quedan procesos
utilizando el dispositivo serie relacionado con el robot.
Podemos ver que procesos usan el dispositivo del robot con el comando lsof, por ejemplo:
lsof /dev/rfcomm0
Si vemos que algún proceso está utilizando el dispositivo podemos intentar matarlo con kill. Si esto no es posible tendremos que asociar el robot con un
dispositivo con otro nombre.
Por ejemplo:
rfcomm release /dev/rfcomm0
rfcomm bind /dev/rfcomm1 00:11:22:33:44:55 1
Y de ahora en adelante usamos /dev/rfcomm1 como argumento de init().
Como asociar un dispositivo serie con el robot de forma dinámica
Para esto podemos usar la aplicación rfcomm como se indica más arriba.
Para asociar un dispositivo serie:
rfcomm bind [dispositivo] [dirección] [canal]
Para liberar un dispositivo serie:
rfcomm release [dispositivo]