install clickhouse centos6.8 [ru]

1,805 views
Skip to first unread message

Александр Ат

unread,
Jun 22, 2016, 7:38:33 AM6/22/16
to ClickHouse
Введите код...

Добрый день

Почти все получилось установить кноме самого clickhouse 
компиляция падает на 

Linking CXX executable ../bin/cpspc
/usr/bin/ld: cannot find -lanl
collect2: error: ld returned 1 exit status
make[2]: *** [contrib/libpoco/bin/cpspc] Error 1
make[1]: *** [contrib/libpoco/PageCompiler/CMakeFiles/PageCompiler.dir/all] Error 2
make: *** [all] Error 2

Порядок установки (я частично что то пропустил так как пакетов попросту не нашел )


sudo yum install git cmake
sudo yum install gcc gcc-c++
sudo yum install svn texinfo-tex flex zip libgcc.i686 glibc-devel.i686
export THREADS=$(grep -c ^processor /proc/cpuinfo)

# эта штука собиралась часа 3...
# Download gcc from https://gcc.gnu.org/mirrors.html
wget ftp://ftp.fu-berlin.de/unix/languages/gcc/releases/gcc-5.3.0/gcc-5.3.0.tar.bz2
tar xf gcc-5.3.0.tar.bz2
cd gcc-5.3.0
./contrib/download_prerequisites
cd ..
mkdir gcc-build
cd gcc-build
../gcc-5.3.0/configure --enable-languages=c,c++
make -j $THREADS
sudo make install
hash gcc g++
gcc --version
sudo ln -s /usr/local/bin/gcc /usr/local/bin/gcc-5
sudo ln -s /usr/local/bin/g++ /usr/local/bin/g++-5
sudo ln -s /usr/local/bin/cc /usr/local/bin/gcc-5
sudo ln -s /usr/local/bin/c++ /usr/local/bin/g++-5
# /usr/local/bin/ should be in $PATH


yum install libicu-devel glib2
# остальные пакеты попросту не находятся.
# boots я реши взять из пакета
sudo wget http://repo.enetres.net/enetres.repo -O /etc/yum.repos.d/enetres.repo
sudo yum install boost-devel

git clone https://github.com/yandex/ClickHouse.git
cd ClickHouse
mkdir build
cd build
cmake ..
make -j $THREADS
cd ..

Может я зря, мучаюсь и clickhouse пока не готов для centos?
Будут ли готовые пакеты clickhouse для centos?

Александр Ат

unread,
Jun 22, 2016, 9:17:30 AM6/22/16
to ClickHouse
после до установки пакетов 
yum install mysql mysql-devel mysql-lib
пошло дальше 

Александр Ат

unread,
Jun 22, 2016, 9:20:32 AM6/22/16
to ClickHouse
но уже упало на 

Linking CXX static library ../../lib/libPoco_DataMySQL.a
[ 46%] Built target Poco_DataMySQL
[ 48%] Built target PocoZip

Mike Eremin

unread,
Jun 22, 2016, 2:30:29 PM6/22/16
to ClickHouse
Не видит сборщик libanl.so, поищите ее по системе, может быть место, где она лежит не в PATH.
Насколько я понимаю, libanl идет в пакете glibc. Должна быть где-то. Если glibc не стоит - поставить?
Центос любит разбрасывать либы в /lib64 (о чем мало знают сборщики) 

Если получится завестись на центосе, расскажите потом пожалуйста. Аналогичное желание есть, но руки не дошли :(

Stepan Semiokhin

unread,
Jun 24, 2016, 9:33:37 AM6/24/16
to ClickHouse
Дошел точно до такого же момента только на CentOS 7.
ld -lanl --verbose библиотеку находит, поэтому ошибка выглядит, как минимум, странно.

Если получится-таки установить, напишите, пожалуйста.

Mike Eremin

unread,
Jun 24, 2016, 9:51:16 AM6/24/16
to ClickHouse
А подскажите плиз, zookeeper под центос 7 вы от куда взяли? Дошел до него и что-то собирать из сорцов не хочется.

Stepan Semiokhin

unread,
Jun 24, 2016, 10:03:34 AM6/24/16
to ClickHouse
Это вопрос интересный, я обыскал весь интернет (действительно из сурсов очень не хочется собирать), на одном форуме на далекой странице гугла чел говорил, что библиотека от 6-ки может подойти, поэтому я решил попробовать  взять hadoop-zookeeper-devel для 6-й (ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/jblunck:/messaging/CentOS_CentOS-6/x86_64/hadoop-zookeeper-devel-3.3.2+7-11.1.x86_64.rpm), как говорится "а что, а вдруг". Ну а если нет, соберем с сурсов, что поделать.

Но этого я не узнал из-за описанной выше ошибки)

Mike Eremin

unread,
Jun 24, 2016, 10:10:51 AM6/24/16
to ClickHouse
Подошел значит пакет, я таки из сорцов сделал.
И тоже как и все уперся в -lanl 

Ищем решение.

Mike Eremin

unread,
Jun 24, 2016, 4:24:33 PM6/24/16
to ClickHouse
Для интересующихся.
Проблема в том, что если все по инструкции, скорее всего, собрали gcc из сорцов.
Далее нужно также собрать и glibc - уже свежим компилятором. И еще и icu.

После сборки glibc и указания пути к libanl собранной свежим gcc - все едет дальше.

На данный момент я уперся в сборке libicu "наштатным" компилятором. Она как-то совершенно игнорит все CC и CXX, точнее не игнорит, а пытается линковаться с системными либами. Что у нее не удается.

Для тех, кто захочет попробовать этот странный путь - 
когда собираете кликхаус, скажите так: 
make -j х VERBOSE=1 
тогда будет 100% на какой этапе что падает и можно вручную этот этап пройти. 

Далее указываем в конце комманды -L/path/to/gcc/lib -L/path/to/glib/lib

Сайчас я еще уперся в один момент. Если на центос поставить пакетно gcc 5 и прочие штуки,
выходит вот что:

/tmp/ClickHouse/contrib/libpoco/Data/SQLite/src/sqlite3.c: In function ‘whereLoopAddOr’:
/tmp/ClickHouse/contrib/libpoco/Data/SQLite/src/sqlite3.c:120287:26: error: array subscript is above array bounds [-Werror=array-bounds]
       if( p->rRun>pSet->a[i].rRun ) p = pSet->a + i;
                          ^
/tmp/ClickHouse/contrib/libpoco/Data/SQLite/src/sqlite3.c: In function ‘balance_nonroot’:
/tmp/ClickHouse/contrib/libpoco/Data/SQLite/src/sqlite3.c:60399:36: error: array subscript is above array bounds [-Werror=array-bounds]
     int iCell = (iOld + pPg->aiOvfl[i]) - iNew;
                                    ^
/tmp/ClickHouse/contrib/libpoco/Data/SQLite/src/sqlite3.c: At top level:
cc1: error: unrecognized command line option ‘-Wno-for-loop-analysis’ [-Werror]
cc1: error: unrecognized command line option ‘-Wno-unused-local-typedef’ [-Werror]
cc1: error: unrecognized command line option ‘-Wno-unused-private-field’ [-Werror]
cc1: all warnings being treated as errors
make[2]: *** [contrib/libpoco/Data/SQLite/CMakeFiles/PocoDataSQLite.dir/src/sqlite3.c.o] Error 1
make[1]: *** [contrib/libpoco/Data/SQLite/CMakeFiles/PocoDataSQLite.dir/all] Error 2
make: *** [all] Error 2


[root@centos7-test build]# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/5.1.1/lto-wrapper
Target: x86_64-redhat-linux
Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,objc,obj-c++,fortran,ada,go,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --disable-libgcj --with-isl --enable-libmpx --enable-gnu-indirect-function --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
Thread model: posix
gcc version 5.1.1 20150618 (Red Hat 5.1.1-4) (GCC)


Честно говоря, продолжать дальше пока нет желания. Хочу попробовать собраться на Федоре 24.


man...@gmail.com

unread,
Jun 26, 2016, 1:33:18 AM6/26/16
to ClickHouse
SQLite можете вообще выключить - он не нужен*.

Выключить можно, запустив ccmake (так же, как запускаете cmake) и заменив значение ENABLE_DATA_SQLITE на OFF, либо отредактировав CMakeCache.txt

* - он собирается как часть библиотеки Poco и не используется. В дальнейшем он может пригодиться, если понадобится сделать внешние словари с источником SQLite.
https://clickhouse.yandex/reference_ru.html#%D0%92%D0%BD%D0%B5%D1%88%D0%BD%D0%B8%D0%B5%20%D1%81%D0%BB%D0%BE%D0%B2%D0%B0%D1%80%D0%B8

Stepan Semiokhin

unread,
Jun 26, 2016, 4:31:27 AM6/26/16
to ClickHouse
Спасибо большое! Помучаю еще пару дней, глядишь, без SQLite заведется

man...@gmail.com

unread,
Jun 27, 2016, 6:06:51 AM6/27/16
to ClickHouse
У меня получилось запустить под CentOS 6.

Способ такой:
1. Где угодно, ставите для сборки Ubuntu 14.04.
2. Делаете всё по инструкции, но при запуске release скрипта, устанавливаете переменную:

GLIBC_COMPATIBILITY=1 ./release --standalone

3. Соберутся .deb пакеты. Копируйте их на свой сервер с CentOS.
4. Устанавливаете их вручную, так:

ar x clickhouse-server-base_1.1.53983_amd64.deb
sudo tar -x -C / -f data.tar.xz

tar xf control.tar.gz
sed -r -i 's/update-rc.d.+/true;/' ./postinst
sudo ./postinst

ar x clickhouse-server-common_1.1.53983_amd64.deb
sudo tar -x -C / -f data.tar.xz

ar x clickhouse-client_1.1.53983_amd64.deb
sudo tar -x -C / -f data.tar.xz

sudo service clickhouse-server start


Это экспериментальный способ. То есть, используйте только для экспериментов :)
Message has been deleted

Александр Ат

unread,
Jun 28, 2016, 12:15:57 PM6/28/16
to ClickHouse
компиляция упала на zookeeper
Building CXX object libs/libzkutil/CMakeFiles/zkutil.dir/src/ZooKeeper.cpp.o
In file included from /root/ClickHouse/libs/libzkutil/include/zkutil/ZooKeeper.h:3:0,
                 from /root/ClickHouse/libs/libzkutil/src/ZooKeeper.cpp:2:
/root/ClickHouse/libs/libzkutil/include/zkutil/Types.h:8:33: fatal error: zookeeper/zookeeper.h: Нет такого файла или каталога

попробую на свежей убунте повторить 

Mike Eremin

unread,
Jun 28, 2016, 1:31:06 PM6/28/16
to ClickHouse
Полностью получилось запуститься по этому рецепту на centos 6, 
Глюков пока не наблюдается.
спасибо!

Александр Ат

unread,
Jun 29, 2016, 10:39:33 AM6/29/16
to ClickHouse
Если zookeper.h не будет находить необходимо установить  libzookeeper-mt-dev раньше в доке по сборке был указан как необходимый пакет.

Александр Ат

unread,
Jul 19, 2016, 11:37:25 AM7/19/16
to ClickHouse
В общем криворукое решение номер 2 для centos 6.8
У меня сборка не собиралась на убунте и пакет падал на компрессии, я так понимаю и за гит ветки мастер я не перешел на стабильную ветку....

Я скачал готовые релизы от суда 
http://repo.yandex.ru/clickhouse/trusty/pool/main/c/clickhouse/

Дальше делаем по инструкции man...@gmail.com спасибо большое.

ar x clickhouse-server-base_1.1.53983_amd64.deb
sudo tar -x -C / -f data.tar.xz

tar xf control.tar.gz
sed -r -i 's/update-rc.d.+/true;/' ./postinst
sudo ./postinst

ar x clickhouse-server-common_1.1.53983_amd64.deb
sudo tar -x -C / -f data.tar.xz

