2015年8月19日水曜日

ZeroC Ice のインストール

CentOS6に ZeroC Ice をインストールした。公式 rpm も出てて最初はそれを入れていたのだが、非標準のライブラリなども入れる必要があってそれが標準のライブラリと干渉することがあるので、ソースからビルドしてインストールすることにした。

ちなみにバージョンは公式rpmと同じ 3.5.1 にしている。もしかしたら最新の 3.6 でもphpMumbleAdmin は動くかもしれないけど、様子がわからないので動作確認がとれている 3.5.1 で実行することに決めた。

参考にしたのは Ice 3.5 と Ice 3.6 のインストールドキュメント。
ビルドに必要なライブラリがいくつかあるが、用意しないといけないのは Berkeley DB 5.3 と mcpp 2.7.2 (with patches) の2つ。どちらも ZeroC Ice のサイトからダウンロードできる。ほかは CentOS 標準のライブラリでよい。

まず DB 5.3 のビルドとインストール。今回 Java を使う予定はないので --enable-java は指定していない。/opt/db53 にインストールする。

$ wget https://zeroc.com/download/berkeley-db/db-5.3.28.NC.tar.gz
$ tar xzf db-5.3.28.NC.tar.gz
$ cd db-5.3.28.NC/build_unix
$ ../dist/configure --enable-cxx --prefix=/opt/db53
$ make
$ sudo make install
$ cd /opt/db53
$ sudo ln -s lib lib64

次に mcpp をビルドする。mcpp は静的ライブラリになるのでインストールはしない。 ソースは https://github.com/zeroc-ice/mcpp.git からダウンロードする。

$ wget https://github.com/zeroc-ice/mcpp/archive/master.zip
$ unzip master.zip
$ cd mcpp-master
$ make

最後に Ice-3.5.1 のビルドとインストール。インストール場所はデフォルトの /opt/Ice-3.5.1 。ただし、インストールドキュメント通りにしたらランタイムライブラリのパスがなぜか /opt/Ice-3.5 になってしまったので emmbedd_runpath_prefix=/opt/Ice-3.5.1 を指定してパスが正しくなるように修正している。

$ tar xvfz Ice-3.5.1.tar.gz
$ cd Ice-3.5.1/cpp
$ make DB_HOME=/opt/db53 MCPP_HOME=(絶対パス)/mcpp-master embedded_runpath_prefix=/opt/Ice-3.5.1
$ sudo make install
$ cd ../php
$ make PHP_HOME=/opt/rh/rh-php56/root/usr emmbedd_runpath_prefix=/opt/Ice-3.5.1
$ sudo make install
あとは PHP に IcePHP.so を読み込ませて /opt/Ice-3.5.1/php にパスを通せばよい。次のような内容のファイルを /etc/opt/rh/rh-php56/php.d/IcePHP.ini として作成する。
; Enable Ice extension module
extension = /opt/Ice-3.5.1/php/IcePHP.so

; Add to include_path
include_path = ${include_path}":/opt/Ice-3.5.1/php"
PHP の ini ファイルの中で既存の ini 変数を参照できるんだね、今知ったわ。

0 件のコメント :

コメントを投稿