В официальных репозиториях Debian Buster появились пакеты с сервером и клиентом Clickhouse. По умолчанию сервер Clickhouse собран с использованием процессорных инструкций SSE 4.2, т.к. именно такие системные требования указаны на официальной странице проекта.
Для проверки, поддерживает ли процессор SSE 4.2, можно воспользоваться следующей командой:
$ grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"
При попытке запустить сервер ClickHouse на процессоре, не поддерживающем этот набор инструкций, в журнале /var/log/messages можно будет обнаружить сообщения следующего вида:
Aug 9 18:33:45 buster kernel: [ 7.571795] traps: clickhouse-serv[257] trap invalid opcode ip:7f89f23 sp:7ffda2789a98 error:0 in clickhouse[400000+f8a5000]
Мой домашний компьютер не отличается новизной, поэтому для экспериментов дома мне пришлось пересобрать пакеты с Clickhouse. Сборочные скрипты автоматически определяют поддержку инструкций SSE 4.2 и при её отсутствии выполняют сборку так, чтобы пакеты работали без них.
Впишем в файл /etc/apt/sources.list дополнительные репозитории с исходными текстами:
deb-src http://mirror.yandex.ru/debian/ buster main contrib non-free deb-src http://mirror.yandex.ru/debian/ buster-updates main contrib non-free deb-src http://mirror.yandex.ru/debian/ buster-proposed-updates main contrib non-free deb-src http://mirror.yandex.ru/debian-security/ buster/updates main contrib non-free
Обновим список пакетов, доступных через репозитории:
# apt-get update
Установим пакеты, которые потребуются нам для сборки ClickHouse из исходных текстов:
# apt-get build-dep clickhouse
И скачаем пакет с исходными текстами:
$ apt-get source clickhouse
Переходим в каталог с распакованными исходными текстами, запускаем dch и описываем изменения.
$ cd clickhouse-18.16.1+ds $ dch -i
В открывшемся редакторе дописываем к номеру версии fix1 и описываем изменения:
clickhouse (18.16.1+ds-4fix1) UNRELEASED; urgency=medium * Version with no need CPU with support SSE4.2 instruction set.. -- Vladimir Stupin <vladimir@stupin.su> Tue, 14 Jan 2020 11:28:11 +0500
Собираем пакет:
$ debuild -us -uc
Для сборки потребуется довольно много оперативной памяти. Я пытался собрать пакет на виртуальной машине с 2 гигабайтами оперативной памяти, потом увеличил до 3 и до 4, но этого объёма оказывалось по-прежнему недостаточно для того, чтобы собрать библиотеку libclickhouse.so из объектных файлов. Вернул виртуальной машине 2 гигабайта оперативной памяти и подключил раздел подкачки размером 8 гигабайт. Сборка шла долго, но всё-таки завершилась успешно.
Если сборка завершается неудачно, а в тексте ошибки имеются такие строки:
CMake Error: Error: generator : Unix Makefiles Does not match the generator used previously: Ninja Either remove the CMakeCache.txt file and CMakeFiles directory or choose a different binary directory.
То можно попробовать удалить пакет ninja-build:
# apt-get purge ninja-build
Затем можно попробовать запустить сборку пакета снова.
После успешной сборки можно будет выйти из сборочного каталога и установить появившиеся рядом с ним двоичные пакеты:
# dpkg -i clickhouse-server_18.16.1+ds-4fix1_amd64.deb clickhouse-client_18.16.1+ds-4fix1_amd64.deb clickhouse-common_18.16.1+ds-4fix1_amd64.deb
Или можно воспользоваться утилитой aptly, чтобы создать собственный репозиторий и поместить в него эти пакеты. В таком случае для установки пакетов в систему будет достаточно: