Hatena::Grouplifesciencedb

ゲノム周辺 このページをアンテナに追加 RSSフィード

2010-01-054store

SPARQLのつかえるスケーラブルRDFストア 4store をSnow LeopardのMacにインストールしてみた。

| 02:47 |  SPARQLのつかえるスケーラブルRDFストア 4store をSnow LeopardのMacにインストールしてみた。 - ゲノム周辺 を含むブックマーク はてなブックマーク -  SPARQLのつかえるスケーラブルRDFストア 4store をSnow LeopardのMacにインストールしてみた。 - ゲノム周辺  SPARQLのつかえるスケーラブルRDFストア 4store をSnow LeopardのMacにインストールしてみた。 - ゲノム周辺 のブックマークコメント

4store とは、RDFクエリエンジンとデータベースストレージ。高パフォーマンス、スケール性、安定性が強みとのこと。ライセンスはGPLv3、ANSI C99でコードされているので、多くのUNIXライクプラットフォームで実行可能。Linux用につくられているがMac OS Xでもうごく。クラスタリングによって、インポート速度は秒速120kトリプル を達成し、比較的単純なクエリはミリセカンドで応答する。これはHTTP経由SPARQLプロトコルでも達成できる。セキュリティにも十分配慮がなされている。

スケール性について。たとえば、8GBメモリのマシン9台でクラスタリングすると15ギガトリプルを扱うことができる。ハッシュ値の衝突からの上限はおよそ50-70ギガトリプルと見積もられている。

これを Mac OS X 10.6 の MacPro にインストールしてみたい。

バイナリ配布はエラーになった。

インストールして実行してみる。

nmp:~ nakao$ 4s-backend-setup test
dyld: Library not loaded: /usr/lib/libxml2.2.dylib
  Referenced from: /usr/lib/libxslt.1.dylib
  Reason: Incompatible library version: libxslt.1.dylib requires version 10.0.0 or later, but libxml2.2.dylib provides version 9.0.0
Trace/BPT trap

ライブラリのバージョンがあっていない。配布物は10.4当時を想定しているようだった。

ソースからビルドすることにした。

git からコンパイルする。

git clone git://github.com/garlik/4store.git
cd 4store
./configure

いろいろ依存パッケージやライブラリがはいっていなかった。

依存パッケージなどは次の通り。

  • pkg-config
  • raptor
  • rasqal
  • glib2
    • lib is a library which includes support routines for C, such as lists, trees, hashes, memory allocation, and many other things.
    • http://www.gtk.org/
  • libxml2
    • Libxml is the XML C library developed for the Gnome project. XML itself is a metalanguage to design markup languages. Though the library is written in C, a variety of language bindings make it available in other environments.
    • http://xmlsoft.org/
  • pcre
    • The PCRE library is a set of functions that implement regular expression pattern matching using the same syntax and semantics as Perl 5. PCRE has its own native API, as well as a set of wrapper functions that correspond to the POSIX regular expression API.
    • http://www.pcre.org/
  • ncurses
  • readline
    • The GNU Readline library provides a set of functions for use by applications that allow users to edit command lines as they are typed in. Both Emacs and vi editing modes are available. The Readline library includes additional functions to maintain a list of previously-entered command lines, to recall and perhaps reedit those lines, and perform csh-like history expansion on previous commands.
    • http://cnswww.cns.cwru.edu/~chet/readline/rltop.html
  • zlib
    • zlib is designed to be a free, general-purpose, legally unencumbered, lossless data-compression library for use on virtually any computer hardware and operating system.
    • http://www.zlib.net/
  • avahi
    • Avahi is a system which facilitates service discovery on a local network. This means that you can plug your laptop or computer into a network and instantly be able to view other people who you can chat with, find printers to print to or find files being shared. This kind of technology is already found in Mac OS X (branded Rendezvous, Bonjour and sometimes Zeroconf) and is very convenient. Avahi is mainly based on Lennart Poettering's flexmdns mDNS implementation for Linux which has been discontinued in favour of Avahi. (ランデブーのフリー版のようなもの)
    • http://avahi.org/
  • mDNS

Avahi と mDNS はどちらかがあればよい。

依存パッケージをMacPortsインストールする。

raptor をインストールする。

