Как собрать 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).
Хотя в режиме release любая современная версия toolchain rustup должна работать с этими зависимостями, если вы планируете включить санитайзеры, необходимо использовать версию, у которой std в точности совпадает с той, что используется в CI (для которой мы вендорим соответствующие crates):
Сборка 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.
Если в macOS или FreeBSD вы получаете сообщение Connection refused, попробуйте указать адрес хоста 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 — это имя задания (job) так, как оно указано в отчёте CI, например, "Build (arm_release)", "Build (amd_debug)".
Эта команда загружает соответствующий Docker-образ clickhouse/binary-builder со всеми необходимыми зависимостями
и запускает внутри него скрипт сборки: ./ci/jobs/build_clickhouse.py.
Результат сборки будет помещён в ./ci/tmp/.
Эта команда работает как на архитектуре AMD, так и на ARM и не требует никаких дополнительных зависимостей, кроме установленного Python с модулем requests и Docker.