差分

ナビゲーションに移動 検索に移動

Dropboxのインストール/Debian9.9

4,229 バイト追加, 2019年7月26日 (金) 14:17
さくらのレンタルサーバーで最新のMediaWikiを使用していることが前提なんだけど…= GUIインストール =GUIが利用できる「nautilus-dropbox」を入れていこうと思います。<br/>「SyntaxHighlight」を使用すると、「構文ハイライトエラー」になってしまう…。GNOMEデスクトップ前提なので、GNOMEを使っていない人は、別のパッケージを選択する必要があります。
== 「sources.list」の確認 ==
今回インストールしようとしている「nautilus-dropbox」は「Non-Freeディストリビューション」に含まれています。<br/>安定版(mainディストリビューション)をインストールしている場合などは、そのままではインストールすることができません。<br/>なので、「sources.list」を加工して「Non-Freeディストリビューション」もインストールできるようにします。
原因は単純でさくらのレンタルサーバーのPythonは現時点で2「sources.7…SyntaxHighlightはPython3が前提…list」ファイルは「/etc/apt」ディレクトリにあります。<br/>修正前は以下の様になっているかと思います。当然うまく動かないわけです…。<syntaxhighlight lang="text" line>#
# deb cdrom:[Debian GNU/Linux 9.9.0 _Stretch_ - Official amd64 NETINST 20190427-10:30]/ stretch main
そこで、ホームディレクトリにPython3を入れて、そちらを参照するようにSyntaxHighlightを書き換えちゃいます。#deb cdrom:[Debian GNU/Linux 9.9.0 _Stretch_ - Official amd64 NETINST 20190427-10:30]/ stretch main
= Python3のインストール =deb http://ftp.jp.debian.org/debian/ stretch main参考サイトに基づいて、Pythonの最新版(Python3)をインストールしていきます。<brdeb-src http://>先ずはホームディレクトリに作業用のディレクトリを作成して移動します。<syntaxhighlight lang="bash">mkdir ~ftp.jp.debian.org/workcd work<debian/syntaxhighlight>stretch main
deb http://security.debian.org/debian-security stretch/updates main
deb-src http://security.debian.org/debian-security stretch/updates main
次に、wgetコマンドでPythonの公式サイトからモジュールをダウンロードします。# stretch-updates, previously known as 'volatile'<syntaxhighlight lang="bash">wget httpsdeb http://wwwftp.pythonjp.debian.org/ftpdebian/ stretch-updates maindeb-src http:/python/3ftp.7jp.4debian.org/debian/Pythonstretch-3.7.4.tar.xzupdates main</syntaxhighlight>(ダウンロードパスは適宜見直してください)
要は「stretch mainからしか取得しませんよ」ってなっています。
ダウンロードしたらtarコマンドで解凍します。<syntaxhighlight lang="bash">tar -xzf Python-3.7.4.tar.xz</syntaxhighlight>これを以下の様に修正します。
<syntaxhighlight lang="text" highlight="7,8,10,11,14,15" line>#
解凍すると「Python-3# deb cdrom:[Debian GNU/Linux 9.79.4」ディレクトリが作成されますので、そこに移動します。<syntaxhighlight lang="bash">cd Python0 _Stretch_ -3.7.4<Official amd64 NETINST 20190427-10:30]/syntaxhighlight>stretch main
#deb cdrom:[Debian GNU/Linux 9.9.0 _Stretch_ - Official amd64 NETINST 20190427-10:30]/ stretch main
以下のコマンドでインストール先を変更します。<syntaxhighlight lang="bash">deb http://ftp.jp.debian.org/configure debian/ stretch main non-freedeb-prefix=$HOMEsrc http:/local/pythonftp.jp.debian.org/<debian/syntaxhighlight>stretch main non-free
deb http://security.debian.org/debian-security stretch/updates main non-free
deb-src http://security.debian.org/debian-security stretch/updates main non-free
そしたらmakeしてインストールします。# stretch-updates, previously known as 'volatile'<syntaxhighlight lang="bash">makedeb http://ftp.jp.debian.org/debian/ stretch-updates main non-freemake installdeb-src http://ftp.jp.debian.org/debian/ stretch-updates main non-free</syntaxhighlight>
これで、「non-freeディストリビューション」から取得できるようになりました。
インストールに使用したディレクトリは削除しちゃいます。<syntaxhighlight lang="bash">cd ~= パッケージの取得とインストール ==rm -fr work</syntaxhighlight>パッケージを取得してインストールしていきます。
= SyntaxHighlightの編集 == お約束 ===Debian周りの最新化を行います。<br/><syntaxhighlight lang="bash">sudo apt-get updatesudo apt-get upgradeコードを直接編集するので、バックアップを取りながら進めていきます。sudo apt-get dist-upgrade</syntaxhighlight>
=== 「nautilus-dropbox」のインストール ===
「apt-get」コマンドで「nautilus-dropbox」をインストールします。<br/><syntaxhighlight lang="bash">sudo apt-get install nautilus-dropbox</syntaxhighlight><br/>すると…以下の様に確認が来ます。<syntaxhighlight lang="bash">パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
libappindicator1 libdbusmenu-glib4 libdbusmenu-gtk4 libindicator7 python-gpgme
以下のパッケージが新たにインストールされます:
libappindicator1 libdbusmenu-glib4 libdbusmenu-gtk4 libindicator7 nautilus-dropbox python-gpgme
アップグレード: 0 個、新規インストール: 6 個、削除: 0 個、保留: 0 個。
422 kB のアーカイブを取得する必要があります。
この操作後に追加で 966 kB のディスク容量が消費されます。
続行しますか? [Y/n] </syntaxhighlight>問題なければ「y」キーを押してください。以下の様にだぁ~っとインストールが開始されます。<syntaxhighlight lang="bash">取得:1 http://ftp.jp.debian.org/debian stretch/main amd64 libdbusmenu-glib4 amd64 12.10.2-2 [104 kB]
取得:2 http://ftp.jp.debian.org/debian stretch/main amd64 libdbusmenu-gtk4 amd64 12.10.2-2 [90.8 kB]
取得:3 http://ftp.jp.debian.org/debian stretch/main amd64 libindicator7 amd64 0.5.0-3+b1 [52.9 kB]
取得:4 http://ftp.jp.debian.org/debian stretch/main amd64 libappindicator1 amd64 0.4.92-4 [52.5 kB]
先ずは編集するコードが有るところまで移動します。<br/>
ターゲットは「create_pygmentize_bundle」ファイルです。
<syntaxhighlight lang="bash">cd [MdiaWikiのディレクトリ]/extensions/SyntaxHighlight_GeSHi/pygments</syntaxhighlight>
[MdiaWikiのディレクトリ]は自分の環境に合わせて書き換えてください。
~~~中略~~~
バックアップを作成します。
<syntaxhighlight lang="bash">cp create_pygmentize_bundle create_pygmentize_bundle_bk
mv pygmentize pygmentize_bk</syntaxhighlight>
(「pygmentize」ファイルは作成し直すので、mvしています)
hicolor-icon-theme (0.15-1) のトリガを処理しています ...
libdbusmenu-gtk4:amd64 (12.10.2-2) を設定しています ...
libappindicator1:amd64 (0.4.92-4) を設定しています ...
libc-bin (2.24-11+deb9u4) のトリガを処理しています ...</syntaxhighlight>
「create_pygmentize_bundle」ファイルを修正します。<br/>以下の様に修正してください<syntaxhighlight lang="python" line highlight="1,19,60">#!/home/[userid]/local/python/bin/python3# これで、「nautilus-*- coding: utf-8 -*-""" Create a standalone, executable 'pygmentize' bundle. Author: Ori Livnehdropbox」のインストール完了です。
"""== 「Dropbox」のダウンロードと初期設定 ==import hashlib# デスクトップからログインして「アクティビティ」から「ドロップボックス」を起動します。<br/>[[ファイル:Debian-dropbox-001.png | 400px]]<br/><br/>import io# 起動すると、何やら(というか、「Dropboxのアカウントが必要なので登録してね」って内容の)ダイアログが出ますが、サクッと「OK」を押します。<br/>[[ファイル:Debian-dropbox-002.png | 400px]]<br/><br/>import os# するってぇと、「Dropbox」のダウンロードが始まります。<br/>[[ファイル:Debian-dropbox-003.png | 400px]]<br/><br/>import stat# ダウンロードが完了すると、引き続きインストールをします。<br/>[[ファイル:Debian-dropbox-004.png | 400px]]<br/><br/>import textwrap# インストールが完了すると、ブラウザが開いて「Dropboxのログイン画面」が表示されます。<br/>登録済みの、ユーザーIDとパスワードを入力してログインします。<br/>[[ファイル:Debian-dropbox-005.png | 400px]]<br/><br/>import urllib# ログインすると以下の様な画面が表示されます。<br/>このままWEB版のDropboxを利用する場合は「Dropboxを続行する」をクリックすれば画面が遷移します。<br/>アカウントの紐付けだけなら、特に何もする必要はありません。<br/>しばらくすると「ファイル(nautilus)」が起動します。<br/>[[ファイル:Debian-dropbox-006.requestpng | 400px]]<br/><br/>import xmlrpc# 認証が完了したら、ドロップボックスが同期を始めます。<br/>GNOME3の場合、アイコンは画面左下に表示されます。<br/>(下の画面では同期のマークが出ていませんが、PCと同じくちゃんと表示されます)<br/>[[ファイル:Debian-dropbox-007.clientimport zipfilepng | 400px]]<br/>(追記:同期が完了すると、同期マークは消えるみたいです)<br/><br/>
= CUIインストール =
CUIと言ってもデスクトップ環境がない状態でインストールを試みたのですが…どうやら、ver74.4.115はデスクトップ環境が必須のようですね。<br/>色々試しましたがダメでした。<br/>試したことを上げておきます。
PYGMENTIZE_LAUNCHER = textwrap# 普通に「[https://www.dedent('''\dropbox.com/ja/install-linux インストール - Dropbox]」にかかれている通りにインストール。<br/>「~/.dropbox-dist/dropboxd」コマンド実行時に途中で止まってしまいます。<br/>ちなみに「dropbox start」や「dropbox start -i」でも同じところで止まってしまいます。<br/><br/> #「nautilus-dropbox」をインストール<br/>上と同様に、「~/.dropbox-dist/dropboxd」コマンド実行時に途中で止まってしまいます。<br/>「dropbox start」や「dropbox start -i」だと動いているように(「Done!」で終わります)見えますが、アカウントとの連携メッセージが表示されませんでした。<br/home>「dropbox status」で確認すると、ずっと「接続中…」のままになります。<br/[userid]><br/local># 「source.list」に無理やりDropboxのリポジトリを追加してインストール<br/python>「nautilus-dropbox」と同じ現象になりました。<br/bin><br/python3>
import sys import pygments.cmdline try: sys.exit(pygments.cmdline.main(sys.argv)) except KeyboardInterrupt: sys.exit(1)''')デスクトップ環境がない状態でも動かせれば便利なんだけど…
== 少し進展 ==
サービスを起動しているんだけど、どこでどうやって起動しているのか探していて、やっと発見しました。<br/>
GNOMEのauto startを使用していました。<br/>
具体的には「~/.config/autostart」ディレクトリの「dropbox.desktop」というファイルです。<br/>
中身は以下のようになっています。
<syntaxhighlight lang="bash">[Desktop Entry]
Name=Dropbox
GenericName=File Synchronizer
Comment=Sync your files across computers and to the web
Exec=dropbox start -i
Terminal=false
Type=Application
Icon=dropbox
Categories=Network;FileTransfer;
StartupNotify=false</syntaxhighlight>
「dropboxd」ではなく「dropbox start -i」で起動しているんですね…。<br/>
(結局は一緒って話もありますが…)<br/>
これがわかれば「systemd」に変更することでユーザーを変更することもできそうです。
print('Querying PyPI for the latest Pygments release...')pypi = xmlrpc.client.ServerProxy('https://pypi.python.org/pypi')latest_version = pypi.package_releases('Pygments')[0]url = Nonefor release in pypi.release_urls('Pygments', latest_version): if (release['packagetype'] == 'bdist_wheel' and release['python_version'].startswith('py2')): url = release['url'] md5_digest = release['md5_digest'] break if not url: raise RuntimeError('No suitable package found.') print('Retrieving version %s (%s)...' % (latest_version, url))req = urllib.request.urlopen(url)buf = io.BytesIO(req.read()) print('Verifying...')if hashlib.md5(buf.getvalue()).hexdigest() !蛇足? = md5_digest: raise RuntimeError('MD5 checksum mismatch.') print('Creating executable ZIP bundle...')with zipfile.ZipFile(buf, 'a') as zf: zf.writestr('__main__.py', PYGMENTIZE_LAUNCHER) data = buf.getvalue()script_dir = os.path.dirname(os.path.abspath(__file__))file_path = os.path.join(script_dir, 'pygmentize')with open(file_path, 'wb') as f: f.write(b'#!* Dropboxのデフォルトの同期先は「~/home/[userid]/local/python/bin/python3\n') f.write(data) file_st = os.stat(file_path)os.chmod(file_path, file_st.st_mode | stat.S_IEXEC) with open(os.path.join(script_dir, 'VERSION'), 'w') as f: f.write(latest_version + '\n')Dropbox」です print('Done. Wrote %s bytes to %s' % (len(data), file_path))</syntaxhighlight>([userid]は書き直してください)  最後に「pygmentize」を作成し直します。<syntaxhighlight lang="bash">/home/[userid]/local/python/bin/python3 ./create_pygmentize_bundle</syntaxhighlight>([userid]は書き直してください) = WEBブラウザのキャッシュ =WEBブラウザのキャッシュが残っていると、なかなか変わった感じがしないかもしれません。* Dropboxはログインと同時に同期を開始します。(ココらへんはPCと同じです)<br/>そんな時は例えば「<syntaxhighlight lang="bash">」を「<syntaxhighlight lang="bash" line>」などに書き直してみてください。もし、起動と同時に同期を開始したい場合は「自動ログイン」にする必要があります。<br/>(CUIで起動する場合はユーザーの指定が必要??? - 何時か試したいです)これで、行番号が表示されればOKです。* 外付けのHDD(ext4もOKです)にも同期できますが、sambaのような共有ディレクトリには同期できません。
= 参考サイト =
[https://emptypagewww.jp/notes/pymods-on-sakuragarunimo.html さくらのレンタルサーバで Python 外部モジュールを使う]<brcom/>[https:program/linux/affitips_etc_apt_sources_list.comphp /etc/pagesapt/65sources.html さくらにPython3をインストールしたときのメモ - アフィリエイト&ウェブ制作のtipslist(パッケージのダウンロード元設定ファイル・Debian)]
[[Category:さくらサーバーDebian]][[Category:MediaWiki]][[Category:Python3]][[Category:SyntaxHighlightDropbox]]

案内メニュー