Как собрать ClickHouse на Linux
Вы можете установить предварительно собранный ClickHouse, как это описано в Quick Start.
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
Чтобы установить Clang на Ubuntu/Debian, используйте автоматический скрипт установки LLVM отсюда.
Для других дистрибутивов Linux проверьте, можете ли вы установить какие-либо из предварительно собранных пакетов LLVM.
На март 2025 года требуется Clang 19 или выше. GCC или другие компиляторы не поддерживаются.
Установите компилятор Rust (опционально)
Rust является необязательной зависимостью ClickHouse. Если Rust не установлен, некоторые функции ClickHouse будут исключены из компиляции.
Сначала выполните шаги в официальной документации по Rust для установки rustup
.
Как и с зависимостями C++, ClickHouse использует вендоринг для точного контроля того, что установлено, и избегания зависимости от сторонних служб (например, реестра crates.io
).
Хотя в режиме выпуска любая современная версия rustup toolchain должна работать с этими зависимостями, если вы планируете включить санитайзеры, вы должны использовать версию, которая соответствует точно такому же std
, как тот, что используется в CI (для которого мы вендорим крейты):
Сборка ClickHouse
Рекомендуем создать отдельную директорию build
внутри ClickHouse
, которая будет содержать все артефакты сборки:
Вы можете создать несколько разных директорий (например, build_release
, build_debug
и т.д.) для разных типов сборки.
Опционально: если у вас установлено несколько версий компилятора, вы можете указать конкретный компилятор для использования.
Для целей разработки рекомендуется использовать отладочные сборки.
По сравнению с выпусками они имеют более низкий уровень оптимизации компилятора (-O
), что обеспечивает лучший опыт отладки.
Кроме того, внутренние исключения типа LOGICAL_ERROR
сразу приводят к сбою вместо мягкой неудачи.
Запустите ninja для сборки:
Если вы хотите собрать все бинарные файлы (системные утилиты и тесты), просто запустите ninja без параметров:
Вы можете контролировать количество параллельных задач сборки с помощью параметра -j
:
CMake предоставляет сокращения для вышеуказанных команд:
Запуск исполняемого файла ClickHouse
После успешной сборки вы найдете исполняемый файл в ClickHouse/<build_dir>/programs/
:
Сервер ClickHouse пытается найти файл конфигурации config.xml
в текущем каталоге.
Вы можете дополнительно указать файл конфигурации в командной строке через -C
.
Чтобы подключиться к серверу ClickHouse с помощью clickhouse-client
, откройте другой терминал, перейдите в ClickHouse/build/programs/
и выполните ./clickhouse client
.
Если вы получили сообщение Connection refused
на macOS или FreeBSD, попробуйте указать адрес хоста 127.0.0.1:
Расширенные параметры
Минимальная сборка
Если вам не нужна функциональность, предоставляемая сторонними библиотеками, вы можете еще больше ускорить сборку:
В случае проблем вы остаетесь наедине с ними ...
Rust требует подключения к интернету. Чтобы отключить поддержку Rust:
Запуск исполняемого файла ClickHouse
Вы можете заменить производственную версию бинарника ClickHouse, установленного в вашей системе, скомпилированным бинарником ClickHouse. Для этого установите ClickHouse на вашем компьютере, следуя инструкциям с официального сайта. Затем выполните:
Обратите внимание, что clickhouse-client
, clickhouse-server
и другие являются символическими ссылками на общий бинарный файл clickhouse
.
Вы также можете запустить свой собственный скомпилированный бинарник ClickHouse с файлом конфигурации из установленного пакета ClickHouse на вашей системе:
Сборка на любом Linux
Установите предварительные требования на OpenSUSE Tumbleweed:
Установите предварительные требования на Fedora Rawhide:
Сборка в docker
Мы используем образ docker clickhouse/binary-builder
для сборок в CI.
Он содержит все необходимое для сборки бинарного файла и пакетов.
Существует скрипт docker/packager/packager
, чтобы упростить использование образа: