En mi ordenador utilizo Linux la mayoría de las veces, pero también Windows, es por ello que me gusta OneDrive al estar tan integrado en este sistema. Sin embargo en Linux la cosa cambia: no hay gestor nativo de OneDrive, por lo que la sincronización se queda fuera.

Pero como siempre, los usuarios saben cómo arreglárselas sin necesidad de soporte por parte de la compañía, y es así cómo nació onedrive-d, un programa creado por el usuario xybu que nos trae sincronización total con OneDrive por medio de un demonio (o daemon en inglés, así se denominan los procesos en segundo plano) que vigila la carpeta que le especifiquemos para sincronizarla con el servidor de OneDrive.

Sin embargo su instalación no es del todo sencilla ya que requiere de un montón de dependencias, así que os explicaré cómo instalarlo en vuestro sistema.

Antes de nada

He intentado hacerlo de la forma más general posible, es decir, que sea independiente de distribuciones, pero como siempre el nombre de los paquetes y su disponibilidad variará según la distribución que utilicéis. En mi caso estoy realizando el proceso desde Arch Linux, pero el nombre de los paquetes no debería variar mucho. Aún así, al ser paquetes bastante conocidos no tendréis problemas en encontrarlos.

Para no llenar el artículo de miles de comandos en cada una de las instrucciones, os dejo aquí la forma general de instalar paquetes en las distribuciones más conocidas.

Si utilizáis Ubuntu o cualquiera de sus derivados (Lubuntu, Xubuntu, Kubuntu, Linux Mint, elementaryOS, Deepin, etc), el comando es:

En Fedora 21 o anteriores:

Y para versiones posteriores a la 22:

Para Arch Linux:

Creo que estas son las más conocidas, de todos modos si veis que falta alguna dejadnos un comentario y os ayudaré en el proceso.

Requisitos

Como digo, el programa necesita de un montón de dependencias que necesitaremos satisfacer antes de instalarlo, así que primero vamos con la más básica: python. El programa ha sido desarrollado en python, por lo que debéis instalar dicho paquete. Normalmente o la propia distribución lo trae ya instalado o ya debéis de haber usado un programa que utilice python, pero de todos modos podéis comprobar si lo tenéis instalado ejecutando python ó python3 en caso de que el comando sin la versión os devuelva una versión antigua.

Con ello se os abrirá la consola de python donde, entre otras cosas, podréis ver la versión que tenéis instalada, la cual debe ser 3.4 o superior.

1

Bien, ahora ya tenemos lo más básico, sin embargo necesitamos dos cosas más: el gestor de paquetes de python (pip) y el paquete de desarrollo de python, ya que una de las dependencias del programa lo requiere. Normalmente el paquete de pip suele llamarse python-pip y el paquete de desarrollo python-dev en la mayoría de las distribuciones, sino, podéis consultarlo.

Ahora, necesitamos instalar dos paquetes desde pip, por lo que ejecutaremos el siguiente comando:

Esto instalará el paquete daemonocle psutil, ambos dependencias básicas del programa, y los cuáles si todo ha ido bien y tenéis todas las dependencias necesarias producirá el siguiente resultado:

onedrive-d

Y con esto ya tenemos las dependencias básicas. Sí, habéis leído bien, básicas. Os explico.

El programa funciona íntegramente por consola, pero sin embargo podemos ejecutar una versión gráfica para la configuración del programa. Si queremos dicha versión gráfica necesitaremos dos dependencias más cuyo nombre varía según la distribución, así que tendréis que instalar el paquete python3-gi si estáis en Debian o Ubuntupygobject3 en Fedorapython-gobject en ArchLinux ó python3-gobject en OpenSUSE. Obviamente desde el gestor de paquetes de vuestro sistema, no desde pip.

Y como última dependencia, totalmente opcional pero muy recomendable instalarla, es inotify-tools (como tal podéis instalarla ya que el nombre es igual en todas las distribuciones), y digo recomendable porque este paquete nos permite ejecutar el monitor a tiempo real, que se encarga de vigilar la sincronización según sea necesaria, por ejemplo, si ponemos un nuevo archivo en la carpeta de OneDrive el programa lo detectará automáticamente y lo subirá. Si no instalamos esta dependencia se comprobará la carpeta cada cierto tiempo, aunque este tiempo es configurable.

Y ya estamos listos para instalar

Ya os avisé de que el programa tenía muchas dependencias, pero no os preocupéis, que ya estamos en la recta final, ahora sólo nos queda descargar el programa e instalarlo. Para descargarlo tenemos dos opciones, podemos clonar el repositorio desde Git o descargar un .zip con el código fuente. Si tenéis instalado Git os recomiendo este método, ya que sólo tendréis que ejecutar este comando:

