Ubuntu 下跨越安装 dropbox

显然当局已经开始对Dropbox进行控制了,原因大概是因为dropbox可以无须任务授权地分享资料,只需要把文件放入public文 件夹,然后告知URL就可以下载到,类似于google docs。所以dropbox的public link很早就不能访问了。后来发现用https还可以下载,如https://dl.dropbox.com/u/1042790/Top%20Secret.txt, 如果换成http就不能了。

今天想在ubuntu下重新安装一下 dropbox,于是卸载旧的deb包,下载新 包,安装,一切正常。然后启动,发现不行了。 [Screenshot-3] 错误信息:

Trouble connecting to Dropbox servers. Maybe your internet connection is down, or you need to set your http_proxy environment variable.

开始还以为真是网络问题,多试几次之后来才意识到可能撞墙了。幸亏前几天看过 Dropbox客户端源码(可以在这里下载),立马就明白了是哪个地方撞墙。

在卸载Dropbox之前使用是正常的,可以登陆、同步,但重装之后就不行了,那是因为 Dropbox的linux客户端并没有包含完整的 dropbox程序,能够下载deb包到的只是Dropbox的一个壳,包括客户端源码也是。安装成功后第一次启动会下载一个Daemon,启动界面也说 得很清楚:

In order to use Dropbox, you must download the proprietary daemon.

就是这个地方撞墙,官方网站没有提供这个daemon的下载地址,因此只能先连接国外跨越VPN,然后再下载,但对于没有VPN的同学来说可能就麻 烦了。所以需要找到这个Daemon的下载地址。从Dropbox客户端源码可以找到这个地址。

先编译安装(./configure && make),然后在源码根目录下有个名为dropbox的Python程序,还好Python代码具有天然的易读性,很轻松就能找到下载地址,其中有一 段:

class DownloadState(object):
def __init__(self):
try:
self.file = urllib.urlopen(“http://www.getdropbox.com/download?plat=%s” % plat())
except IOError:
FatalVisibleError(“Trouble connecting to Dropbox servers. Maybe your internet connection is down, or you need to set your http_proxy environment variable.”)
fcntl.fcntl(self.file, fcntl.F_SETFL, os.O_NONBLOCK)

还记得FatalVisibleError中的提示语吗,对,就是刚才安装过程中出现的错误提示。所以urllib.urlopen中的参数就是下 载地址了。还有一个小问题就是plat()的值,这是一个函数,找到这个函数:

def plat():
if sys.platform.lower().startswith(‘linux’):
arch = platform.machine()
if (arch[0] == ‘i’ and arch[1].isdigit() and arch[2:4] == ‘86′):
plat = “x86″
elif arch == ‘x86_64′:
plat = arch
else:
FatalVisibleError(“Platform not supported”)
return “lnx.%s” % plat
else:
FatalVisibleError(“Platform not supported”)

如果还看不出来这个函数的返回值,可以单独拿出来运行一下,其返回值为lnx.x86,所以 Daemon的下载地址就是:

http://www.getdropbox.com/download?plat=lnx.x86

复制到浏览器中试试,很快链接被reset,但只要浏览器中有跨越代理就可以下载了。我已经下载上传到我的博客了,在这里:dropbox-lnx.x86-0.7.110.tar.gz。 如果你很幸运找到我这篇博客,就可以不用跨越下载了 :)

但还有一个问题,下载之后放哪儿?从源码也可以找出答案,我就不贴源码了,直接给出结果~/.dropbox-dist/,记住是将解压之后的结果 放在这路径下。从源码可知,第一次启动Dropbox时,他会在这个路径下查找~/.dropbox-dist/dropboxd程序,如果存在,则运 行,不存在,则下载tar包,并解压至此。



发表评论

电子邮件地址不会被公开。 必填项已用*标注

3 + 7 =