ビルド
この章は3つの部分から構成されています。
- ローカル開発用にCHMPXを設定する方法
- ソースコードからCHMPXを構築する方法
- CHMPXのインストール方法
1. ビルド環境の構築
CHMPXは主に、FULLOCK、K2HASHに依存します。それぞれの依存ライブラリとヘッダファイルはCHMPXをビルドするために必要です。それぞれの依存ライブラリとヘッダファイルをインストールする方法は2つあります。好きなものを選ぶことができます。
- GitHubから依存ファイルをインストール 依存ライブラリのソースコードとヘッダファイルをインストールします。あなたはそれぞれの依存ライブラリとヘッダファイルをビルドしてインストールします。
- packagecloud.ioを使用する 依存ライブラリのパッケージとヘッダファイルをインストールします。あなたはそれぞれの依存ライブラリとヘッダファイルをインストールするだけです。ライブラリはすでに構築されています。
1.1. GitHubから各依存ライブラリとヘッダファイルをインストール
詳細については以下の文書を読んでください。
- fullock
- k2hash
SSL/TLSプロトコルを実装するアプリケーションは、1つのSSL/TLSライブラリを使用する必要があります。K2HASHをビルドするときには、必然的にCHMPXで使用するSSL/TLSライブラリーを選択しなければなりません。K2HASHがサポートしているSSL/TLSライブラリは、K2HASH Buildを参照してください。
注: 後段で説明していますが、CHMPXも1つのSSL/TLSライブラリが必要であることを考慮する必要があります。これは、K2HASH BuildのビルドオプションがCHMPXのビルドオプションに影響することを意味します。 表1は、可能な構成オプションを示しています。
表1. 可能な構成オプション:
SSL/TLS library | K2HASH configure options | CHMPX configure options |
---|---|---|
OpenSSL | ./configure --prefix=/usr --with-openssl | ./configure --prefix=/usr --with-openssl |
GnuTLS (gcrypt) | ./configure --prefix=/usr --with-gcrypt | ./configure --prefix=/usr --with-gnutls |
GnuTLS (nettle) | ./configure --prefix=/usr --with-nettle | ./configure --prefix=/usr --with-gnutls |
Mozilla NSS | ./configure --prefix=/usr --with-nss | ./configure --prefix=/usr --with-nss |
1.2. packagecloud.ioから各依存ライブラリとヘッダファイルをインストール
このセクションでは、packagecloud.io - AntPickax stable repositoryから各依存ライブラリとヘッダーファイルをインストールする方法を説明します。
注:前のセクションで各依存ライブラリとGitHubからのヘッダーファイルをインストールした場合は、このセクションを読み飛ばしてください。
注:前のセクションで説明したように、K2HASH BuildのビルドオプションはCHMPXビルドオプションに影響します。 前のセクションの表1を参照してください。
最近のDebianベースLinuxの利用者は、以下の手順に従ってください。
$ sudo apt-get update -y
$ sudo apt-get install curl -y
$ curl -s https://packagecloud.io/install/repositories/antpickax/stable/script.deb.sh \
| sudo bash
$ sudo apt-get install autoconf autotools-dev gcc g++ make gdb libtool pkg-config \
libyaml-dev libfullock-dev k2hash-dev gnutls-dev -y
$ sudo apt-get install git -y
Fedoraの利用者は、以下の手順に従ってください。
$ sudo dnf makecache
$ sudo dnf install curl -y
$ curl -s https://packagecloud.io/install/repositories/antpickax/stable/script.rpm.sh \
| sudo bash
$ sudo dnf install autoconf automake gcc gcc-c++ gdb make libtool pkgconfig \
libyaml-devel libfullock-devel k2hash-devel nss-devel -y
$ sudo dnf install git -y
その他最近のRPMベースのLinuxの場合は、以下の手順に従ってください。
$ sudo yum makecache
$ sudo yum install curl -y
$ curl -s https://packagecloud.io/install/repositories/antpickax/stable/script.rpm.sh \
| sudo bash
$ sudo yum install autoconf automake gcc gcc-c++ gdb make libtool pkgconfig \
libyaml-devel libfullock-devel k2hash-devel nss-devel -y
$ sudo yum install git -y
2. GitHubからソースコードを複製
GitHubからCHMPXのソースコードをダウンロードしてください。
$ git clone https://github.com/yahoojapan/chmpx.git
3. ビルドしてインストールする
以下の手順に従ってCHMPXをビルドしてインストールしてください。 GNU Automakeを使ってCHMPXを構築します。
DebianベースLinuxの場合は、以下の手順に従ってください。
$ cd chmpx
$ sh autogen.sh
$ ./configure --prefix=/usr --with-gnutls
$ make
$ sudo make install
RPMベースLinuxの場合は、以下の手順に従ってください。
$ cd chmpx
$ sh autogen.sh
$ ./configure --prefix=/usr --with-nss
$ make
$ sudo make install
CHMPXを正常にインストールすると、CHMPXのヘルプテキストが表示されます。
$ chmpx -h
[Usage]
chmpx [-conf <file> | -json <json>] [-ctlport <port>] [-d [silent|err|wan|msg|dump]] [-dfile <debug file path>]
chmpx [ -h | -v ]
[option]
-conf <path> specify the configuration file(.ini .yaml .json) path
-json <json string> specify the configuration json string
-ctlport <port> specify the self control port(*)
-d <param> specify the debugging output mode:
silent - no output
err - output error level
wan - output warning level
msg - output debug(message) level
dump - output communication debug level
-dfile <path> specify the file path which is put debug output
-h(help) display this usage.
-v(version) display version.
[environments]
CHMDBGMODE debugging mode like "-d" option.
CHMDBGFILE the file path for debugging output like "-dfile" option.
CHMCONFFILE configuration file path like "-conf" option
CHMJSONCONF configuration json string like "-json" option
(*) if ctlport option is specified, chmpx searches same ctlport in configuration
file and ignores "CTLPORT" directive in "GLOBAL" section. and chmpx will
start in the mode indicated by the server entry that has been detected.