Si no tenéis instalado Git no importa, símplemente descargad el código fuente desde este enlace:

Descargar onedrive-d

Descomprimís el archivo y ya tenéis todo listo para instalar. Para ello, abrimos una terminal y nos dirigimos a la carpeta donde tengamos descargado (y descomprimido si es el caso) onedrive-d y ejecutamos lo siguiente:

Esto registrará el paquete y lo instalará. Después, limpiamos archivos temporales:

Y creamos los archivos de configuración:

Creamos un archivo que sirva como log:

Ojo: Cambiad donde pone ‘TuNombreDeUsuario’ por el nombre de usuario que tengas en el equipo. Como alternativa puedes utilizar el comando whoami.

Y ya tenemos el programa instalado, sólo nos falta configurarlo. Y aquí podemos hacer dos cosas: instalarlo mediante la configuración visual o utilizando la línea de comandos, que es el método que yo explicaré, ya que la configuración visual es muy sencilla y no necesita instrucciones.

A partir de aquí, por tanto, irá todo a través de terminal, pero si en lugar de hacerlo como lo explico preferís la interfaz gráfica os bastaría con ejecutar lo siguiente:

Recordad que necesitáis las dependencias de la GUI anteriormente mencionadas, sino no os funcionará.

Dicho esto, para ejecutar la configuración en modo terminal ponemos el siguiente comando:

Con ello nos aparecerá lo siguiente:

onedrive-d

Tendréis que visitar la URL que se muestra en la terminal (normalmente podréis hacer CTRL + Clic para ir directamente al sitio), iniciar sesión con vuestra cuenta de Microsoft y darle permisos a onedrive-d para acceder a ella. Y después, simplemente copiamos la URL de respuesta y la pegamos en el programa, pulsamos intro y continuamos con la instalación.

5

Ahora nos preguntará dónde queremos colocar el directorio de OneDrive, si queremos cambiar los números del programa (los ajustes numéricos del programa, como por ejemplo cada cuánto tiempo se comprueban los cambios en la carpeta en el caso de que no tengáis la dependencia antes comentada) o si queremos editar la lista de ignorados. Si no sabéis cómo configurarlo o queréis dejarlo por defecto, responded a todo que no.

4

Y listo. Si no habéis ajustado nada, el programa por defecto nos creará una carpeta en nuestra carpeta de usuario llamada OneDrive en la cual se descargarán todos los archivos y será donde tenemos que poner lo que queramos para que se sincronice.

Ahora sólo nos queda ejecutar el siguiente comando para iniciar el programa:

Con ello se mostrará el siguiente mensaje:

onedrive-d

Y comenzará a descargar todo lo que tengamos almacenado en OneDriveTodo esto en segundo plano, así que podéis cerrar la ventana de la terminal sin problemas.

Y cada vez que queráis consultar el estado del programa, tan sólo tendréis que ejecutar lo siguiente:

Que os devolverá, entre otras cosas, el PID del proceso, si está o no sincronizándose y el porcentaje de memoria y CPU que está utilizando.

onedrive-d

Realmente es un proceso bastante engorroso debido a todas las dependencias que necesita el programa, pero una vez instalado todo, funciona a la perfección y no da ningún tipo de problema. Y con todo esto dicho, ¿qué os parece el programa? ¿Utilizáis OneDrive en vuestro Linux o preferís utilizar clientes como DropBox que sí que ofrecen programas nativos?

Artículos relacionados

