必要なパッケージをインストール
sudo apt update
sudo apt upgrade -y
sudo apt -y install git gcc g++ curl libssl-dev libgtest-dev ninja-build pkg-config cmake
Symbol のソースをクローン
現在公開されているバージョンのブランチをクローンします。保存場所はホームディレクトリを想定しています。
git clone https://github.com/symbol/symbol.git -b client/catapult/v1.0.3.7
依存パッケージのビルド
Symbol サーバーをビルドするのに必要な依存パッケージをビルドするため、~/symbol/client/catapult
ディレクトリに入ります。
cd ~/symbol/client/catapult
以下のコマンドで依存パッケージをビルドします。ビルド中にエラーが出たら解消して、再実行してください。再実行時は--download
オプションは不要です。
PYTHONPATH="../../jenkins/catapult/" \
python3 "../../jenkins/catapult/installDepsLocal.py" \
--target "./deps" \
--versions "../../jenkins/catapult/versions.properties" \
--build \
--download
Symbol サーバーをビルド
ビルド用のディレクトリbuild
を作成して中に入ります。
mkdir -p build && cd build
cmake を実行します。時間がかかるのでテストを無効にしてビルドします。ちなみに、-DENABLE_TESTS=OFF
を削除すればテストもビルドします。
BOOST_ROOT="$(realpath ../deps/boost)" cmake .. \
-DENABLE_TESTS=OFF \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_PREFIX_PATH="$(realpath ../deps/facebook);$(realpath ../deps/google);$(realpath ../deps/mongodb);$(realpath ../deps/zeromq);$(realpath ../deps/openssl)" \
-GNinja
以下のメッセージが出ますが、警告なので無視して問題ありません。
CMake Warning (dev) at CMakeLists.txt:36 (find_package):
Policy CMP0144 is not set: find_package uses upper-case <PACKAGENAME>_ROOT
variables. Run "cmake --help-policy CMP0144" for policy details. Use the
cmake_policy command to set the policy and suppress this warning.
Environment variable BOOST_ROOT is set to:
/home/harvestasya/symbol/client/catapult/deps/boost
For compatibility, find_package is ignoring the variable, but code in a
.cmake module might still use it.
This warning is for project developers. Use -Wno-dev to suppress it.
ビルドを開始します。
ninja publish && ninja
インストール
~/symbol/client/catapult
に移動して、インストール用のスクリプトを作成します。
cd ~/symbol/client/catapult
vi symbol_install.sh
symbol_install.sh
#!/bin/bash
set -e
rm -rf /usr/local/catapult
mkdir -p /usr/local/catapult/bin
mkdir -p /usr/local/catapult/lib
mkdir -p /usr/local/catapult/deps
# bin
cp build/bin/catapult* /usr/local/catapult/bin
# lib
cp build/bin/lib* /usr/local/catapult/lib
# library
cp -r deps/boost/lib/*.so* /usr/local/catapult/deps
cp -r deps/facebook/lib/*.so* /usr/local/catapult/deps
cp -r deps/mongodb/lib/*.so* /usr/local/catapult/deps
cp -r deps/openssl/*.so* /usr/local/catapult/deps
cp -r deps/openssl/engines-3 /usr/local/catapult/deps
cp -r deps/openssl/ossl-modules /usr/local/catapult/deps
cp -r deps/zeromq/lib/*.so* /usr/local/catapult/deps
実行権限を付与して、シェルを実行します。
chmod +x symbol_install.sh
sudo ./symbol_install.sh
パスを通す
ライブラリへのパスを通します。
vi ~/.bashrc
以下を末行に追加します。
~/.bashrc
export LD_LIBRARY_PATH=/usr/local/catapult/deps
export PATH="/usr/local/catapult/bin:$PATH"
.bashrc
を再読み込みします。
source ~/.bashrc
実行確認
以下のコマンドを実行してヘルプが表示されれば、ビルドは成功です。
catapult.tools.address --help
次回