Dropbox on RHEL5 (dropbox.com on Centos5/puias5)

By thomas, 15 September, 2010
I had a few requests to get this working on our workstations. I managed to get a working version hacked together. I'm still working on making a proper package, at the moment it's just a binary rpm. I managed to get a working rpm that builds itself properly using a vlc hack. The problem is that the import of gtk in a few python scripts causes rpmbuild to go looking for a DISPLAY, using vlc, I circumvented that obstacle. I also manually resize the png's since our version of nautilus doesn't seem to handle it itself...

I've also replaced the /usr/bin/dropbox binary with a wrapper that uses wget to download the required tar file from dropbox.com, fixing the rest of the python script to work seemed like a waste of time...

There are two problems running dropbox on something as ancient as RHEL5

  1. python 2.6
  2. glib 2.16

Dropbox compiled against more modern versions of glib and gtk2 and wrote their scripts using the modern constructs of python 2.6. So to get dropbox working, you have to backport all the modern stuff. For python this means taking out all the with and closing statements.

glib is a little more complex, the new function of g_async_queue_new_full has to be replaced with g_async_queue_new, but we need to still handle the destroy when the queue is empty...I haven't fixed that yet.

g_strcmp0 isn't available in 2.12, so I just wrote an inline replacement for it.

g_timeout_add_seconds isn't available also, but that one's easy, you just use g_timeout_add and change the 1 to 1000 (for ms).

Here is my patch nautilus-dropbox-0.6.3-puias.patch

Once you have applied this, you'll need the following rpms as specified in my spec file:

BuildRequires: gtk2-devel, glib2-devel, nautilus-devel, libnotify-devel, nautilus-extensions, gnome-vfs2-devel, pygtk2-devel, pygtk2,python-docutils, vnc-server Requires: nautilus, glib2, gtk2, libnotify, gnome-vfs2, pygtk2,python-docutils

You can then start building, let me know if it doesn't compile cleanly or patch properly for you, I'm still working on it...

After all that, the dropbox python script that gets installed in /usr/bin is still broken, it can't download the binary package from dropbox automatically, you'll have to download that manually and unpack it into your home directory. The url is in the script, http://www.dropbox.com/download?plat=%s where plat is the result of the plat() function.

#!/usr/bin/python import sys import platform 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") print plat()
for 32-bit, it's going to be lnx.x86, for 64 lnx.x86_64

this is just a tar file, so download it and place it in the users home directory.

that should be it, if you do make; make install in the dropbox directory, and then run "dropbox start -i", it should start up and ask you if you already have an account.

one minor note, the png's provided in the dropbox tar file are 64x64, which means once you install everything and have it running, the emblems in nautilus are huge! The overwrite the icons of the files, I used convert (ImageMagick) to resize them to 16x16 which seems a reasonable size.

This is still very much a work in progress...any comments, questions or suggestions appreciated.

The RPMS

Updated 11Oct2010
SRPM
i386
x86_64

I still have a little work to do on these, but they should install clean, as usual, let me know if they don't...

How to apply the patch:

[uphill@build nautilus-dropbox]$ \rm -r nautilus-dropbox-0.6.3 [uphill@build nautilus-dropbox]$ tar xf nautilus-dropbox-0.6.3.tar.bz2 [uphill@build nautilus-dropbox]$ patch -p0