ar x clickhouse-client_1.1.53983_amd64.deb
sudo tar -x -C / -f data.tar.xz
Дальше нас ждет сюрприз нужен обновленный glibc  
Проверяем 
getconf -a | grep -i GNU_LIBC_VERSION
GNU_LIBC_VERSION                   glibc
2.12
Обновляем из исходников так как для центоса нету пакетов и не будет (никогда RIP)
cd /tmp
tar -xvzf glibc-2.16.0.tar.gz
cd glibc-2.16.0
mkdir glibc-build
cd glibc-build
../configure --prefix='/usr'
далее нужно подправить конфиг 
nano +171 ../scripts/test-installation.pl
заменяем 
if (/$ld_so_name/) {
на 
if (/\Q$ld_so_name\E/) {
ну и начинаем установку glibc 
make 
sudo make install 
Тестируем 
getconf -| grep -i GNU_LIBC_VERSION
GNU_LIBC_VERSION                   glibc 
2.16
Запускаем ClickHouse
sudo service clickhouse-server start
Start clickhouse-server service: DONE

Anton Levkovich

unread,
Jul 19, 2016, 5:55:05 PM7/19/16
to ClickHouse
Мой опыт по данной теме: при сборке на centos 7 компиляция на 86% выпала в ошибку, как я понял из-за отсутствия в пакетах glib (и некоторых других библиотек) от RedHat (Centos, RHEL,Fedora) файлов скомпилированных статических библиотек (*.a) в deb пакетах в ubuntu они присутствуют. Поэтому подозреваю, чтобы собрать в centos нужно самому собировать и отдельные библиотеки либо устанавливать ключи для линкования динамических библиотек (*.so). Я не программист, поэтому прошу простить за неправильность отдельных формулировок. 

среда, 22 июня 2016 г., 14:38:33 UTC+3 пользователь Александр Ат написал:

Mike Eremin

unread,
Jul 20, 2016, 5:41:11 AM7/20/16
to ClickHouse
Если не получается собрать deb пакеты,
http://5.9.237.104/ch/ - вот собранные с "GLIBC_COMPATIBILITY=1 ./release --standalone"

А далее уже по мануалу от 27 июня. У меня на сентос 6 давно уже работает в режиме кластера, глюков не замечено вообще никаких. На 7м центосе стартап скрипты, насколько я помню, править пришлось.


среда, 20 июля 2016 г., 0:55:05 UTC+3 пользователь Anton Levkovich написал:

Александр Ат

unread,
Jul 20, 2016, 5:53:09 AM7/20/16
to ClickHouse
Только что сам поставил на реальный сервер
cat /etc/*release*
CentOS release 6.8 (Final)
CentOS release 6.8 (Final)
CentOS release 6.8 (Final)
cpe:/o:centos:linux:6:GA

Александр Ат

unread,
Jul 20, 2016, 5:58:11 AM7/20/16
to ClickHouse
Можно вопрос?
Как обновлять версию по кликхаус в реалтайм, также как и при mysql через репликацию ?
Можно ли репликацию настроить потом в будущем?

Mike Eremin

unread,
Jul 20, 2016, 6:02:56 AM7/20/16
to ClickHouse
Версию сервера? Я просто собирал обновленные deb-ки и повторял процедуру, предварительно сохранив конфиги, так как они перетираются.
Данные при этом остались и нормально работали.
Репликацию заводил потом, реплики сами наполнились. Важный момент, что версия кликхауса везде должна быть одинаковая, иначе репликация не заработает.

Зукипер не настраивал и не трогал, у меня тестовый стенд 2+2. Просто описал шарды и реплики в конфиге.

среда, 20 июля 2016 г., 12:58:11 UTC+3 пользователь Александр Ат написал:

andrew...@gmail.com

unread,
Jul 21, 2016, 4:02:51 AM7/21/16
to ClickHouse
По-умолчанию, Clickhouse хочет линковаться только статически, его можно заставить 
собираться динамически, даже, скажу больше, это нужно сделать. Сейчас собираю
пакет по Fedora 24, застреваю на том, что libdbms, не может слинковаться с нужными
функциями. Плюс, для поиска библиотек, надо бы добавить в CMakeLists.txt 
link_directories:

link_directories (/usr/lib64/)
link_directories (/usr/lib64/mysql/)

Вообще, следует разделить пакет на части и собрать с зависимостями, 
на перекомпиляцию libpoco уходит огромная часть времени.

среда, 20 июля 2016 г., 0:55:05 UTC+3 пользователь Anton Levkovich написал:
Мой опыт по данной теме: при сборке на centos 7 компиляция на 86% выпала в ошибку, как я понял из-за отсутствия в пакетах glib (и некоторых других библиотек) от RedHat (Centos, RHEL,Fedora) файлов скомпилированных статических библиотек (*.a) в deb пакетах в ubuntu они присутствуют. Поэтому подозреваю, чтобы собрать в centos нужно самому собировать и отдельные библиотеки либо устанавливать ключи для линкования динамических библиотек (*.so). Я не программист, поэтому прошу простить за неправильность отдельных формулировок. 

Mike Eremin

unread,
Jul 21, 2016, 4:07:33 AM7/21/16
to ClickHouse
Андрей, если у вас получится собрать, отпишите, я сделаю под rhel(centos)6/7 спек, чтобы собирать rpm-build -ом.
Через НАСА репозиторий с gcc 4.8 почти собрал, но пока есть ошибки.

Проще всего рецепт через *.deb :) 

Миша

четверг, 21 июля 2016 г., 11:02:51 UTC+3 пользователь andrew...@gmail.com написал:

andrew...@gmail.com

unread,
Jul 21, 2016, 4:17:37 AM7/21/16
to ClickHouse


четверг, 21 июля 2016 г., 11:07:33 UTC+3 пользователь Mike Eremin написал:
Андрей, если у вас получится собрать, отпишите, я сделаю под rhel(centos)6/7 спек,

я через mock собираю, наброски спека уже есть, естественно, до упаковки файлов 
дело еще не дошло. Надо еще поправить CMakeLists.txt в проектах (для разделения 
зависимостей), надо еще написать systemd service файл, для запуска/остановки базы.

 
чтобы собирать rpm-build -ом.
Через НАСА репозиторий с gcc 4.8 почти собрал, но пока есть ошибки.

Не надо собирать gcc 4.8, все равно для сборки нужен gcc 5 или выше (проверка в СMakeLists.txt, в директории ClickHouse)
либо, LLVM 3.8 (для CentOS 7 он собран в copr - https://copr.fedorainfracloud.org/coprs/alonid/llvm-3.8.0/repo/epel-7/alonid-llvm-3.8.0-epel-7.repo)
 
Проще всего рецепт через *.deb :) 

Пакет должен быть родным, никаких сборок на серверах, никаких ручных 
копирований файлов. точка. Если так нужно - проще установить ClickHouse 
через Docker
 

Миша


Может я зря, мучаюсь и clickhouse пока не готов для centos?
Как проект Кликхаус собран настолько коряво, что просто хочется все бросить нахрен.
 
Будут ли готовые пакеты clickhouse для centos?

Будут, если сделаем самостоятельно. 

Mike Eremin

unread,
Jul 21, 2016, 4:27:06 AM7/21/16
to ClickHouse
Я тоже удивлен, что нет простого Makefile

ничего сверхестественного, в целом, в коде нет.

зачем было в c11 упираться, тоже не понятно.


Миша

среда, 22 июня 2016 г., 14:38:33 UTC+3 пользователь Александр Ат написал:
Введите код...

andrew...@gmail.com

unread,
Jul 21, 2016, 4:39:38 AM7/21/16
to ClickHouse


четверг, 21 июля 2016 г., 11:27:06 UTC+3 пользователь Mike Eremin написал:
Я тоже удивлен, что нет простого Makefile

Да он есть, просто создается через cmake :) 
Кстати, чуть не забыл, для того что бы заиметь 
gcc5.X версию в CentOS7 надо установить Software Collections, 
и, предположительно, собрать пакет под CentOS7 с поправкой на SCL.
 
ничего сверхестественного, в целом, в коде нет.
зачем было в c11 упираться, тоже не понятно.
 
Тут не скажу, ибо, к сожалению не специалист в стандартах C.

andrew...@gmail.com

unread,
Jul 21, 2016, 6:42:24 AM7/21/16
to ClickHouse
Останавливаюсь на этом месте:

[ 97%] Linking CXX executable compressor
cd /builddir/build/BUILD/ClickHouse/utils/compressor && /usr/bin/cmake -E cmake_link_script CMakeFiles/compressor.dir/link.txt --verbose=1
/usr/bin/c++   -std=gnu++1y -Wall -Werror -Wnon-virtual-dtor -msse4 -mpopcnt  -O3 -g    CMakeFiles/compressor.dir/main.cpp.o  -o compressor  -L/usr/lib64/mysql -rdynamic ../../dbms/libdbms.so -lboost_program_options ../../libs/libzkutil/libzkutil.so ../../contrib/libzookeeper/libzookeeper.so ../../libs/libmysqlxx/libmysqlxx.so ../../libs/libcommon/libcommon.so ../../libs/libpocoext/libpocoext.so ../../contrib/libpoco/lib/libPocoUtil.so.31 ../../contrib/libpoco/lib/libPocoJSON.so.31 ../../contrib/libpoco/lib/libPocoNet.so.31 -lanl ../../contrib/libpoco/lib/libPocoXML.so.31 -lexpat -ltcmalloc_minimal -lglib-2.0 -licui18n -licuuc -licudata -lrt -lmysqlclient -lssl -lz ../../contrib/libcityhash/libcityhash.so ../../contrib/libfarmhash/libfarmhash.so ../../contrib/libmetrohash/libmetrohash.so ../../contrib/liblz4/liblz4.so ../../contrib/libzstd/libzstd.so ../../contrib/libdouble-conversion/libdouble-conversion.so ../../contrib/libcpuid/libcpuid.so -lre2 -lcrypto -lboost_thread -lboost_system -lboost_regex ../../contrib/libpoco/lib/libPocoDataODBC.so.31 ../../contrib/libpoco/lib/libPocoData.so.31 ../../contrib/libpoco/lib/libPocoFoundation.so.1.6.1 -lpthread -lrt -lpcre -lz -lodbc -ldl -lltdl -Wl,-rpath,/usr/lib64/mysql:/builddir/build/BUILD/ClickHouse/dbms:/builddir/build/BUILD/ClickHouse/libs/libzkutil:/builddir/build/BUILD/ClickHouse/contrib/libzookeeper:/builddir/build/BUILD/ClickHouse/libs/libmysqlxx:/builddir/build/BUILD/ClickHouse/libs/libcommon:/builddir/build/BUILD/ClickHouse/libs/libpocoext:/builddir/build/BUILD/ClickHouse/contrib/libpoco/lib:/builddir/build/BUILD/ClickHouse/contrib/libcityhash:/builddir/build/BUILD/ClickHouse/contrib/libfarmhash:/builddir/build/BUILD/ClickHouse/contrib/libmetrohash:/builddir/build/BUILD/ClickHouse/contrib/liblz4:/builddir/build/BUILD/ClickHouse/contrib/libzstd:/builddir/build/BUILD/ClickHouse/contrib/libdouble-conversion:/builddir/build/BUILD/ClickHouse/contrib/libcpuid: 
[ 97%] Linking CXX executable iotest
cd /builddir/build/BUILD/ClickHouse/utils/iotest && /usr/bin/cmake -E cmake_link_script CMakeFiles/iotest.dir/link.txt --verbose=1
/usr/bin/c++   -std=gnu++1y -Wall -Werror -Wnon-virtual-dtor -msse4 -mpopcnt  -O3 -g    CMakeFiles/iotest.dir/iotest.cpp.o  -o iotest  -L/usr/lib64/mysql -rdynamic ../../dbms/libdbms.so ../../libs/libzkutil/libzkutil.so ../../contrib/libzookeeper/libzookeeper.so ../../libs/libmysqlxx/libmysqlxx.so ../../libs/libcommon/libcommon.so ../../libs/libpocoext/libpocoext.so ../../contrib/libpoco/lib/libPocoUtil.so.31 ../../contrib/libpoco/lib/libPocoJSON.so.31 ../../contrib/libpoco/lib/libPocoNet.so.31 -lanl ../../contrib/libpoco/lib/libPocoXML.so.31 -lexpat -ltcmalloc_minimal -lglib-2.0 -licui18n -licuuc -licudata -lrt -lmysqlclient -lssl -lz ../../contrib/libcityhash/libcityhash.so ../../contrib/libfarmhash/libfarmhash.so ../../contrib/libmetrohash/libmetrohash.so ../../contrib/liblz4/liblz4.so ../../contrib/libzstd/libzstd.so ../../contrib/libdouble-conversion/libdouble-conversion.so ../../contrib/libcpuid/libcpuid.so -lre2 -lcrypto -lboost_thread -lboost_system -lboost_regex ../../contrib/libpoco/lib/libPocoDataODBC.so.31 ../../contrib/libpoco/lib/libPocoData.so.31 ../../contrib/libpoco/lib/libPocoFoundation.so.1.6.1 -lpthread -lrt -lpcre -lz -lodbc -ldl -lltdl -Wl,-rpath,/usr/lib64/mysql:/builddir/build/BUILD/ClickHouse/dbms:/builddir/build/BUILD/ClickHouse/libs/libzkutil:/builddir/build/BUILD/ClickHouse/contrib/libzookeeper:/builddir/build/BUILD/ClickHouse/libs/libmysqlxx:/builddir/build/BUILD/ClickHouse/libs/libcommon:/builddir/build/BUILD/ClickHouse/libs/libpocoext:/builddir/build/BUILD/ClickHouse/contrib/libpoco/lib:/builddir/build/BUILD/ClickHouse/contrib/libcityhash:/builddir/build/BUILD/ClickHouse/contrib/libfarmhash:/builddir/build/BUILD/ClickHouse/contrib/libmetrohash:/builddir/build/BUILD/ClickHouse/contrib/liblz4:/builddir/build/BUILD/ClickHouse/contrib/libzstd:/builddir/build/BUILD/ClickHouse/contrib/libdouble-conversion:/builddir/build/BUILD/ClickHouse/contrib/libcpuid 
../../dbms/libdbms.so: undefined reference to `my_thread_init'
../../dbms/libdbms.so: undefined reference to `my_thread_end'
collect2: error: ld returned 1 exit status
utils/compressor/CMakeFiles/compressor.dir/build.make:121: recipe for target 'utils/compressor/compressor' failed
make[2]: *** [utils/compressor/compressor] Error 1
make[2]: Leaving directory '/builddir/build/BUILD/ClickHouse'
CMakeFiles/Makefile2:1929: recipe for target 'utils/compressor/CMakeFiles/compressor.dir/all' failed
make[1]: *** [utils/compressor/CMakeFiles/compressor.dir/all] Error 2
../../dbms/libdbms.so: undefined reference to `my_thread_init'
../../dbms/libdbms.so: undefined reference to `my_thread_end'
collect2: error: ld returned 1 exit status
utils/iotest/CMakeFiles/iotest.dir/build.make:121: recipe for target 'utils/iotest/iotest' failed
make[2]: *** [utils/iotest/iotest] Error 1
make[2]: Leaving directory '/builddir/build/BUILD/ClickHouse'
CMakeFiles/Makefile2:2044: recipe for target 'utils/iotest/CMakeFiles/iotest.dir/all' failed
make[1]: *** [utils/iotest/CMakeFiles/iotest.dir/all] Error 2
[ 97%] Linking CXX shared library libdaemon.so
cd /builddir/build/BUILD/ClickHouse/libs/libdaemon && /usr/bin/cmake -E cmake_link_script CMakeFiles/daemon.dir/link.txt --verbose=1
/usr/bin/c++  -fPIC -std=gnu++1y -Wall -Werror -Wnon-virtual-dtor -msse4 -mpopcnt  -O3 -g  -Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -shared -Wl,-soname,libdaemon.so -o libdaemon.so CMakeFiles/daemon.dir/src/BaseDaemon.cpp.o CMakeFiles/daemon.dir/src/GraphiteWriter.cpp.o  -L/usr/lib64/mysql ../../dbms/libdbms.so ../libzkutil/libzkutil.so ../../contrib/libzookeeper/libzookeeper.so ../libmysqlxx/libmysqlxx.so ../libcommon/libcommon.so ../libpocoext/libpocoext.so ../../contrib/libpoco/lib/libPocoUtil.so.31 ../../contrib/libpoco/lib/libPocoJSON.so.31 ../../contrib/libpoco/lib/libPocoNet.so.31 -lanl ../../contrib/libpoco/lib/libPocoXML.so.31 -lexpat -ltcmalloc_minimal -lglib-2.0 -licui18n -licuuc -licudata -lrt -lmysqlclient -lssl -lz ../../contrib/libcityhash/libcityhash.so ../../contrib/libfarmhash/libfarmhash.so ../../contrib/libmetrohash/libmetrohash.so ../../contrib/liblz4/liblz4.so ../../contrib/libzstd/libzstd.so ../../contrib/libdouble-conversion/libdouble-conversion.so ../../contrib/libcpuid/libcpuid.so -lre2 -lcrypto -lboost_thread -lboost_system -lboost_regex ../../contrib/libpoco/lib/libPocoDataODBC.so.31 ../../contrib/libpoco/lib/libPocoData.so.31 ../../contrib/libpoco/lib/libPocoFoundation.so.1.6.1 -lpthread -lrt -lpcre -lz -lodbc -ldl -lltdl -Wl,-rpath,/usr/lib64/mysql:/builddir/build/BUILD/ClickHouse/dbms:/builddir/build/BUILD/ClickHouse/libs/libzkutil:/builddir/build/BUILD/ClickHouse/contrib/libzookeeper:/builddir/build/BUILD/ClickHouse/libs/libmysqlxx:/builddir/build/BUILD/ClickHouse/libs/libcommon:/builddir/build/BUILD/ClickHouse/libs/libpocoext:/builddir/build/BUILD/ClickHouse/contrib/libpoco/lib:/builddir/build/BUILD/ClickHouse/contrib/libcityhash:/builddir/build/BUILD/ClickHouse/contrib/libfarmhash:/builddir/build/BUILD/ClickHouse/contrib/libmetrohash:/builddir/build/BUILD/ClickHouse/contrib/liblz4:/builddir/build/BUILD/ClickHouse/contrib/libzstd:/builddir/build/BUILD/ClickHouse/contrib/libdouble-conversion:/builddir/build/BUILD/ClickHouse/contrib/libcpuid 
make[2]: Leaving directory '/builddir/build/BUILD/ClickHouse'
[ 97%] Built target daemon
make[1]: Leaving directory '/builddir/build/BUILD/ClickHouse'
Makefile:152: recipe for target 'all' failed
make: *** [all] Error 2
error: Bad exit status from /var/tmp/rpm-tmp.aBbYhi (%build)


Причем эти вызовы находяться в header файлах, пути к которым
прописаны:
<mock-chroot> sh-4.3# grep -HiR "my_thread_init" /builddir/build/BUILD/ClickHouse/*
Binary file /builddir/build/BUILD/ClickHouse/dbms/CMakeFiles/dbms.dir/src/Dictionaries/MySQLDictionarySource.cpp.o matches
Binary file /builddir/build/BUILD/ClickHouse/dbms/libdbms.so matches
/builddir/build/BUILD/ClickHouse/libs/libmysqlxx/include/mysqlxx/Connection.h:  *  вызвать функцию MySQL C API my_thread_init(), а после использования - my_thread_end().
/builddir/build/BUILD/ClickHouse/libs/libmysqlxx/include/mysqlxx/Pool.h: my_thread_init();
/builddir/build/BUILD/ClickHouse/libs/libmysqlxx/src/Query.cpp: my_thread_init();
/builddir/build/BUILD/ClickHouse/libs/libmysqlxx/src/Query.cpp: my_thread_init();
Binary file /builddir/build/BUILD/ClickHouse/libs/libmysqlxx/CMakeFiles/mysqlxx.dir/src/Query.cpp.o matches
Binary file /builddir/build/BUILD/ClickHouse/libs/libmysqlxx/CMakeFiles/mysqlxx.dir/src/PoolWithFailover.cpp.o matches
Binary file /builddir/build/BUILD/ClickHouse/libs/libmysqlxx/libmysqlxx.so matches
<mock-chroot> sh-4.3# grep -HiR "my_thread_init" /usr/include/mysql/*
/usr/include/mysql/my_pthread.h:extern my_bool my_thread_init(void);
/usr/include/mysql/mysql_com.h:my_bool my_thread_init(void);
/usr/include/mysql/private/wsrep_utils.h:    thd_init()  { my_thread_init(); }
<mock-chroot> sh-4.3# grep -HiR "mysql_thread_init" /usr/include/mysql/*
/usr/include/mysql/mysql.h:my_bool STDCALL mysql_thread_init(void);
<mock-chroot> sh-4.3# grep -HiR "mysql_thread_end" /usr/include/mysql/*
/usr/include/mysql/mysql.h:void STDCALL mysql_thread_end(void);

Пока не знаю что делать

man...@gmail.com

unread,
Jul 21, 2016, 8:34:43 AM7/21/16
to ClickHouse
undefined reference to `my_thread_init'
 
Наверное, вы пытаетесь использовать однопоточную версию библиотеки mysqlclient: libmysqlclient вместо libmysqlclient_r.

andrew...@gmail.com

unread,
Jul 21, 2016, 8:56:33 AM7/21/16
to ClickHouse


четверг, 21 июля 2016 г., 15:34:43 UTC+3 пользователь man...@gmail.com написал:
undefined reference to `my_thread_init'
 
Наверное, вы пытаетесь использовать однопоточную версию библиотеки mysqlclient: libmysqlclient вместо libmysqlclient_r.
Добрый день!
Я использую то, с чем происходит линковка:
 -lexpat -ltcmalloc_minimal -lglib-2.0 -licui18n -licuuc -licudata -lrt -lmysqlclient -lssl -lz ../../contrib/libcityhash/libcityhash.so 
Слету не нашел где переопределить линковку. Или мне следует поправить libs/libmysqlxx/CMakeLists.txt :

add_library (mysqlxx
src/Connection.cpp
src/Query.cpp
src/ResultBase.cpp
src/StoreQueryResult.cpp
src/UseQueryResult.cpp
src/Value.cpp
src/PoolWithFailover.cpp

include/mysqlxx/Connection.h
include/mysqlxx/Exception.h
include/mysqlxx/Manip.h
include/mysqlxx/mysqlxx.h
include/mysqlxx/Null.h
include/mysqlxx/Pool.h
include/mysqlxx/PoolWithFailover.h
include/mysqlxx/Query.h
include/mysqlxx/ResultBase.h
include/mysqlxx/Row.h
include/mysqlxx/StoreQueryResult.h
include/mysqlxx/Transaction.h
include/mysqlxx/Types.h
include/mysqlxx/UseQueryResult.h
include/mysqlxx/Value.h
)

add_dependencies (mysqlxx common)

target_link_libraries (mysqlxx common libmysqlclient.so libssl.so libcrypto.so libz.so dl)


ADD_CUSTOM_COMMAND(
    TARGET mysqlxx
    POST_BUILD
    COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/patch.sh
    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
    COMMENT "Patching mysqlclient library.")

IF(TESTS)
add_subdirectory (src/tests)
ENDIF(TESTS)


man...@gmail.com

unread,
Jul 21, 2016, 11:43:27 AM7/21/16
to ClickHouse
Попробуйте libmysqlclient_r.so

man...@gmail.com

unread,
Jul 21, 2016, 9:15:29 PM7/21/16
to ClickHouse
Как обновлять версию по кликхаус в реалтайм

Устанавливаете новый пакет (например, по той же инструкции с распаковкой) на все серверы.
При установке, сервер не перезапускается сам - продолжает работать старая версия.
Затем перезапускаете сервер, сначала на одной части реплик, потом на другой.
Таким образом, производится обновление без даунтайма.

В редких случаях, может измениться протокол репликации. Тогда, на время работы разных версий, репликация приостанавливается. Она возобновляется после обновления оставшейся части реплик. (Никаких проблем с данными при этом не возникает.)
 

среда, 20 июля 2016 г., 12:58:11 UTC+3 пользователь Александр Ат написал:

andrew...@gmail.com

unread,
Jul 22, 2016, 4:05:29 AM7/22/16
to ClickHouse


четверг, 21 июля 2016 г., 18:43:27 UTC+3 пользователь man...@gmail.com написал:
Попробуйте libmysqlclient_r.so

ТОже самое:

 [ 96%] Linking CXX executable compressor
cd /builddir/build/BUILD/ClickHouse/utils/compressor && /usr/bin/cmake -E cmake_link_script CMakeFiles/compressor.dir/link.txt --verbose=1
/usr/bin/c++   -std=gnu++1y -Wall -Werror -Wnon-virtual-dtor -msse4 -mpopcnt  -O3 -g    CMakeFiles/compressor.dir/main.cpp.o  -o compressor  -L/usr/lib64/mysql -rdynamic ../../dbms/libdbms.so -lboost_program_options ../../libs/libzkutil/libzkutil.so ../../contrib/libzookeeper/libzookeeper.so ../../libs/libmysqlxx/libmysqlxx.so ../../libs/libcommon/libcommon.so ../../libs/libpocoext/libpocoext.so ../../contrib/libpoco/lib/libPocoUtil.so.31 ../../contrib/libpoco/lib/libPocoJSON.so.31 ../../contrib/libpoco/lib/libPocoNet.so.31 -lanl ../../contrib/libpoco/lib/libPocoXML.so.31 -lexpat -ltcmalloc_minimal -lglib-2.0 -licui18n -licuuc -licudata -lrt -lmysqlclient_r -lssl -lz ../../contrib/libcityhash/libcityhash.so ../../contrib/libfarmhash/libfarmhash.so ../../contrib/libmetrohash/libmetrohash.so ../../contrib/liblz4/liblz4.so ../../contrib/libzstd/libzstd.so ../../contrib/libdouble-conversion/libdouble-conversion.so ../../contrib/libcpuid/libcpuid.so -lre2 -lcrypto -lboost_thread -lboost_system -lboost_regex ../../contrib/libpoco/lib/libPocoDataODBC.so.31 ../../contrib/libpoco/lib/libPocoData.so.31 ../../contrib/libpoco/lib/libPocoFoundation.so.1.6.1 -lpthread -lrt -lpcre -lz -lodbc -ldl -lltdl -Wl,-rpath,/usr/lib64/mysql:/builddir/build/BUILD/ClickHouse/dbms:/builddir/build/BUILD/ClickHouse/libs/libzkutil:/builddir/build/BUILD/ClickHouse/contrib/libzookeeper:/builddir/build/BUILD/ClickHouse/libs/libmysqlxx:/builddir/build/BUILD/ClickHouse/libs/libcommon:/builddir/build/BUILD/ClickHouse/libs/libpocoext:/builddir/build/BUILD/ClickHouse/contrib/libpoco/lib:/builddir/build/BUILD/ClickHouse/contrib/libcityhash:/builddir/build/BUILD/ClickHouse/contrib/libfarmhash:/builddir/build/BUILD/ClickHouse/contrib/libmetrohash:/builddir/build/BUILD/ClickHouse/contrib/liblz4:/builddir/build/BUILD/ClickHouse/contrib/libzstd:/builddir/build/BUILD/ClickHouse/contrib/libdouble-conversion:/builddir/build/BUILD/ClickHouse/contrib/libcpuid: 
../../dbms/libdbms.so: undefined reference to `my_thread_init'
../../dbms/libdbms.so: undefined reference to `my_thread_end'
collect2: error: ld returned 1 exit status
utils/compressor/CMakeFiles/compressor.dir/build.make:121: recipe for target 'utils/compressor/compressor' failed
make[2]: *** [utils/compressor/compressor] Error 1
make[2]: Leaving directory '/builddir/build/BUILD/ClickHouse'
CMakeFiles/Makefile2:1929: recipe for target 'utils/compressor/CMakeFiles/compressor.dir/all' failed
make[1]: *** [utils/compressor/CMakeFiles/compressor.dir/all] Error 2
make[1]: Leaving directory '/builddir/build/BUILD/ClickHouse'
Makefile:152: recipe for target 'all' failed
make: *** [all] Error 2
error: Bad exit status from /var/tmp/rpm-tmp.5r7V1U (%build)


RPM build errors:
    Bad exit status from /var/tmp/rpm-tmp.5r7V1U (%build)

andrew...@gmail.com

unread,
Jul 28, 2016, 4:09:52 AM7/28/16
to ClickHouse
Попытался отвязать clickhouse от poco, которая доступна и в Fedora и 
в CentOS 7, дабы ускорить сборку. Получаю следующую ошибку:

/builddir/build/BUILD/ClickHouse/dbms/src/IO/InterserverWriteBuffer.cpp: In constructor 'DB::InterserverWriteBuffer::InterserverWriteBuffer(const string&, int, const string&, const string&, bool, size_t, const Poco::Timespan&, const Poco::Timespan&, const Poco::Timespan&)':
/builddir/build/BUILD/ClickHouse/dbms/src/IO/InterserverWriteBuffer.cpp:53:70: error: no matching function for call to 'Poco::Net::HTTPClientSession::setTimeout(const Poco::Timespan&, const Poco::Timespan&, const Poco::Timespan&)'
  session.setTimeout(connection_timeout, send_timeout, receive_timeout);
                                                                      ^
In file included from /usr/include/Poco/Net/HTTPClientSession.h:24:0,
                 from /builddir/build/BUILD/ClickHouse/dbms/include/DB/IO/InterserverWriteBuffer.h:6,
                 from /builddir/build/BUILD/ClickHouse/dbms/src/IO/InterserverWriteBuffer.cpp:1:
/usr/include/Poco/Net/HTTPSession.h:56:7: note: candidate: void Poco::Net::HTTPSession::setTimeout(const Poco::Timespan&)
  void setTimeout(const Poco::Timespan& timeout);
       ^~~~~~~~~~
/usr/include/Poco/Net/HTTPSession.h:56:7: note:   candidate expects 1 argument, 3 provided
dbms/CMakeFiles/dbms.dir/build.make:929: recipe for target 'dbms/CMakeFiles/dbms.dir/src/IO/InterserverWriteBuffer.cpp.o' failed
make[2]: *** [dbms/CMakeFiles/dbms.dir/src/IO/InterserverWriteBuffer.cpp.o] Error 1
make[2]: Leaving directory '/builddir/build/BUILD/ClickHouse'
CMakeFiles/Makefile2:1635: recipe for target 'dbms/CMakeFiles/dbms.dir/all' failed
make[1]: *** [dbms/CMakeFiles/dbms.dir/all] Error 2
make[1]: Leaving directory '/builddir/build/BUILD/ClickHouse'
Makefile:130: recipe for target 'all' failed
make: *** [all] Error 2
error: Bad exit status from /var/tmp/rpm-tmp.1KBuK9 (%build)

Это происходит потому, что в файле /var/lib/mock/fedora-24-x86_64/root/builddir/build/BUILD/ClickHouse/dbms/src/IO/InterserverWriteBuffer.cpp
функция session.setTimeout()

/// устанавливаем таймаут
session.setTimeout(connection_timeout, send_timeout, receive_timeout);

Которая вызвается с тремя параметрами (connection_timeout, send_timeout, receive_timeout);
Но в Fedora 24:
<mock-chroot> sh-4.3# rpm -aqa | grep poco-devel
poco-devel-1.7.3-5.fc24.x86_64
<mock-chroot> sh-4.3#
Имеет версию 1.7.x, в которой:
[andy@ionstorm ~]$ grep -HiR "setTimeout(const" /var/lib/mock/fedora-24-x86_64/root/usr/include/Poco/*
/var/lib/mock/fedora-24-x86_64/root/usr/include/Poco/Net/FTPClientSession.h: void setTimeout(const Poco::Timespan& timeout);
/var/lib/mock/fedora-24-x86_64/root/usr/include/Poco/Net/POP3ClientSession.h: void setTimeout(const Poco::Timespan& timeout);
/var/lib/mock/fedora-24-x86_64/root/usr/include/Poco/Net/HTTPServerParams.h: void setTimeout(const Poco::Timespan& timeout);
/var/lib/mock/fedora-24-x86_64/root/usr/include/Poco/Net/HTTPSession.h: void setTimeout(const Poco::Timespan& timeout);

HTTPSession.h может вызываться только с одним параметром, а в версии libpoco (1.6.1-all (2015-08-04)), которая идет вместе с Clickhouse, 
с тремя:
[andy@ionstorm ~]$ grep -HiR "setTimeout(const" /var/lib/mock/fedora-24-x86_64/root/builddir/build/BUILD/ClickHouse/contrib/libpoco/*
/var/lib/mock/fedora-24-x86_64/root/builddir/build/BUILD/ClickHouse/contrib/libpoco/Net/include/Poco/Net/FTPClientSession.h: void setTimeout(const Poco::Timespan& timeout);
/var/lib/mock/fedora-24-x86_64/root/builddir/build/BUILD/ClickHouse/contrib/libpoco/Net/include/Poco/Net/HTTPServerParams.h: void setTimeout(const Poco::Timespan& timeout);
/var/lib/mock/fedora-24-x86_64/root/builddir/build/BUILD/ClickHouse/contrib/libpoco/Net/include/Poco/Net/HTTPSession.h: void setTimeout(const Poco::Timespan& timeout);
/var/lib/mock/fedora-24-x86_64/root/builddir/build/BUILD/ClickHouse/contrib/libpoco/Net/include/Poco/Net/HTTPSession.h: void setTimeout(const Poco::Timespan& connection_timeout, const Poco::Timespan& send_timeout, const Poco::Timespan& receive_timeout);
в CentOS7:
$ yum info poco-devel.x86_64
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.logol.ru
 * epel: mirror.logol.ru
 * extras: mirror.logol.ru
 * remi-safe: mirror.h1host.ru
 * updates: mirror.logol.ru
Available Packages
Name        : poco-devel
Arch        : x86_64
Version     : 1.6.1
Release     : 2.el7
Size        : 599 k
Repo        : epel/x86_64
Summary     : Headers for developing programs that will use POCO
URL         : http://pocoproject.org
License     : Boost
Description : The POCO C++ Libraries (POCO stands for POrtable COmponents)
            : are open source C++ class libraries that simplify and accelerate the
            : development of network-centric, portable applications in C++. The
            : POCO C++ Libraries are built strictly on standard ANSI/ISO C++,
            : including the standard library.
            : 
            : This package contains the header files needed for developing
            : POCO applications.

$
версия нужная, но нет в стандартном репозитории ни компилятора GCC5, ни LLVM 3.8. Шах и мат? 
Пока идеи кончились. Как в Яндексе собирают этот проект, я вообще понять не могу.

man...@gmail.com

unread,
Jul 28, 2016, 5:00:48 PM7/28/16
to ClickHouse
Poco в ClickHouse содержит патчи, не все из которых включены в upstream.
(Поэтому использовать системные пакеты Poco нельзя).


> Как в Яндексе собирают этот проект, я вообще понять не могу.

Собираем и устанавливаем под Ubuntu.

andrew...@gmail.com

unread,
Jul 29, 2016, 12:22:41 AM7/29/16
to ClickHouse


пятница, 29 июля 2016 г., 0:00:48 UTC+3 пользователь man...@gmail.com написал:
Poco в ClickHouse содержит патчи, не все из которых включены в upstream.
(Поэтому использовать системные пакеты Poco нельзя).

libboost, libre тоже содержат патчи? А можно эти изменения получить как 
patch файлы? Я готов проделать работу по отдельной сборке библиотек,
лишь бы clickhouse не таскал их с собой (в приницпе, если для deb дистрибутивов
они нужны, то пусть таскает, я в Fedora/CentOS мог бы собираться с наложенными 
патчами на апстримный проекты). Основная идея такова - отдельный репозиторий, 
в котором clickhouse и его зависимости, например патченный poco, cityhash (https://github.com/google/cityhash), 
metrohash (https://github.com/jandrewrogers/MetroHash) и тому подобные. 
У меня львиная доля времени уходит на сборку софта в бандле, а проблемы все равно остаются.
 
 
> Как в Яндексе собирают этот проект, я вообще понять не могу.

Собираем и устанавливаем под Ubuntu.
 
Статически, динамически? Я не умею собирать пакеты под Debian/Ubuntu, 
поэтому ничего не могу сказать, но под CentOS/Fedora могу собрать. В идеале
хотелось бы избавиться от всех бандлов, которые clickhouse таскает с собой.
И под какой именно Ubuntu, под закрытый Яндексовский форк (у вас вроде была
какая-то своя сборка)?

man...@gmail.com

unread,
Jul 29, 2016, 10:03:34 PM7/29/16
to ClickHouse
Boost не содержит патчи.
re2 содержит изменения в сборке (там собирается одновременно две версии библиотек, одна с включенной, другая с отключенной синхронизацией).

Если есть идея собирать библиотеки отдельно в виде .so и устанавливать их, то я не рекомендую. На мой взгляд, это не имеет смысла.
Собранные библиотеки не будут иметь отношения к системным. Из-за того, что у них, возможно, другой ABI, они могут использоваться только с ClickHouse. А значит набор библиотек надо будет всё время собирать и устанавливать вместе с ClickHouse. Это имеет все недостатки статической сборки, только хуже.

У нас все библиотеки линкуются статически, кроме libc.
Используется обычная Ubuntu, сейчас собираем под три версии: 16.04, 14.04, 12.04.
У Яндекса нет своего форка Ubuntu. Есть патченное ядро. ClickHouse используется на системах и с обычным ядром и с патченным.

andrew...@gmail.com

unread,
Aug 1, 2016, 3:02:24 AM8/1/16
to ClickHouse


суббота, 30 июля 2016 г., 5:03:34 UTC+3 пользователь man...@gmail.com написал:
Boost не содержит патчи.

Это хорошо!
 
re2 содержит изменения в сборке (там собирается одновременно две версии библиотек, одна с включенной, другая с отключенной синхронизацией).

Я видел этот хитрый финт ушами, только это можно сделать собрав отдельно libre2. Бандловая, к сожалению, не собирается под Fedor'ой
 
Если есть идея собирать библиотеки отдельно в виде .so и устанавливать их, то я не рекомендую. На мой взгляд, это не имеет смысла.

Именно так. Вообще, считается хорошим тоном разбандливать софт. https://fedoraproject.org/wiki/Bundled_Libraries?rd=Packaging:Bundled_Libraries
У Debian, похожие требования. 
 
Собранные библиотеки не будут иметь отношения к системным. Из-за того, что у них, возможно, другой ABI, они могут использоваться только с ClickHouse.

Вот и прекрасно, их можно собирать отдельно и линковать Clickhouse только с ними. Думаю, что можно сделать так, что такие библиотеки не будут мешать 
системным.
 
А значит набор библиотек надо будет всё время собирать и устанавливать вместе с ClickHouse.

Да, будет небольшой репозиторий с зависимостями. Учитывая вычислительные мощности яндекса, думаю, 
потребляемые ресурсы будут незаметны для компании.
 
Это имеет все недостатки статической сборки, только хуже.

К сожалению, у статической сборки, как сейчас недостатков не меньше, что бы собрать 
не под Ubuntu, приходится крутить здесь, там, а еще вон там.
Reply all
Reply to author
Forward
0 new messages