Как собрать 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 использует вендоринг для точного контроля того, что установлено, и избегания зависимости от сторонних сервисов (таких как реестр crates.io
).
Хотя в режиме релиза любая современная версия rustup должна работать с этими зависимостями, если вы планируете включить санитайзеры, вам необходимо использовать версию, которая соответствует точно такому же std
, как та, которая используется в CI (для которой мы вендорим трейты):
Соберите ClickHouse
Мы рекомендуем создать отдельный каталог build
внутри ClickHouse
, который будет содержать все артефакты сборки:
Вы можете иметь несколько различных каталогов (например, 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 с помощью 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.