30 abril 2014

Grive en Slackware


Grive es la implementación independiente y de código abierto del cliente de Google Drive para Linux, en vista de que Google aún no provee de un cliente oficial para esta plataforma. Grive está escrito en C++ y su código está liberado bajo la licencia GPLv2.
Actualmente Grive en su versión 0.2.0 se encuentra en estado beta, el cliente es capaz hacer una sincronización entre Google Drive y el directorio local al que se encuentre ligado, puede cargar y descargar los cambios en archivos y directorios.
GrivePor otro lado, las principales limitantes son los directorios con múltiples padres: la jerarquía de una cuenta de Google Drive es compleja y no puede visualizarse como un esquema de “árbol”, en vez de eso, hay que pensarla más como una red interconectada a ligada a un punto raíz. Cosa que obviamente un sistema de archivos local no puede ser, por lo que no es posible que haya compatibilidad entre la jerarquía de Drive y el directorio local. La segunda limitante es que Grive no descarga los documentos con el formato de Google, por ejemplo aquellos que vemos en el navegador web.

Instalando Grive en Linux

Hasta ahora, en Linux, solo hay disponible un paquete para Ubuntu, por lo que para instalar Grive en Slackware hay que proceder a compilar desde el código fuente. Por suerte disponemos de un SlackBuild (cuyo autor es willysr) que podemos usar para automatizar el proceso, lo único que tenemos que hacer es descargar el código fuente (tarball 0.2.0).
Como es requerido, colocamos el código fuente en el mismo directorio del SlackBuild y lo ejecutamos como root:

# ./grive.SlackBuild

NOTA: Es necesario tener instalado json-c primero.

Me apareció el siguiente mensaje de error durante la compilación:

Linking CXX executable grive
/usr/bin/ld: ../libgrive/libgrive.a(Json.cc.o): undefined reference to symbol 'json_object_array_get_idx'
/usr/bin/ld: note: 'json_object_array_get_idx' is defined in DSO /lib64/libjson-c.so.2 so try adding it to the linker command line
/lib64/libjson-c.so.2: could not read symbols: Invalid operation
collect2: error: ld returned 1 exit status
make[2]: *** [grive/grive] Errore 1
make[1]: *** [grive/CMakeFiles/grive_executable.dir/all] Errore 2
make: *** [all] Errore 2


Para solucionar este problema hay que descomprimir el tarball del código fuente, modificar el archivo cmake/Modules/FindJSONC.cmake como se muestra aquí:

-FIND_PATH(JSONC_INCLUDE_DIR json/json.h)
-FIND_LIBRARY(JSONC_LIBRARY NAMES json)
+FIND_PATH(JSONC_INCLUDE_DIR json-c/json.h)
+FIND_LIBRARY(JSONC_LIBRARY NAMES json-c)


Guardar el archivo y crear de nuevo el tarball (es necesario borrar o renombrar el original primero):

$ tar pczf grive-0.2.0.tar.gz grive-0.2.0

Limpiar el cache para usar el nuevo tarball:

# rm -rf CMakeCache.txt cmake_install.cmake CMakeFiles Makefile

Y volver a ejecutar el SlackBuild, una vez creado el paquete de Slackware solo hay que instalarlo con installpkg.

Usando grive

Para la primera ejecución debemos entrar al directorio en el que deseamos que se sincronice grive, yo recomiendo crear uno nuevo y ejecutar:

$ grive -a
-----------------------
Please go to this URL and get an authentication code:

https://accounts.google.com/o/oauth2/auth?scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile+https%3A%2F%2Fdocs.google.com%2Ffeeds%2F+https%3A%2F%2Fdocs.googleusercontent.com%2F+https%3A%2F%2Fspreadsheets.google.com%2Ffeeds%2F&redirect_uri=urn:ietf:wg:oauth:2.0:oob&response_type=code&client_id=22314510474.apps.googleusercontent.com
-----------------------
Please input the authentication code here:

Nos pide ir a la dirección mostrada, misma que nos dará un código que hay que introducir. Una vez que se introduzca el código empezará la sincronización en el directorio en el que estemos ejecutando el comando:
Reading local directories
Synchronizing folders
Reading remote server file list

Ahora cada que hagamos un cambio en nuestro directorio local o en Google Drive solo debemos ejecutar:

$ grive

Tomado de: http://ecoslackware.wordpress.com/2014/02/16/grive-en-slackware/

No hay comentarios: