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

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