
換装したSSDに Ubuntu 18.04を入れて愛用しているSony Vaio VCSA26GGのDropboxがある日、自動 起動しない ので調べてみると、Linux 版 Dropbox アプリの意外な仕組みを知ることになりました。
ログに残るエラー
タスクバーにDropboxのアイコンが見当たらないので、ログをモニタしながらDropboxアプリを手動起動してみるも、正常に起動しません。

図1.Dropboxアプリの手動起動
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
$ tail -F /var/log/syslog Jul 8 22:52:13 VPCSA26GGu compiz[1803]: Starting Dropbox...Traceback (most recent call last): Jul 8 22:52:13 VPCSA26GGu compiz[1803]: File "/usr/bin/dropbox", line 1583, in <module> Jul 8 22:52:13 VPCSA26GGu compiz[1803]: ret = main(sys.argv) Jul 8 22:52:13 VPCSA26GGu compiz[1803]: File "/usr/bin/dropbox", line 1572, in main Jul 8 22:52:13 VPCSA26GGu compiz[1803]: result = commands[argv[i]](argv[i+1:]) Jul 8 22:52:13 VPCSA26GGu compiz[1803]: File "/usr/bin/dropbox", line 1429, in start Jul 8 22:52:13 VPCSA26GGu compiz[1803]: if not start_dropbox(): Jul 8 22:52:13 VPCSA26GGu compiz[1803]: File "/usr/bin/dropbox", line 757, in start_dropbox Jul 8 22:52:13 VPCSA26GGu compiz[1803]: stderr=sys.stderr, stdout=f, close_fds=True, env=new_env) Jul 8 22:52:13 VPCSA26GGu compiz[1803]: File "/usr/lib/python2.7/subprocess.py", line 394, in __init__ Jul 8 22:52:13 VPCSA26GGu compiz[1803]: errread, errwrite) Jul 8 22:52:13 VPCSA26GGu compiz[1803]: File "/usr/lib/python2.7/subprocess.py", line 1047, in _execute_child Jul 8 22:52:13 VPCSA26GGu compiz[1803]: raise child_exception Jul 8 22:52:13 VPCSA26GGu compiz[1803]: OSError: [Errno 8] Exec format error $ python --version Python 2.7.17 |
解決策
ログに残るエラーメッセージを手がかりに調べてみると、nautilus-dropboxパッケージのGitHubにIssueが挙がっていました。
提起者が対処策も載せていて曰く、 ~/.dropbox-dist/ フォルダを削除してからDropboxを開始すれば良いとのこと。
1 2 3 4 5 6 7 8 9 10 11 12 |
$ du -h .dropbox-dist 16K .dropbox-dist/dropbox-lnx.x86_64-152.4.4880/plugins/platforms 20K .dropbox-dist/dropbox-lnx.x86_64-152.4.4880/plugins 4.0K .dropbox-dist/dropbox-lnx.x86_64-152.4.4880/helpers 2.4M .dropbox-dist/dropbox-lnx.x86_64-152.4.4880/resources 28K .dropbox-dist/dropbox-lnx.x86_64-152.4.4880/images/hicolor/16x16/status 32K .dropbox-dist/dropbox-lnx.x86_64-152.4.4880/images/hicolor/16x16 36K .dropbox-dist/dropbox-lnx.x86_64-152.4.4880/images/hicolor 84K .dropbox-dist/dropbox-lnx.x86_64-152.4.4880/images/emblems 124K .dropbox-dist/dropbox-lnx.x86_64-152.4.4880/images 183M .dropbox-dist/dropbox-lnx.x86_64-152.4.4880 183M .dropbox-dist |
ホームディレクトリ下の隠しフォルダにDropboxバイナリがあることに驚きつつも、当該フォルダを消してからDropboxアプリを立ち上げてみると、初回インストール時に見た記憶のあるポップアップウィンドウが現れて、Daemonプログラムのダウンロードが始まります(これが ~/.dropbox-dist/ )。
そしてしばらくすると、タスクバーにDropboxアイコンが戻ってきました。
1 2 |
$ ps -ax | grep dropbox 3074 ? Ssl 2:09 /home/user/.dropbox-dist/dropbox-lnx.x86_64-152.4.4880/dropbox |

図3.Dropbox稼働中
そしてもう一度 ~/.dropbox-dist/ フォルダを確認すると容量の違う箇所があるので、この差異が今回の不具合の原因ということに。
1 2 3 4 5 6 7 8 9 10 11 12 |
user@VPCSA26GGu:~$ du -h .dropbox-dist 16K .dropbox-dist/dropbox-lnx.x86_64-152.4.4880/plugins/platforms 20K .dropbox-dist/dropbox-lnx.x86_64-152.4.4880/plugins 4.0K .dropbox-dist/dropbox-lnx.x86_64-152.4.4880/helpers 2.4M .dropbox-dist/dropbox-lnx.x86_64-152.4.4880/resources 28K .dropbox-dist/dropbox-lnx.x86_64-152.4.4880/images/hicolor/16x16/status 32K .dropbox-dist/dropbox-lnx.x86_64-152.4.4880/images/hicolor/16x16 36K .dropbox-dist/dropbox-lnx.x86_64-152.4.4880/images/hicolor 84K .dropbox-dist/dropbox-lnx.x86_64-152.4.4880/images/emblems 124K .dropbox-dist/dropbox-lnx.x86_64-152.4.4880/images 205M .dropbox-dist/dropbox-lnx.x86_64-152.4.4880 205M .dropbox-dist |
Linux版Dropboxのしくみ
こうして問題は解決したのですが、良い機会なのでLinux版Dropboxの仕組みを調べてみました。
GNOMEベースのUbuntu 18.04の場合、おおよそ次の流れでDropboxが起動しているようです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
~/.config/autostart/dropbox.desktop ←GNOME自動起動 Exec=dropbox start -i ↓ /usr/bin/dropbox ←フロントエンド(Python) DROPBOXD_PATH = "%s/.dropbox-dist/dropboxd" % PARENT_DIR def start_dropbox(): db_path = os.path.expanduser(DROPBOXD_PATH).encode(sys.getfilesystemencoding()) ↓ ~/.dropbox-dist/dropboxd exec "$PAR/dropbox-lnx.x86_64-153.4.4880/dropboxd" "$@" ↓ ~/.dropbox-dist/dropbox-lnx.x86_64-152.4.4880/dropboxd exec "$PAR"/dropbox "$@" ↓ ~/.dropbox-dist/dropbox-lnx.x86_64-152.4.4880/dropbox ←バイナリ |
nautilus-dropboxを削除
Pythonで記述されている /usr/bin/dropbox フロントエンドスクリプトは、Dropbox公式サイトで配布されているdebパッケージや、 apt でインストールするnautilus-dropboxパッケージでインストールされるのですが、後者の場合は何年もメンテされていないことが。
実際のフロントエンドスクリプトを開いてみると、5,6年前の日付でPython2系の頃のように見受けられます。
1 2 3 4 5 6 7 8 9 10 11 |
$ ls -l /usr/bin/dropbox -rwxr-xr-x 1 user user 118806 4月 16 2017 dropbox $ head -n 7 /usr/bin/dropbox #! /usr/bin/python # # Copyright (c) Dropbox, Inc. # # dropbox # Dropbox frontend script # This file is part of nautilus-dropbox 2015.10.28. |
そこで、nautilus-droboxパッケージをアンインストールの上、Dropbox公式サイトよりdebパッケージをダウンロードしてインストールしてみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
$ sudo apt remove nautilus-dropbox $ wget -O dropbox_2020.03.04_amd64.deb https://www.dropbox.com/download?dl=packages/ubuntu/dropbox_2020.03.04_amd64.deb --2022-07-20 23:17:31-- https://www.dropbox.com/download?dl=packages/ubuntu/dropbox_2020.03.04_amd64.deb www.dropbox.com (www.dropbox.com) をDNSに問いあわせています... 162.125.85.18, 2620:100:6035:18::a27d:5512 www.dropbox.com (www.dropbox.com)|162.125.85.18|:443 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 301 Moved Permanently 場所: https://linux.dropbox.com/packages/ubuntu/dropbox_2020.03.04_amd64.deb [続く] --2022-07-20 23:17:31-- https://linux.dropbox.com/packages/ubuntu/dropbox_2020.03.04_amd64.deb linux.dropbox.com (linux.dropbox.com) をDNSに問いあわせています... 65.9.112.15, 65.9.112.3, 65.9.112.118, ... linux.dropbox.com (linux.dropbox.com)|65.9.112.15|:443 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 69360 (68K) [application/octet-stream] `dropbox_2020.03.04_amd64.deb' に保存中 dropbox_2020.03.04_amd64.deb 100%[=======================================================================================>] 67.73K 165KB/s 時間 0.4s 2022-07-20 23:17:33 (165 KB/s) - `dropbox_2020.03.04_amd64.deb' へ保存完了 [69360/69360] $ sudo dpkg -i ./dropbox_2020.03.04_amd64.deb 以前に未選択のパッケージ dropbox を選択しています。 (データベースを読み込んでいます ... 現在 279595 個のファイルとディレクトリがインストールされています。) ./dropbox_2020.03.04_amd64.deb を展開する準備をしています ... dropbox (2020.03.04) を展開しています... dropbox (2020.03.04) を設定しています ... Please restart all running instances of Nautilus, or you will experience problems. i.e. nautilus --quit Dropbox installation successfully completed! You can start Dropbox from your applications menu. desktop-file-utils (0.23-1ubuntu3.18.04.2) のトリガを処理しています ... gnome-menus (3.13.3-11ubuntu1.1) のトリガを処理しています ... mime-support (3.60ubuntu1) のトリガを処理しています ... bamfdaemon (0.5.3+18.04.20180207.2-0ubuntu1) のトリガを処理しています ... Rebuilding /usr/share/applications/bamf-2.index... hicolor-icon-theme (0.17-2) のトリガを処理しています ... man-db (2.8.3-2ubuntu0.1) のトリガを処理しています ... |
再びフロントエンドスクリプトを確認すると、先頭でPython3が明示的に宣言されるようになっていました。
1 2 3 4 5 6 7 8 9 10 11 |
$ ls -l /usr/bin/dropbox -rwxr-xr-x 1 root root 119684 3月 5 2020 /usr/bin/dropbox $ head -n 7 /usr/bin/dropbox #!/usr/bin/env python3 # # Copyright (c) Dropbox, Inc. # # dropbox # Dropbox frontend script # This file is part of nautilus-dropbox 2020.03.04. |