pátek 30. července 2010

Dropbox (Linux) - nedaří se synchronizace po přihlášení

Dropbox klient pod operačním systémem Linux má jednu nepříjemnou chybu. Po přihlášení uživatele do systému se nepřipojí k serveru pro synchronizaci dat pokud je spuštěný dříve než je inicializováno připojení k síti. Projevuje se to především na notebooku, který se k internetové síti připojuje přes WiFi a je nastaveno automatické startování Dropbox klienta po přihlášení.

Chyba se projevuje u stabilní verze 0.7.110 i u vývojové verze (k dnešnímu dni je to verze 0.8.90). Nejnovější vývojové verze Dropboxu lze získat na fóru, kde pravidelně zveřejňují jejich vydání včetně odkazu ke stažení pro jednotlivé platformy.

Na diskuzním fóru Dropboxu je tato chyba popsána a vývojáři říkají, že pracují na jejím odstranění. V jednom vláknu (http://forums.dropbox.com/topic.php?id=21037#post-133477) doporučuje vývojář Dropboxu přidat do startovacího skriptu ~/.dropbox-dist/dropboxd pauzu pomocí příkazu sleep, tak aby se Dropbox spustil až po uskutečnění připojení do internetové sítě. Z uživatelského hlediska je toto řešení čisté. Upravuje se pouze soubor, ke kterému má uživatel příslušná přístupová práva. Nefunguje to ale, protože Dropbox v sobě zřejmě obsahuje nějaké samoopravné mechanizmy. Po provedení změny se při prvním spuštění Dropboxu rozpozná porušení instalace změnou do skriptu dropboxd. Dropbox si vyžádá stažení své nové kompletní instalaci ze serveru a přeinstaluje se včetně námi opraveného skriptu.

V jiném vláknu na diskuzním fóru Dropboxu (http://forums.dropbox.com/topic.php?id=15397#post-116871) lze nalézt řešení spočívající úpravou spouštěcího scriptu v jazyku python /usr/bin/dropbox, který je součástí instalačního balíčku nautilus-dropbox pro distribuce Fedora a Ubuntu. Pro úpravu tohoto skriptu potřebujeme práva administrátora. Řešení však funguje. Spočívá taktéž v přidání pauzy do spouštěcího skriptu tak, aby Network Manager stihl sestavit připojení do internetové sítě a samotný Dropbox se spouštěl až když toto připojení již existuje.

Na začátek skriptu stačí přidat příkaz
time.sleep(60) ... zaměňte číslo 60 podle vaší potřeby (udává počet vteřin)
V mém případě pak vypadal začátek skriptu /usr/bin/dropbox následovně:
import locale
from contextlib import closing
time.sleep(60)
INFO = u"Dropbox is the easiest way to share and store your files online. Want to learn more? Head to"
LINK = u"http://www.getdropbox.com/"
Jakmile je Dropbox jednou spuštěný a provedena synchronizace souborů nezáleží pak již na výpadku internetového připojení. Dropbox výpadek dokáže již sám rozpoznat a synchronizaci souborů podle existence připojení zastavuje nebo obnovuje.

Chyba se však projeví i přes tuto naší opravu v případě, když při přihlášení není k dispozici dostupná WiFi síť a spojení do sítě internet se nemůže uskutečnit ani v našem pozdrženém startu Dropboxu. Po připojení do sítě je nutné Dropbox ručně zastavit a poté znovu ručně spustit.

Žádné komentáře:

Okomentovat