Comentarios

  • Xhex

    ¡Hola! ¿Me podrías echar una mano? He intentado seguir el tutorial pero no he logrado que funcione. Uso Mageia 5.

    Logré instalar los requisitos, pero al llegar a esta parte:

    cp ./onedrive_d/res/default_ignore.ini ~/.onedrive/ignore_v2.ini

    Me da esto:

    [root@localhost onedrive-d-master]# cp ./onedrive_d/res/default_ignore.ini ~/.onedrive/ignore_v2.ini
    cp: no se puede efectuar `stat’ sobre «./onedrive_d/res/default_ignore.ini»: No existe el fichero o el directorio

    Y lo demás, nada, claro.

    No sé bien qué está fallando. ¿Qué podría hacer ahora?

    Gracias. =)

    • ¡Hola! Tal y como te indica el comando, no encuentra el directorio y se debe a que recientemente el autor ha desarrollado la segunda versión de la aplicación (está aún en desarrollo) y la ha puesto en el repositorio de onedrive-d, moviendo la primera versión (en la que funcionan todos los comandos que he descrito arriba a la perfección) a onedrive-d-old.

      La solución es sencilla, descarga este zip: https://github.com/xybu/onedrive-d-old/archive/future.zip, o, si lo prefieres, clona este repositorio: https://github.com/xybu/onedrive-d-old.git y realiza todo lo descrito anteriormente. Ahora corrijo el artículo.

      Por cierto, probé el programa hace un par de días y no funcionaba al ejecutar onedrive-pref por algún error con el programa, pero parece ser que ya lo han solucionado. Te aviso por si no te funciona al llegar el momento de entrar en tu cuenta, es un error conocido y lo están solucionando.

      ¡Un saludo!

  • Vladi

    Yo al contrario, no tuve problemas al descargar las dependencias, registrar el programa y crear los archivos de configuracion y log.

    Pero al intentar ejecutar onedrive-pref:

    Traceback (most recent call last):
    File “/usr/lib/python3.4/site-packages/pkg_resources.py”, line 449, in _build_master
    ws.require(__requires__)
    File “/usr/lib/python3.4/site-packages/pkg_resources.py”, line 742, in require
    needed = self.resolve(parse_requirements(requirements))
    File “/usr/lib/python3.4/site-packages/pkg_resources.py”, line 643, in resolve
    raise VersionConflict(dist, req) # XXX put more info here
    pkg_resources.VersionConflict: (psutil 2.1.2 (/usr/lib64/python3.4/site-packages), Requirement.parse(‘psutil==2.1.1’))

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “/usr/bin/onedrive-pref”, line 5, in
    from pkg_resources import load_entry_point
    File “/usr/lib/python3.4/site-packages/pkg_resources.py”, line 2829, in
    working_set = WorkingSet._build_master()
    File “/usr/lib/python3.4/site-packages/pkg_resources.py”, line 451, in _build_master
    return cls._build_from_requirements(__requires__)
    File “/usr/lib/python3.4/site-packages/pkg_resources.py”, line 464, in _build_from_requirements
    dists = ws.resolve(reqs, Environment())
    File “/usr/lib/python3.4/site-packages/pkg_resources.py”, line 639, in resolve
    raise DistributionNotFound(req)
    pkg_resources.DistributionNotFound: psutil==2.1.1

    My distro es opensuse 13.2

    • ¡Hola! El error se debe a que no encuentra la dependencia psutil, que como menciono en el artículo hay que instalarla mediante pip. Asegúrate de que pip instala las librerías para Python 3 en lugar de para Python 2, ya que sino te daría problemas. Para ello prueba a ejecutar sudo pip3 install psutil (pip3 es un paquete a parte).

      Coméntame si tienes algún problema, ¡saludos!

      • Vladi

        bueno, al ejecutar el comando que mencionas me da esto:

        Requirement already satisfied (use –upgrade to upgrade): psutil in /usr/lib64/python3.4/site-packages

        Y al pedir un listado de los paquetes instalados:

        apparmor (2.9.1)
        certifi (2015.04.28)
        click (2.5)
        daemonocle (0.8)
        LibAppArmor (2.9.1)
        onedrive-d (1.1.0dev)
        pip (1.5.6)
        psutil (2.1.2)
        py (1.4.22)
        pygobject (3.14.0)
        requests (2.4.1)
        Send2Trash (1.3.0)
        setuptools (3.6)
        urllib3 (1.10.4)

        Aunque parece que esta linea es la clave:

        pkg_resources.VersionConflict: (psutil 2.1.2 (/usr/lib64/python3.4/site-packages), Requirement.parse(‘psutil==2.1.1’))

        como puedo degradar de la version 2.1.2 a la 2.1.1?

        • ¡Hola! Efectivamente, la clave está ahí, no me había dado cuenta. Te comento, pip te permite instalar la versión específica de un paquete de la siguiente manera: sudo pip3 install psutil=2.1.1, sin embargo como tú ya tienes instalado el paquete, primero tendrás que eliminarlo con sudo pip3 uninstall psutil (y por seguridad ejecuta también el mismo comando pero con pip a secas), después instalas como te he dicho y listo, con esto debería funcionarte sin problemas. ¡Saludos!

          • Vladi

            Bueno, ya quedo!!! y valla que fue una aventura!

            Resulto que había instalado el “python-devel” mas no el “python3-devel” y me mandaba a la goma (no se encuentra “python.h”) al querer instalar el “psutil==2.1.1”

            Por fortuna en la pagina Github del proyecto se hace hincapié en cerciorarse de que la versión devel correcta este instalada cuando pase lo anterior. XP

            Por cierto, debo correr el comando cada que inicie sesión?

            gracia por el apoyo!!

          • ¡Hola! Perdona la tardanza. Sí, tienes que ejecutarlo cada vez que inicies, pero puedes simplemente poner algún script que ejecute el comando al inicio y listo. No recuerdo si desde la interfaz GTK te daba la opción de correrlo al inicio, pero es tan simple como eso.

            ¡Gracias a ti por leernos!

  • Mickel

    Tengo un problema!!! Cuando empiezo con la instalación me dice:

    Traceback (most recent call last):
    File “setup.py”, line 4, in
    from setuptools import setup, find_packages
    ImportError: No module named ‘setuptools’

    Alguna idea de donde encuentro este modulo “setuptools”? o que hago?

    • ¡Hola! Prueba instalando el paquete setuptools de Python 3, si tienes Ubuntu sería de la siguiente forma:

      sudo apt-get install python3-setuptools

      Para otras distribuciones tendrás que buscar el nombre del paquete, pero imagino que será parecido (o igual).

      • Mickel

        Gracias, pude avanzar de ahí pero ahora me quedé al crear el log. Me dice:

        mickel@mickel-SVF14213CLB[onedrive-d-old-future] sudo chown mickel/var/log/onedrive_d.log
        chown: falta un operando después de «mickel/var/log/onedrive_d.log»
        Pruebe ‘chown –help’ para más información.

        • ¡Hola! El error está en que has puesto mal el comando, ya que se te ha olvidado un espacio. Quedaría así:

          sudo chown mickel /var/log/onedrive_d.log

          Y listo 😀

  • VoxSigma

    Hola! Soy un recién llegado a los terrirorios de Linux…y es una frikada el tema del terminal y los paquetes de instalación…y me encanta, también conseguí instalar Onedrive-d, pero la cosa esque no me sincroniza los datos de Onedrive, en un primer momento si, pero luego se paró la sincronización, sabrías darme un por qué?

    Gracias por el post, es el más claro y detallado que encontré para instalar este “programa”

    • ¡Hola! En el momento en el que la sincronización no funciona, si pones onedrive-d status en la terminal, ¿qué te devuelve? No me ocurrió nada parecido cuando lo utilizaba.

      ¡Un saludo y gracias a ti por visitarnos! 😀

      • VoxSigma

        Me devuelve la información de como funciona.

        También decir que el inotify-tools me crashea, y no vuelve a funcionar

  • Catherine Bolados

    hola, hice todos los pasos pero al momento de hacerlo andar me da el siguiente problema:
    All steps are finished.
    [2016-03-17 19:47:57,936] DEBUG: Dummy-2: config saved.
    cata@cata-Satellite-C645D:~/Documents/onedrive-d-old-future$ onedrive-d startLoading configuration … OK
    [2016-03-17 19:48:45,920] DEBUG: MainThread: running in daemon node.
    Starting onedrive-d … FAILED
    ERROR: Child exited immediately with non-zero exit code 1
    ¿Cómo lo puedo solucionar? tengo instalado elementary os
    Gracias!

  • Carlos Lobelos

    En primer lugar agradecer toda la ayuda que prestáis como comunidad a gente como yo que quiere convertirse plenamente a LINUX.
    He probado varios tutoriales para conseguir tener el puñe…. Onedrive instalado en Ubuntu (por cierto tengo el 16.04LTS) y nada, no lo he conseguido.
    Con este tutorial he avanzado muchísimo mas de hecho he conseguido llegar a autorizar desde la web a la aplicación, según el paso de onedrive-pref pero el caso es que ya no paso de ahí. Creo que le falta algo y no se muy bien el que. Os pego el mensaje que me sale para ver si os doy alguna pista.
    “sat@Satportatil:~$ onedrive-d start
    Loading configuration … OK
    [2016-11-20 23:59:31,698] DEBUG: MainThread: running in daemon node.
    Starting onedrive-d … FAILED
    ERROR: Child exited immediately with exit code 1
    sat@Satportatil:~$”
    Bueno me veo al final utilizando como todo el mundo el onedrive via web. pero intentaré no desistir.
    Gracias por la posible respuesta.

  • Orlando Offenbach Ortiz

    Esto me sirve si tengo una cuenta usual de de microsoft, pero si tengo una cuenta a través de una organización y por ende no tiene la misma pagina de inicio, alguien sabe que tengo que hacer o modificar.
    Tengo ubuntu 14.04 y llego hasta la parte en que se visita la URL para obtener el callback

    Gracias de antemano