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 はインストール内容を正確に制御し、crates.io レジストリのようなサードパーティサービスへの依存を避けるために vendoring を使用します。
リリースモードでは、これらの依存関係に対して任意の最新の rustup ツールチェーンバージョンが動作するはずですが、サニタイザーを有効にする予定がある場合は、CI で使用しているものとまったく同じ std に対応するバージョンを使用する必要があります(そのためのクレートは vendoring 済みです)。
ClickHouse をビルドする
すべてのビルド成果物を格納するために、ClickHouse ディレクトリ内に専用の build ディレクトリを作成することを推奨します。
ビルドタイプごとに、(例: 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 の両方のアーキテクチャで動作し、requests モジュールが利用可能な Python と Docker 以外に、追加の依存関係は必要ありません。