Как собрать 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
Чтобы установить Clang на Ubuntu/Debian, воспользуйтесь автоматическим скриптом установки LLVM, который можно найти здесь.
Для других дистрибутивов Linux проверьте, можете ли вы установить любой из предварительно собранных пакетов LLVM.
На март 2025 года требуется Clang 19 или выше. GCC или другие компиляторы не поддерживаются.
Установка компилятора Rust (по желанию)
Rust является необязательной зависимостью ClickHouse. Если Rust не установлен, некоторые функции ClickHouse будут пропущены при компиляции.
Сначала выполните шаги из официальной документации по Rust, чтобы установить rustup
.
Как и в случае с зависимостями C++, ClickHouse использует vendoring для точного контроля над тем, что установлено, и избегает зависимости от сторонних сервисов (таких как реестр crates.io
).
Хотя в режиме релиза любая современная версия rustup toolchain должна работать с этими зависимостями, если вы планируете включить санитайзеры, вы должны использовать версию, совпадающую с тем же std
, что и в CI (для чего мы используем вендоринг пакетов):
Сборка ClickHouse
Рекомендуется создать отдельный каталог build
внутри ClickHouse
, который будет содержать все артефакты сборки:
Вы можете иметь несколько разных каталогов (например, build_release
, build_debug
и т.д.) для различных типов сборки.
По желанию: если у вас установлено несколько версий компилятора, вы можете указать точный компилятор.
Для целей разработки рекомендуется использовать отладочные сборки.
В отличие от релизных сборок они имеют более низкий уровень оптимизации компилятора (-O
), который обеспечивает лучший опыт отладки.
Кроме того, внутренние исключения типа LOGICAL_ERROR
немедленно приводят к сбою, вместо того чтобы завершаться gracefully.
Запустите 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
Вы можете запустить любую сборку локально в среде, похожей на 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.