ClickHouseをLinux上で構築する方法
クイックスタートで説明されているように、事前にビルドされた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
レジストリ)に依存せず、何がインストールされるかを制御するためにベンダリングを使用します。
リリースモードでは、現代のrustupツールチェインのバージョンはこれらの依存関係とともに機能するはずですが、サニタイザーを有効にする予定がある場合は、CIで使用されるのと正確に同じstd
に一致するバージョンを使用する必要があります(そのため、クレートをベンダリングしています):
ClickHouseをビルドする
すべてのビルドアーティファクトを含むClickHouse
内に別のディレクトリbuild
を作成することをお勧めします:
異なるビルドタイプのために、複数の異なるディレクトリ(例: build_release
, build_debug
など)を持つことができます。
オプション: 複数のコンパイラバージョンがインストールされている場合、使用するコンパイラを正確に指定することもできます。
開発目的では、デバッグビルドが推奨されます。
リリースビルドと比較して、コンパイラの最適化レベル(-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以外の追加依存関係は必要ありません。