Linux 上で ClickHouse をビルドする方法
Quick Start に記載されているように、事前にビルド済みの 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 をインストールできます。
Clang コンパイラをインストールする
Ubuntu/Debian に Clang をインストールするには、こちらから LLVM 提供の自動インストールスクリプトを使用してください。
他の Linux ディストリビューションの場合は、LLVM の事前ビルド済みパッケージをインストールできるか確認してください。
2025 年 3 月時点では、Clang 19 以降が必要です。 GCC やその他のコンパイラはサポートされていません。
Rust コンパイラをインストールする(任意)
Rust は ClickHouse のオプションの依存関係です。 Rust がインストールされていない場合、ClickHouse の一部の機能はコンパイルされません。
まず、公式の Rust ドキュメントの手順に従って rustup をインストールします。
C++ の依存関係と同様に、ClickHouse は vendoring(ベンダリング)を使用して、何がインストールされるかを正確に制御し、(crates.io レジストリのような)サードパーティサービスへの依存を避けています。
リリースモードでは、最新の rustup ツールチェーンであればどのバージョンでもこれらの依存関係は動作するはずですが、サニタイザを有効にする予定がある場合は、CI で使用しているものとまったく同じ std に一致するバージョン(そのための crate を vendoring しています)を使用する必要があります。
ClickHouse のビルド
すべてのビルド成果物を格納する専用ディレクトリ build を ClickHouse ディレクトリ内に作成することを推奨します。
異なるビルドタイプごとに(例:build_release、build_debug など)、複数のディレクトリを用意できます。
オプション: 複数のコンパイラバージョンがインストールされている場合、使用するコンパイラを明示的に指定することもできます。
開発用途では、debug ビルドを推奨します。
release ビルドと比較してコンパイラ最適化レベル(-O)が低く、よりデバッグしやすくなります。
また、LOGICAL_ERROR 型の内部例外は、穏やかに処理されるのではなく、即座にクラッシュを引き起こします。
gdb などのデバッガを使用したい場合は、上記のコマンドに -D DEBUG_O_LEVEL="0" を追加して、すべてのコンパイラ最適化を無効にしてください。コンパイラ最適化により、gdb が変数を表示・参照できなくなる場合があります。
ビルドするには ninja を実行します。
すべてのバイナリ(ユーティリティとテスト)をビルドするには、引数を付けずに ninja を実行します:
並列ビルドジョブの数は、パラメーター -j で制御できます。
CMake では、上記のコマンドを簡略化するためのショートカットが用意されています。
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 を指定してください。
高度なオプション
最小構成でのビルド
サードパーティ製ライブラリが提供する機能が不要な場合は、ビルド時間をさらに短縮できます。
問題が発生した場合は、すべて自己解決していただくことになります...
Rust の利用にはインターネット接続が必要です。Rust サポートを無効にするには、次のようにします:
ClickHouse 実行ファイルの実行
システムにインストールされている本番環境版の ClickHouse バイナリを、コンパイル済みの ClickHouse バイナリに置き換えることができます。 そのためには、公式ウェブサイトの手順に従ってマシンに ClickHouse をインストールしてください。 次に、以下を実行します:
clickhouse-client、clickhouse-server などは、共通の clickhouse バイナリへのシンボリックリンクであることに注意してください。
システムにインストールされている ClickHouse パッケージの設定ファイルを使って、独自にビルドした ClickHouse バイナリを実行することもできます。
任意の Linux 上でのビルド
OpenSUSE Tumbleweed に必要なパッケージをインストールします:
Fedora Rawhide に必要な前提パッケージをインストールする:
Docker でのビルド
CI と同様の環境で、任意のビルドを次のコマンドを使ってローカルで実行できます:
ここで BUILD_JOB_NAME は CI レポートに表示されるジョブ名であり、例えば "Build (arm_release)" や "Build (amd_debug)" などです。
このコマンドは、必要な依存関係がすべて含まれた適切な Docker イメージ clickhouse/binary-builder を取得して、
その中でビルドスクリプト ./ci/jobs/build_clickhouse.py を実行します。
ビルド成果物は ./ci/tmp/ に配置されます。
これは AMD と ARM の両方のアーキテクチャで動作し、Docker 以外に追加の依存関係は必要ありません。