12月 292012
 

前回の「SkyDrive を FreeBSD に mount して使う。」のエントリでは SMEStorage 経由で SMEStorage 提供の smestorage コマンド (perl スクリプト) を利用して KDE4 のファイルマネージャである dolphin から SkyDrive を FreeBSD から見る。ということろまででした。

今回はその続編になります。それにしても fusefs ってのはなんか面白いというか不思議なファイルシステムですねぇ。イマイチ解りませんが・・f(^^;;。 /usr/ports/sysutils/ の下には fusefs-* というのがたくさんあるんですね。

で、今回は、まぁ、海外のとある会社の製品というかサービスについて書くことになってしまうのですが SMEStorage を GUI で利用します。でもって、その上で SkyDrive を利用してみます。

まず、ソースコードですが、前回ダウンロードしてきた rpm を展開すると usr/share/sme_install_pack/ というディレクトリの中にドドドと入っていたのでこれを make して利用してみます。通常であれば、ベンダとかサードパーティから提供されるコマンドやアプリケーションはバイナリ形式のものが多いのですが SMEStorage はソースコードを提供してくれています。嬉しいですね。早速試してみましょう。

今回は /usr/local/SME/ と、いうディレクトレにインストールすることにしてみます。ソースコードは /usr/local/src/SME/ に展開してコンパイルしています。

# mkdir /usr/local/SME/
# cp -pr usr/share/applications /usr/local/SME/
# cp -pr usr/share/pixmaps /usr/local/SME/
# cp -pr usr/share/smestorageclient  /usr/local/SME/
# cp usr/local/bin/smestorage /usr/local/bin/
#
$ mkdir /usr/local/src/SME
$ cp usr/share/sme_install_pack/* /usr/local/src/SME/
$ cd /usr/local/src/SME
$ unzip SMEExplorer.zip
$ unzip SMEStorageClient.zip
$ unzip SMESyncCenter.zip
$ rm *.zip

 
Fuse-0.09.zip と XML-Simple-2.18.zip は ports からインストールされていると思うので今回は必要ありません。
上記 unzip したファイルは QT ベースのソースコードになります。KDE4 がインストールされていて QT4 がフルセットインストールされている環境であれば簡単にコンパイルが通ります。 QT4 がインストールされていない人はもしかしたらコンパイルのために QT4 一式をインストールする必要があるかもしれません。

QT4 がインストールされているものとして、次のステップに行きます;-)。ソースコードは Linux のためにコードにコマンドパスなどがベタ書きしてあるのでそれを変更してコンパイルします。

$ cd /usr/local/src/SME/
$ foreach i ( */*.h )
foreach? sed s#usr/share#usr/local/SME# $i > FILE
foreach? /bin/mv FILE $i
foreach? end
$ foreach i ( */*.cpp )
foreach? sed s#usr/share#usr/local/SME# $i > FILE
foreach? /bin/mv FILE $i
foreach? end

 
上記は tcsh で foreach を利用して Linux 用のパスである usr/share を今回インストールする usr/local/SME に書き換えています。 tcsh でない人は別のコマンドを利用して一括変換してください。

続いてコンパイルします。ソースコードは QT4 ベースなので make には qmake-qt4 を利用します。

$ cd /usr/local/src/SME/SMEExplorer/
$ qmake-qt4 ; make
# cp smestorageexplorer /usr/local/bin/
$ cd ../SMEStorageClient
$ qmake-qt4 ; make
# cp SMEStorageClient /usr/local/bin/
$ cd ../SMESyncCenter
$ qmake-qt4 ; make
# cp SMESyncCenter /usr/local/bin/

 
QT4 ベースのアプリはコンパイルが楽チンですね。 qmake は そのディレクトリの .pro ファイルを参照して Makefile を生成します。あとは make すると c++ がコンパイルをガシガシしてくれて、ハイ完成。って状態にしてくれます。

これで、前回のエントリでインストールした smestorage と今回新たに三つのアプリケーションのインストールが完了しました。以下に今回インストールしたアプリケーションの説明をちょっと書いてみます。

・smestorageexplorer
これだけ小文字なのですが、ウェブブラウザでアクセスする SMEStorage のサイトをファイルマネージャみたいなヤツで閲覧するアプリケーションです。非常に良くできていて SkyDrive も閲覧可能です。

smestorageexplorer_1.png

・SMEStorageClient
fusefs を利用してクラウド上にある SMEStorage を自分の FreeBSD に mount_fusefs するアプリケーションです。マウント専用の GUI です。

SMEStorageClient_1.png

・SMESyncCenter
SMEStorageClient でローカルに mount_fusefs したクラウド上の情報をローカルのディスクと sync するアプリです。簡単に言うと Windows 版の SkyDrive アプリケーションと似ているでしょうか。

SMESyncCenter_1.png

さてさて。これらコマンドの使い方ですが、smestorageexplorer は単体で利用できます。このコマンドは fusefs を利用しないのでサクっと動作します。まぁ、ウェブブラウザで SkyDrive にアクセスするか、専用アプリで SMEStorage 経由で SkyDrive にアクセスするかの違いだと思います。

問題は SMEStorageClient と SMESyncCenter を組み合わせて利用する場合です。まず、 SMEStorageClient アプリケーションで SMEStorage を mount_fusefs します。今回のキャプチャの例では smestorage.com にログインして fusefs を利用して /data/SME/ にマウントします。が、これが中々うまくマウントできないんですよねぇ。以下のメッセージが出力します。

mount_fusefs: /dev/fuse0 on /data/SME: Operation not permitted
fuse: failed to mount file system: No error: 0
could not mount fuse filesystem!

 
なんでやねん? とか思うのですが、そもそも、それ以前に儀式が必要です。

# /usr/local/etc/rc.d/fusefs onestart
# sysctl vfs.usermount=1

 
/usr/local/etc/rc.d/fusefs を start するときは kldload fuse.ko してくれます。 stop するときは kldunload fuse.ko と fusefs をマウントしている場合にはそれをアンマウントしてくれます。
vfs.usermount=1 のほうはユーザランドでマウントが利用できるようになる systcl mib です。
あと、/data/SME/ ディレクトリは SMEStorageClient を実行するオーナでないとダメです。 chown で調整してあげましょう。

が、こいつらを設定してもダメなんですよねぇ・・。orz しょーがないのでコマンドラインで以下のコマンドを叩きました。あ。以下のコマンドを叩くときは上記のコマンド二つは実行済みの状態です。

$ mount_fusefs auto /data/SME allow_other
mount_fusefs: failed to exec fuse daemon: No such file or directory

 
なんかデーモンが “No such file or directory” とか言ってますが(fuse 用のデーモンは特に動作していない)上記のコマンドを叩いたあとに mount コマンドで確認してみると無事にマウントできていたりします。

この段階で SMEStorageClient を起動して [Mount] ボタンを押すと「既にマウントしているよ。」と言われます。そして、そのあと [File] メニューの [Sync Center] を押すと SMESyncCenter が起動します。「Sync するか?」と聞いてくるので [OK] を選択すると、バババと同期してくれます。おぉっ!!

あとは、自分の好きなように利用するのが良いかと思われます;-)。

と、いうことで二回に分けて書いた今回の、主に SMEStorage のお話ですが fusefs のことがまぁ、そこそこ書けたのではないかなぁ。などと一人思っていますが、それにしても奥が深いのであろうと思われます。

あ、ちなみに、 SMEStorage のソースコード一式は多分、ports の解る人が ports を作成すれば簡単に ports 化できるのではないかと思われます。関連性でどこまで QT4 が必要になるかは(僕の環境では一式入っているため)解りませんけどね;-)。

と、いうことで今年のエントリは多分これが最後になるかと思われます。皆さん良いお年をー;-)。