Как собрать ClickHouse на Linux
Вы можете установить предварительно собранный ClickHouse, как описано в Быстром старт.
ClickHouse может быть собран на следующих платформах:
- x86_64
- AArch64
- PowerPC 64 LE (экспериментально)
- s390/x (экспериментально)
- RISC-V 64 (экспериментально)
Предположения
Следующий учебник основан на Ubuntu Linux, но также должен работать на любой другой дистрибутиве Linux с соответствующими изменениями. Минимальная рекомендуемая версия Ubuntu для разработки — 24.04 LTS.
Данный учебник предполагает, что у вас уже локально клонирована репозитория ClickHouse и все подмодули.
УстановкаPrerequisites
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 должна работать с этими зависимостями, если вы планируете включить санитайзеры, вам необходимо использовать версию, которая совпадает с той же 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
, чтобы облегчить использование изображения: