Как собрать 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, чтобы облегчить использование изображения: