Como instalar Thrift en tu mac
Si estás leyendo esto, posiblemente ya conozcas thrift. Yo me he visto con problemas instalándolo y por eso he querido hacerme esta guía que posiblemente te pueda servir a ti tambien de algo en algún momento.
Thrift es un framework para el desarrollo de lenguajes. Nos sirve para generar un algoritmo en diferentes lenguajes sin tener que escribirlo para cada uno de ellos: todo controladito y centralizado en un mismo punto. Trabaja con C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk, and OCaml. Me recuerda mucho al OMG IDL que utilizaba en su momento en CORBA para generar stubs & skeletons.
Como estoy haciendo pruebas en mi MAC con PHP y JAVA como clientes + Cassandra, he necesitado Thrift para generar el código cliente de los dos lenguajes. La teoria de Cassandra suena bien, pero cuando empiezas a trastear con el servidor ves que no es oro todo lo que reluce (despues de una semana de stress testing, ya tengo para un post bien larguito).
En mi Macbook Pro tengo instalado Snow Leopard 10.6.3 asi que estas instrucciones posiblemente varien sensiblemente si trabajas con otra versión.
Para poder instalar Thrift he necesitado Fink, una especie de apt-get para Mac. No hace falta decir que vas a necesitar xCode y librerias de desarrollo de Mac instaladas en tu mac (vienen en el CD de instalación de tu Snow Leopard y también las puedes descargar desde aquí).
Para instalar Fink una vez descargado lo he descomprimido en /opt/ y he seguido las instrucciones de su guía de instalación. Aquí no me he encontrado ningún tipo de problema así que espero que vosotros tampoco os los encontreis. Desde la carpeta /opt/fink-0.29.10/:
$ ./bootstrap
Te hará un montón de preguntas para variaciones en la instalación por defecto, yo no he cambiado nada de nada.
- Vas a necesitar Boost, pero ahora con fink, tu problema se ha reducido a:
$ fink install boost1.35.nopython
Si cuando lo ejecutes, la instrucción anterior no te funciona, posiblemente el paquete ya no está disponible, pero seguro que vas a poder instalar una versión posterior. Utiliza la opción list de fink + un grep para ver el nombre del paquete que tendrás que instalar y vuelve a ejecutarla, utilizando el nombre del paquete correcto:
$ fink list | grep boost
i boost-jam 3.1.14-1 Extension of Perforce Jam make replacement
i boost1.35.nopython 1.35.0-2 Boost C++ Libraries: static and source libs
i boost1.35.nopython-shlibs 1.35.0-2 Boost C++ Libraries (shared libs)
boost1.35.python25 1.35.0-2 Boost C++ Libraries: static and source libs
boost1.35.python25-shlibs 1.35.0-2 Boost C++ Libraries (shared libs)
boost1.35.systempython 1.35.0-2 Boost C++ Libraries: static and source libs
boost1.35.systempython-shlibs 1.35.0-2 Boost C++ Libraries (shared libs)
Ahora te puedes bajar el código de Thrift para proceder a instalarlo. Yo para hacer todo lo que sigue a continuación lo he descomprimido en /opt/:
$ cd /opt/thrift-0.2.0/
$ cp /usr/X11/share/aclocal/pkg.m4 aclocal/
$ ./bootstrap.sh
$ ./configure --with-boost=/sw/
$ make
$ sudo make install
El make a mi no me ha funcionado. Me ha estado dando problemas la versión de la libreria libtool. Para hacer el make de thrift necesitas la 2.2.6 y por defecto yo tenia instalada la 2.2.4. Para instalar la 2.2.6 he utilizado fink de nuevo:
$ fink list | grep libtool
ccp4-dev 6.1.2-4 CCP4 static libraries and libtool files
libtool14 1.5.26-3 Shared library build helper, v1.5
libtool14-shlibs 1.5.26-3 Shared libraries for libtool, v1.5
i libtool2 2.2.6b-1 Shared library build helper, v2.2
i libtool2-shlibs 2.2.6b-1 Shared libraries for libtool, v2.2
Y como podeis ver (esa i que se ve, significa que esta instalado en tu sistema), ya tengo instalada la libtool2 (v. 2.2.6b-1). Pero han continuado los problemas: mi sistema seguía utilizando la versión anterior. He aprovechado que fink crea un directorio para su software (/sw/) y lo mete en tu $PATH y me he creado unos soft links apuntando a la version 2.2.6 de libtool (glibtool):
$ sudo ln -s /sw/bin/glibtool /sw/bin/libtool
$ sudo ln -s /sw/bin/glibtoolize /sw/bin/libtoolize
Después de esto he borrado la carpeta /opt/thrift-0.2.0/ y he vuelto a descomprimir thrift en el mismo sitio. Al haber hecho el configure y el make, el “make clean” no eliminaba los binarios y me decia que seguia necesitando la libtool 2.2.6 cuando en realidad ya estaba dónde debia. Una vez todo en su sitio he vuelto a lanzar:
$ ./configure --with-boost=/sw/
$ make
$ sudo make install
and that’s all!
¡Espero que os sirva de algo!
ACTUALIZACIÓN: para crear tus ficheros PHP de acceso a Cassandra sólo tienes que ejecutar desde %CASSANDRA%/interface/:
$ thrift --gen php cassandra.thrift
Lo mismo para java:
$ thrift --gen java cassandra.thrift

Deja tu comentario