読者です 読者をやめる 読者になる 読者になる

FreeBSD 10.0にdatをインストールする

FreeBSD

今話題のDatをインストールしてみたのでメモ。

Dat
http://dat-data.com/

Datとは

ビッグデータのためのgit、みたいな感じらしい。

gitだと扱えないような重いファイルを扱ったり、 データ形式がいろいろ変換できたり、という感じ。 (あんまり詳しく説明読んでない)

インストール(までの試行錯誤)

ふつうに

pkg install npm
npm install dat -g

でさくっとインストールできると思いきや、なんかエラーが出ます。

...
> node-gyp rebuild

gyp ERR! build error
gyp ERR! stack Error: not found: gmake
gyp ERR! stack     at F (/usr/local/lib/node_modules/npm/node_modules/which/which.js:43:28)
gyp ERR! stack     at E (/usr/local/lib/node_modules/npm/node_modules/which/which.js:46:29)
gyp ERR! stack     at /usr/local/lib/node_modules/npm/node_modules/which/which.js:57:16
gyp ERR! stack     at Object.oncomplete (fs.js:107:15)
gyp ERR! System FreeBSD 10.0-RELEASE
gyp ERR! command "node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"

gmake入れてなかったかららしい。

pkg install gmake

でインストールして、気を取り直してもう一度やってみます。 すると、

...
> node-gyp rebuild

gmake: Entering directory `/usr/local/lib/node_modules/dat/node_modules/leveldown/build'
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-1.14.0/db/builder.o
gmake: g++: Command not found
gmake: *** [Release/obj.target/leveldb/deps/leveldb/leveldb-1.14.0/db/builder.o]
 Error 127
gmake: Leaving directory `/usr/local/lib/node_modules/dat/node_modules/leveldown/build'
gyp ERR! build error
gyp ERR! stack Error: `gmake` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:267:23)
gyp ERR! stack     at ChildProcess.EventEmitter.emit (events.js:98:17)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (child_process.js:797:12)
gyp ERR! System FreeBSD 10.0-RELEASE
gyp ERR! command "node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"

g++がない、だと。。

と思ってぐぐると、こんなのが引っかかりました。

node-sqlite3 doesn't install on freebsd 10 due to g++ · Issue #250 · mapbox/node-sqlite3 · GitHub

It looks like you might be able to workaround this also by doing export LINK=clang++.

どうも、コンパイラg++じゃなくてclang++にするようにしないといけないみたいです。
デフォルトのコンパイラがclangになってるFreeBSDあるあるですね。

やり方はいろいろあるみたいですが、上のやつの2つ下のコメントにある

ln -s /usr/bin/clang++ /usr/local/bin/g++

をやってみたらうまくいきました。

ということで、思ったよりすんなり(?)インストールできました。

使ってみる

ちょっとUsage見ながら、使い方を試してみます。

ローカルで動かす

まず、datのデータを溜めるディレクトリをつくってinitします。(この辺gitっぽい)

mkdir some_great_big_data
cd some_great_big_data
dat init

次に、データを放り込みます。

echo '{"hello": "me"}' | dat --json

すると、こんな感じの結果が返ってきます。

{"_id":"2014-04-05T13:00:00.583Z-f1bf9841","_rev":"1-83d5a5e19eccf9da5b3003ac548c849"}

現在datに入っているデータを表示するには、

dat cat

とかします。

dat server

また、ローカルだけではなくて、gitのような分散管理システムにも使えます。

dat serve

とすると、datサーバーが立ち上がります。

別のディレクトリで

dat init --remote=http://localhost:6461

とかやると、dat serveしているdatとデータが同期されます。

で、これを編集してpushしたり、とかいうgitっぽいことができるみたいです。 (ためすのめんどくさくなってきたので以降未確認。。)

で、実際使うの?

gitにgithubがあるように、datにも「dathub」があれば。

(usageにあるように、dathub.orgというドメインのサイトは既にありますが、まだただのレポジトリです)