Это руководство по сборке предназначено для разработчиков, вносящих изменения в сам ClickHouse.Если вы не изменяете исходный код ClickHouse, вы можете установить готовую сборку ClickHouse, как описано в разделе Быстрый старт.
- x86_64
- AArch64
- PowerPC 64 LE (экспериментальная)
- s390/x (экспериментальная)
- RISC-V 64 (экспериментальная)
Предварительные условия
Установите необходимые предварительные требования
Установите компилятор Clang
Установите компилятор Rust (необязательно)
Rust — необязательная зависимость ClickHouse.
Если Rust не установлен, некоторые возможности ClickHouse не будут включены в сборку.
rustup.
Как и в случае с зависимостями C++, ClickHouse использует вендоринг, чтобы точно контролировать состав устанавливаемых компонентов и не зависеть от сторонних сервисов (таких как реестр crates.io).
Хотя в режиме релизной сборки с этими зависимостями должна работать любая современная версия toolchain из rustup, если вы планируете включить санитайзеры, необходимо использовать версию, которая в точности соответствует той же std, что и версия, используемая в CI (для которой мы вендорим крейты):
Сборка ClickHouse
ClickHouse отдельный каталог build, в котором будут находиться все артефакты сборки:
build_release, build_debug и т. д.) для разных типов сборки.
Необязательно: если у вас установлено несколько версий компилятора, при необходимости можно указать, какой именно компилятор использовать.
-O), что упрощает отладку.
Кроме того, внутренние исключения типа LOGICAL_ERROR приводят к немедленному аварийному завершению вместо корректной обработки ошибки.
Если вы хотите использовать отладчик, например gdb, добавьте
-D DEBUG_O_LEVEL="0" к приведённой выше команде, чтобы отключить все оптимизации компилятора, которые могут мешать gdb просматривать переменные и обращаться к ним.-j:
clickhouse-server, clickhouse-client и другие подобные бинарные файлы представляют собой символические ссылки в каталоге programs/, указывающие на исполняемый файл clickhouse после завершения сборки.:::tip
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:
Дополнительные параметры
Минимальная сборка
Исполняемый файл ClickHouse
clickhouse-client, clickhouse-server и другие — это символические ссылки на общий бинарный файл clickhouse.
Вы также можете запустить собственноручно собранный бинарный файл ClickHouse с файлом config из установленного в системе пакета ClickHouse:
Сборка в любом дистрибутиве Linux
Сборка в Docker
clickhouse/binary-builder со всеми необходимыми зависимостями
и запускает внутри него скрипт сборки: ./ci/jobs/build_clickhouse.py
Результат сборки будет помещён в ./ci/tmp/.
Команда работает на архитектурах AMD и ARM и не требует никаких дополнительных зависимостей, кроме Python с доступным модулем requests и Docker.