Перейти к основному содержимому
Перейти к основному содержимому

Как собрать ClickHouse на Linux

Вам не обязательно собирать ClickHouse самостоятельно!

Вы можете установить предсобранный 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 toolchain должна работать с этими зависимостями, если вы планируете включить санитайзеры, вы должны использовать версию, которая совпадает с той же 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, упрощающий использование образа: