2014年8月30日土曜日

CentOS6.x + S3QL 2系 (インストール編)

2014年9月7日追記:
9月5日にバージョン2.11.1がリリースされています。
⇒主な変更点は、バージョン2.11でmountt.s3qlコマンドがデーモン化しなくなったのが、元に戻った事です。
下記の記事は特に修正はしていませんが、同様の手順でバージョン2.11.1の導入が可能なので、試すのであれば最新版でどうぞ!!



S3QLとは、Amazon S3のようなストレージサービスをローカルにマウントし、通常のハードディスクのようなデータ操作を可能にするツールです。
⇒もちろん実際のデータはローカルではなく、ストレージサービス側に保存されます

現在、S3QLには(原則、機能追加を行わないバグフィックスだけの)バージョン1系と(新機能追加など活発な開発が行われている)バージョン2系が存在します。

どうせ使うなら新しいほうが良いよねという事で、CentOS6.5(x86_64)にバージョン2.11(2014年8月時点での最新版)を導入するのが今回の内容です。


基本的には、以下のドキュメントを参考に進めていきます。
http://www.rath.org/s3ql-docs/installation.html
https://bitbucket.org/nikratio/s3ql/wiki/installation_centos



S3QL ver2.11のインストール


1.ビルドに必要なパッケージをインストール
# yum install autoconf gcc unzip fuse fuse-devel libattr-devel

2.Python3.3のインストール
バージョン2系はPythonの3.3以上が必要になるので、ドキュメントを真似てPUIAS repoからPython3.3をインストールします。
※1行だけ、文字が小さくなってすみません(変なところで改行が入るのを防ぐ為)

# cd /etc/pki/rpm-gpg/
# wget -q http://springdale.math.ias.edu/data/puias/6/x86_64/os/RPM-GPG-KEY-puias
# rpm --import RPM-GPG-KEY-puias
# cat <<EOF >> /etc/yum.repos.d/puias-computational.repo
> [PUIAS_6_computational]
> name=PUIAS Computational Base
> mirrorlist=http://puias.math.ias.edu/data/puias/computational/\$releasever/\$basearch/mirrorlist
> gpgcheck=1
> gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-puias
> EOF
#
# yum install python3 python3-devel python3-libs

3.Pythonのパッケージ管理ツールpipのインストール
この作業でsetuptoolsも一緒にインストールされます。

# wget -O - https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python3
# pip -V
pip 1.5.6 from /usr/lib/python3.3/site-packages (python 3.3)
#
# pip list
pip (1.5.6)
setuptools (5.4.2)
#

4.SQLiteをソースでインストール
OS標準のパッケージsqlite-3.6.20とコンフリクト(上書き)しないように、/usr/local/sqlite-3.8配下にインストールします。

$ wget http://www.sqlite.org/2014/sqlite-autoconf-3080500.tar.gz
$ tar zxf sqlite-autoconf-3080500.tar.gz
$ cd sqlite-autoconf-3080500
$ ./configure --prefix=/usr/local/sqlite-3.8
$ make
$ su
Password: パスワードの入力
# make install
# echo "/usr/local/sqlite-3.8/lib" > /etc/ld.so.conf.d/sqlite.conf
# ldconfig

5.Pythonモジュールのインストール
ドキュメントに指定されているPythonモジュールをインストールします。
# pip install pycrypto
# pip install defusedxml
# pip install requests
# pip install llfuse
# pip install dugong

6.APSWモジュールのインストール
SQLiteを/usr/local/sqlite-3.8配下にインストールしているので、それに合わせてsetup.pyファイルを編集してからインストールを実施します。
# wget https://github.com/rogerbinns/apsw/releases/download/3.8.5-r1/apsw-3.8.5-r1.zip
# unzip apsw-3.8.5-r1.zip
# cd apsw-3.8.5-r1
# cp -p setup.py{,.orig}
# vi setup.py
<編集後のdiff出力>====================================
--- setup.py.orig       2014-06-04 21:32:56.000000000 +0900
+++ setup.py    2014-08-14 22:43:08.417085436 +0900
@@ -19,8 +19,8 @@
 ## http://www.python.org/doc/2.5.2/dist/setup-config.html
 ##
-include_dirs=['src']
-library_dirs=[]
+include_dirs=['src','/usr/local/sqlite-3.8/include']
+library_dirs=['/usr/local/sqlite-3.8/lib']
 define_macros=[]
 libraries=[]
=====================================================
# python3 setup.py install

7.S3QL 導入前の確認
今までの作業の結果、インストールしたモジュール等を確認すると以下のようになります。

# pip list
Warning: cannot find svn location for apsw==3.8.5-r1
apsw (3.8.5-r1)
defusedxml (0.4.1)
dugong (3.2)
llfuse (0.40)
pip (1.5.6)
pycrypto (2.6.1)
requests (2.3.0)
setuptools (5.4.1)
#

8.S3QL 2.11のインストール
APSWモジュールのインストールと同様に、ソースでインストールしたSQLiteを指定してインストールします。
# wget https://bitbucket.org/nikratio/s3ql/downloads/s3ql-2.11.tar.bz2
# tar jxf s3ql-2.11.tar.bz2
# cd s3ql-2.11
#
# python3 setup.py build_ext --include-dirs='/usr/local/sqlite-3.8/include' \
> --library-dirs='/usr/local/sqlite-3.8/lib' --inplace
# python3 runtests.py tests
(snip)
========= 550 passed, 17 skipped, 1 warnings in 161.45 seconds ===========
#
# python3 setup.py install
(snip)
Using /usr/lib64/python3.3/site-packages
Finished processing dependencies for s3ql==2.11
#

 結果、S3QLのコマンド群が以下のようにインストールされます。
# ls -l /usr/bin/*s3ql*
-rwxr-xr-x 1 root root 294 Aug 29 23:17 /usr/bin/fsck.s3ql*
-rwxr-xr-x 1 root root 294 Aug 29 23:17 /usr/bin/mkfs.s3ql*
-rwxr-xr-x 1 root root 296 Aug 29 23:17 /usr/bin/mount.s3ql*
-rwxr-xr-x 1 root root 290 Aug 29 23:17 /usr/bin/s3qladm*
-rwxr-xr-x 1 root root 288 Aug 29 23:17 /usr/bin/s3qlcp*
-rwxr-xr-x 1 root root 292 Aug 29 23:17 /usr/bin/s3qlctrl*
-rwxr-xr-x 1 root root 292 Aug 29 23:17 /usr/bin/s3qllock*
-rwxr-xr-x 1 root root 310 Aug 29 23:17 /usr/bin/s3ql_oauth_client*
-rwxr-xr-x 1 root root 288 Aug 29 23:17 /usr/bin/s3qlrm*
-rwxr-xr-x 1 root root 292 Aug 29 23:17 /usr/bin/s3qlstat*
-rwxr-xr-x 1 root root 298 Aug 29 23:17 /usr/bin/s3ql_verify*
-rwxr-xr-x 1 root root 298 Aug 29 23:17 /usr/bin/umount.s3ql*
#


長くなったのでここまでで一旦終了とし、次回、実際にAmazon S3をマウントしてみたいと思います。