メインコンテンツまでスキップ
メインコンテンツまでスキップ

ClickHouseをLinux上で構築する方法

ClickHouseを自分でビルドする必要はありません!

クイックスタートで説明されているように、事前にビルドされたClickHouseをインストールできます。

ClickHouseは以下のプラットフォームでビルドできます:

  • x86_64
  • AArch64
  • PowerPC 64 LE(実験的)
  • s390/x(実験的)
  • RISC-V 64(実験的)

前提条件

以下のチュートリアルはUbuntu Linuxを基にしていますが、適切な変更を加えることで他のLinuxディストリビューションでも動作するはずです。 開発に推奨される最低限のUbuntuバージョンは24.04 LTSです。

このチュートリアルでは、ClickHouseリポジトリとすべてのサブモジュールがローカルにチェックアウトされていると仮定します。

事前準備のインストール

まず、一般的な事前準備のドキュメントを参照してください。

ClickHouseはビルドにCMakeとNinjaを使用しています。

オプションで、ccacheをインストールして、ビルドで既にコンパイルされたオブジェクトファイルを再利用できます。

sudo apt-get update
sudo apt-get install git cmake ccache python3 ninja-build nasm yasm gawk lsb-release wget software-properties-common gnupg

Clangコンパイラのインストール

Ubuntu/DebianにClangをインストールするには、こちらのLLVMの自動インストールスクリプトを使用します。

sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)"

他のLinuxディストリビューションについては、LLVMのプレビルドパッケージをインストールできるか確認してください。

2025年3月現在、Clang 19以上が必要です。 GCCや他のコンパイラはサポートされていません。

Rustコンパイラのインストール(任意)

注記

RustはClickHouseのオプション依存関係です。 Rustがインストールされていない場合、ClickHouseの一部の機能がコンパイルから省かれます。

まず、公式のRustドキュメントの手順に従ってrustupをインストールします。

C++の依存関係と同様に、ClickHouseはサードパーティのサービス(如く crates.io レジストリ)に依存せず、何がインストールされるかを制御するためにベンダリングを使用します。

リリースモードでは、現代のrustupツールチェインのバージョンはこれらの依存関係とともに機能するはずですが、サニタイザーを有効にする予定がある場合は、CIで使用されるのと正確に同じstdに一致するバージョンを使用する必要があります(そのため、クレートをベンダリングしています):

rustup toolchain install nightly-2025-07-07
rustup default nightly-2025-07-07
rustup component add rust-src

ClickHouseをビルドする

すべてのビルドアーティファクトを含むClickHouse内に別のディレクトリbuildを作成することをお勧めします:

mkdir build
cd build

異なるビルドタイプのために、複数の異なるディレクトリ(例: build_release, build_debugなど)を持つことができます。

オプション: 複数のコンパイラバージョンがインストールされている場合、使用するコンパイラを正確に指定することもできます。

export CC=clang-19
export CXX=clang++-19

開発目的では、デバッグビルドが推奨されます。 リリースビルドと比較して、コンパイラの最適化レベル(-O)が低く、デバッグ体験が向上します。 また、LOGICAL_ERROR型の内部例外は、フェイルセーフに失敗するのではなく、すぐにクラッシュします。

cmake -D CMAKE_BUILD_TYPE=Debug ..
注記

gdbのようなデバッガを使用したい場合は、上記のコマンドに-D DEBUG_O_LEVEL="0"を追加して、すべてのコンパイラ最適化を削除し、gdbが変数を表示/アクセスする能力に干渉しないようにしてください。

ビルドするにはninjaを実行します:

ninja clickhouse

すべてのバイナリ(ユーティリティおよびテスト)をビルドするには、パラメータなしでninjaを実行します:

ninja

パラメータ-jを使用して、並列ビルドジョブの数を制御できます:

ninja -j 1 clickhouse-server clickhouse-client
ヒント

CMakeは上記のコマンドのショートカットを提供しています:

cmake -S . -B build  # configure build, run from repository top-level directory
cmake --build build  # compile

ClickHouse実行可能ファイルの実行

ビルドが成功した後、実行可能ファイルはClickHouse/<build_dir>/programs/にあります:

ClickHouseサーバは、現在のディレクトリにある構成ファイルconfig.xmlを探します。 -Cを介してコマンドラインで構成ファイルを指定することもできます。

clickhouse-clientを使用してClickHouseサーバに接続するには、別のターミナルを開きClickHouse/build/programs/に移動して./clickhouse clientを実行します。

macOSまたはFreeBSDでConnection refusedメッセージが表示される場合は、ホストアドレス127.0.0.1を指定してみてください:

clickhouse client --host 127.0.0.1

高度なオプション

最小ビルド

サードパーティライブラリが提供する機能が必要ない場合、ビルドをさらに高速化できます:

cmake -DENABLE_LIBRARIES=OFF

問題が発生した場合は、自己責任です...

Rustはインターネット接続を必要とします。Rustサポートを無効にするには:

cmake -DENABLE_RUST=OFF

ClickHouse実行可能ファイルの実行

システムにインストールされたClickHouseのバイナリのプロダクションバージョンをコンパイルされたClickHouseのバイナリで置き換えることができます。 そのためには、公式ウェブサイトの指示に従ってマシンにClickHouseをインストールします。 次に、以下を実行します:

sudo service clickhouse-server stop
sudo cp ClickHouse/build/programs/clickhouse /usr/bin/
sudo service clickhouse-server start

clickhouse-clientclickhouse-serverなどは、一般に共有されているclickhouseバイナリへのシンボリックリンクです。

また、システムにインストールされたClickHouseパッケージの構成ファイルを使用して、カスタムビルドしたClickHouseバイナリを実行することもできます:

sudo service clickhouse-server stop
sudo -u clickhouse ClickHouse/build/programs/clickhouse server --config-file /etc/clickhouse-server/config.xml

任意のLinux上でのビルド

OpenSUSE Tumbleweedで事前準備をインストールします:

sudo zypper install git cmake ninja clang-c++ python lld nasm yasm gawk
git clone --recursive https://github.com/ClickHouse/ClickHouse.git
mkdir build
cmake -S . -B build
cmake --build build

Fedora Rawhideで事前準備をインストールします:

sudo yum update
sudo yum --nogpg install git cmake make clang python3 ccache lld nasm yasm gawk
git clone --recursive https://github.com/ClickHouse/ClickHouse.git
mkdir build
cmake -S . -B build
cmake --build build

Dockerでのビルド

CIと似た環境でローカルに任意のビルドを実行するには、次のようにします:

python -m ci.praktika "BUILD_JOB_NAME"

ここでBUILD_JOB_NAMEはCIレポートに表示されるジョブ名です。例えば、「Build (arm_release)」、「Build (amd_debug)」などです。

このコマンドは、すべての必要な依存関係を含む適切なDockerイメージclickhouse/binary-builderをプルし、その内部でビルドスクリプト./ci/jobs/build_clickhouse.pyを実行します。

ビルド出力は./ci/tmp/に配置されます。

これはAMDおよびARMアーキテクチャの両方で動作し、Docker以外の追加依存関係は必要ありません。