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

Как собрать ClickHouse на macOS для macOS

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

Вы можете установить предсобранный ClickHouse, как описано в Быстром старт.

ClickHouse можно скомпилировать на macOS x86_64 (Intel) и arm64 (Apple Silicon), начиная с macOS 10.15 (Catalina) или выше.

В качестве компилятора поддерживается только Clang из homebrew.

Установите предварительные требования

Сначала ознакомьтесь с общей документацией по предварительным требованиям.

Затем установите Homebrew и выполните

Затем выполните:

brew update
brew install ccache cmake ninja libtool gettext llvm lld binutils grep findutils nasm bash rust rustup
примечание

Apple по умолчанию использует файловую систему без учета регистра. Хотя это обычно не влияет на компиляцию (особенно работают 'scratch makes'), это может запутать такие операции с файлами, как git mv. Для серьезной разработки на macOS убедитесь, что исходный код хранится на регистрозависимом дисковом объеме, например, смотрите эти инструкции.

Сборка ClickHouse

Для сборки необходимо использовать компилятор Clang из Homebrew:

cd ClickHouse
mkdir build
export PATH=$(brew --prefix llvm)/bin:$PATH
cmake -S . -B build
cmake --build build

# The resulting binary will be created at: build/programs/clickhouse
примечание

Если вы сталкиваетесь с ошибками ld: archive member '/' not a mach-o file in ... во время линковки, возможно, вам нужно использовать llvm-ar, установив флаг -DCMAKE_AR=/opt/homebrew/opt/llvm/bin/llvm-ar.

Предостережения

Если вы намерены запускать clickhouse-server, убедитесь, что увеличили системную переменную maxfiles.

примечание

Вам потребуется использовать sudo.

Для этого создайте файл /Library/LaunchDaemons/limit.maxfiles.plist со следующим содержимым:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
        "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>Label</key>
    <string>limit.maxfiles</string>
    <key>ProgramArguments</key>
    <array>
      <string>launchctl</string>
      <string>limit</string>
      <string>maxfiles</string>
      <string>524288</string>
      <string>524288</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>ServiceIPC</key>
    <false/>
  </dict>
</plist>

Установите правильные права доступа к файлу:

sudo chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist

Проверьте, что файл корректен:

plutil /Library/LaunchDaemons/limit.maxfiles.plist

Загрузите файл (или перезагрузите):

sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist

Чтобы проверить, работает ли это, используйте команды ulimit -n или launchctl limit maxfiles.