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 <doko@debian.org> 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]