mnmp:4store nakao$ sudo port install raptor
--->  Computing dependencies for curl
--->  Fetching curl
--->  Attempting to fetch curl-7.19.7.tar.bz2 from http://www.execve.net/curl/
--->  Verifying checksum(s) for curl
--->  Extracting curl
--->  Configuring curl
--->  Building curl
--->  Staging curl into destroot
--->  Deactivating curl @7.19.4_0
--->  Computing dependencies for curl
--->  Installing curl @7.19.7_0
--->  Activating curl @7.19.7_0
--->  Cleaning curl
--->  Computing dependencies for libxslt
--->  Fetching libxslt
--->  Attempting to fetch libxslt-1.1.26.tar.gz from http://distfiles.macports.org/libxslt
--->  Verifying checksum(s) for libxslt
--->  Extracting libxslt
--->  Configuring libxslt
--->  Building libxslt
--->  Staging libxslt into destroot
--->  Deactivating libxslt @1.1.24_2
--->  Computing dependencies for libxslt
--->  Installing libxslt @1.1.26_0
--->  Activating libxslt @1.1.26_0
--->  Cleaning libxslt
--->  Computing dependencies for raptor
--->  Fetching raptor
--->  Attempting to fetch raptor-1.4.19.tar.gz from http://download.librdf.org/source/
--->  Verifying checksum(s) for raptor
--->  Extracting raptor
--->  Configuring raptor
--->  Building raptor
--->  Staging raptor into destroot
--->  Installing raptor @1.4.19_0
--->  Activating raptor @1.4.19_0
--->  Cleaning raptor
mnmp:4store nakao$ ./configure
[OK  ] pkg-config installed
[OK  ] raptor installed
[FAIL] no rasqal library

rasqal をインストールする。

mnmp:4store nakao$ sudo port install rasqal
--->  Computing dependencies for rasqal
--->  Fetching rasqal
--->  Attempting to fetch rasqal-0.9.16.tar.gz from http://download.librdf.org/source/
--->  Verifying checksum(s) for rasqal
--->  Extracting rasqal
--->  Configuring rasqal
--->  Building rasqal
--->  Staging rasqal into destroot
--->  Installing rasqal @0.9.16_0
--->  Activating rasqal @0.9.16_0
--->  Cleaning rasqal
mnmp:4store nakao$ ./configure
[OK  ] pkg-config installed
[OK  ] raptor installed
[OK  ] rasqal installed
[FAIL] no glib2 devel system

glib2をインストールする。

この間、とても書き切れないくらい操作して +universal でなみなみ更新

python25 をインストールする。

mnmp:4store nakao$ sudo port install python25
--->  Computing dependencies for python25
--->  Fetching python25
--->  Verifying checksum(s) for python25
--->  Extracting python25
--->  Applying patches to python25
--->  Configuring python25
--->  Building python25
--->  Staging python25 into destroot
--->  Installing python25 @2.5.4_9+darwin+darwin_10+macosx
--->  Activating python25 @2.5.4_9+darwin+darwin_10+macosx

To fully complete your installation and make python 2.5 the default, please run

     sudo port install python_select 
     sudo python_select python25

--->  Cleaning python25

4store のビルドインストール

./configure
make
make test

make test でテスト成功にみえるが、エラーとして終了する。

sudo make install

動作確認

http://4store.org/trac/wiki/CreateDatabase を参照。

mnmp:benchmark nakao$ 4s-backend-setup demo
4store[39388]: backend-setup.c:176 erased files for KB demo
4store[39388]: backend-setup.c:301 created RDF metadata for KB demo

どうやら動くらしい。


パッケージ化した

make macdmg で 4store.app とその dmg パッケージを作成できる。

アプリビルドしている app-aux/build-app.sh では /sw (Fink)を前提としているので、それを /opt/local (MacPorts)におきかえる。こうして作成したパッケージが別のMacでの動作を確認。

app-aux/build-app.sh の変更分は git でフォークした:http://github.com/nakao/4store


まとめ

  1. バイナリ配布物がSnow Leopardではうごかなかった。
  2. Snow Leopard, MacPorts 環境でビルドできた。
  3. パッケージを作成した。
  4. githubMacPortsでパッケージ化するソースをフォークした。
トラックバック - http://lifesciencedb.g.hatena.ne.jp/nakao_mitsuteru/20100105