LoginSignup
6
7

More than 5 years have passed since last update.

2018年版、CentOS 7 で Dropbox を使う

Last updated at Posted at 2018-11-19

CentOS 7 は Dropbox デーモンの動作対象外に

2018 年 10 月のアップデートで動作対象が Ubuntu / Debian / Fedora のみになった。
CentOS で使いたいので、動かすためのメモ

追記(2019/05/25)

アップデートにより、ここに掲載している方法では Dropbox デーモンの起動ができなくなりました
今後は、Dropbox デーモン用にバージョンが新しい glibc を自前で用意する必要があります。
詳しくはdn225さんのコメントを参照してください。

セットアップ

まずはクライアントのソースコードをダウンロードする。

$ cd ~
$ mkdir bin
$ cd bin
$ wget -O dropbox "http://www.dropbox.com/download?dl=packages/dropbox.py"
$ chmod +x dropbox

~/bin にまだパスを通していない場合はパスを通しておく。

$ export PATH=~/bin:$PATH

クライアントのコードは Python 2 で書かれているのと、dbus セッションを用いてデーモンと通信を行うため、Python 2.7 と dbus-x11 を入れる。

$ sudo yum install -y python2.7 dbus-x11

dropbox と叩いて動くことを確認する。Dropbox command-line interface と出れば良い。

$ dropbox
Dropbox command-line interface
(以下略)

ちなみに、同期されたファイル等を収めた Dropbox 関連のディレクトリはデフォルトだとホーム直下に置かれる。具体的には以下の三つのディレクトリがホームディレクトリに作成される。

  • Dropbox: 同期されるディレクトリ
  • .dropbox-dist: デーモンの実行ファイルの置き場
  • .dropbox: 認証の情報とかPIDとかランタイム情報

ホームではなく別のディレクトリにこれらのディレクトリを置きたい場合は、環境変数 HOME を設定することで変えられる。
よって、dropbox コマンドの alias を設定することで対応する。例えば /data/dropbox に置きたければ次のようにする。

$ alias dropbox='HOME=/data/dropbox dropbox'

ちなみに ext4 ファイルシステムでないと動かないらしいので注意してほしい。
ext4 でない場合はフォーマットする

これで準備はできた。早速 Dropbox を起動しようと dropbox start を叩くと、まだデーモンがインストールされていないとして怒られる。

$ dropbox start
Starting Dropbox...
The Dropbox daemon is not installed!
Run "dropbox start -i" to install the daemon

言う通りに dropbox start -i を実行する。

$ dropbox start -i
Starting Dropbox...
Dropbox is the easiest way to share and store your files online. Want to learn more? Head to https://www.dropbox.com/

In order to use Dropbox, you must download the proprietary daemon. [y/n] 

プロンプトが出てきたので y を入力して続行する。これでデーモンをインストールした後に起動してくれる。Done! と出れば成功だ。

デーモンの起動に成功したら、次は自分のアカウントと紐付けるために認証を行う必要がある。
dropbox status を叩くと次のような表示が出るはずだ。

$ dropbox status
開始中...
To link this computer to a dropbox account, visit the following url:
https://www.dropbox.com/cli_link_nonce?nonce=hogefuga

表示された URL が認証用の URL なので、これをブラウザに貼り付けて認証を済ませれば良い……と思いきやページに飛んでみるとこんな表示がされている。

dropbox-auth-error.JPG

Dropbox デーモンは動作要件に glibc 2.19 を要求しているようである。しかし CentOS 7 は glibc 2.17 が標準で入っている。
流石に glibc のリプレースメントを行うのは危険が想定される。
なので、デーモンでバージョン確認に使われている関数を自前のもので上書きすることで、あたかも glibc のバージョンが 2.19 であるかのように振る舞わせることにする。
以下のようにライブラリファイルを置くためのディレクトリを適当に用意する。

$ cd ~
$ mkdir lib
$ cd lib

ハックのための関数を作る。

~/lib/dropbox-glibcfix.c
const char* gnu_get_libc_version(void)
{
    return "2.19";
}

共有ライブラリとしてコンパイルする。

$ gcc -fPIC -shared -o dropbox-glibcfix.so dropbox-glibcfix.c

dropbox コマンドを叩いた時に毎回ファイルを preload してほしいので、alias を設定する。

$ alias dropbox='LD_PRELOAD=~/lib/dropbox-glibcfix.so dropbox'

(Dropboxのディレクトリを変更している場合)
$ alias dropbox='LD_PRELOAD=~/lib/dropbox-glibcfix.so HOME=/data/dropbox dropbox'

ここまでやれば、dropbox stopdropbox startdropbox status を実行することで認証画面まで行けるようになるはずだ。
認証が完了すると、すぐに同期が開始される。
もし、サイズが大きかったりで同期したくないディレクトリがある場合は dropbox exclude add を使って除外する。

$ dropbox exclude add /data/dropbox/hoge

リンク

6
7
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7