编译和安装
本章节分别介绍ClickHouse 20.12.3.3-stable和ClickHouse 20.3.19.4-lts两个版本ClickHouse的编译和安装,请视具体情况选择一种。
ClickHouse 20.12.3.3-stable
- 使用git clone命令下载ClickHouse源码包。
1 2
cd /home git clone git://github.com/ClickHouse/ClickHouse.git
如果执行git clone命令失败,github.com替换为github.com.cnpmjs.org。
- 进入目录,切换至v20.12.3.3-stable分支。
1 2
cd ClickHouse git checkout v20.12.3.3-stable
- 下载相关依赖项。由于需要下载的依赖包较多,花费的时间比较长,请耐心等待。
1
git submodule update --init --recursive
如果下载速度慢,可以替换下载镜像网址以提高速度,操作如下:- 更改下载地址。
1
sed -i 's/https/git/g' .gitmodules
- 将新的URL更新到.git/config。
1
git submodule sync
- 循环下载依赖。
1
git submodule update --init --recursive
若下载报错或者本章节后面步骤操作过程中报错缺少文件,参考FAQ中的问题1来解决,不需要重新执行git submodule update --init --recursive。
- 更改下载地址。
- msgpack-c组件切换至4668426分支。
1 2 3
cd /home/ClickHouse/contrib/msgpack-c git checkout 4668426 git branch
- grpc组件切换至a6570b8分支,然后将grpc中的第三方组件abseil-cpp和c-ares下载到指定目录。
1 2 3
cd /home/ClickHouse/contrib/grpc git checkout a6570b8 git branch
1 2 3 4 5 6
cd third_party/abseil-cpp git clone git://github.com/abseil/abseil-cpp.git git checkout a6570b8 git branch mv abseil-cpp/* ./ && rm -rf abseil-cpp ls
1 2 3 4 5 6
cd ../cares/cares git clone git://github.com/c-ares/c-ares.git git checkout a6570b8 git branch mv c-ares/* ./ && rm -rf c-ares ls
- arrow组件切换至3cbcb7b分支。
cd /home/ClickHouse/contrib/arrow git checkout 3cbcb7b git branch
- 设置ARM环境编译禁用FastMemcpy模块。
编辑/home/ClickHouse/base/glibc-compatibility/CMakeLists.txt文件。
vi /home/ClickHouse/base/glibc-compatibility/CMakeLists.txt
将第30至32行修改为如下内容。
1 2 3 4 5
if (NOT ARCH_ARM) add_library (clickhouse_memcpy OBJECT ${ClickHouse_SOURCE_DIR}/contrib/FastMemcpy/memcpy_wrapper.c ) endif()
- boost组件切换至a04e72c046分支。
1 2 3
cd /home/ClickHouse/contrib/boost git checkout a04e72c046 git branch
- brotli组件切换至5805f99分支。
1 2 3
cd /home/ClickHouse/contrib/brotli git checkout 5805f99 git branch
- 修改contrib/libunwind/src/DwarfInstructions.hpp文件。
- 打开/home/ClickHouse/contrib/libunwind/src/DwarfInstructions.hpp文件。
1
vi /home/ClickHouse/contrib/libunwind/src/DwarfInstructions.hpp
- 按“i”进入编辑模式,将第164~166行修改为如下内容。
1 2
auto page_size = sysconf(_SC_PAGESIZE); return ptr && (0 == syscall(SYS_mincore, (void*)(ptr / page_size * page_size), 1, &mincore_res) || errno == ENOSYS);
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 打开/home/ClickHouse/contrib/libunwind/src/DwarfInstructions.hpp文件。
- 配置编译环境变量。
1 2
export CC=clang export CXX=clang++
- 创建build目录,执行cmake命令。
1 2 3 4
cd /home/ClickHouse rm -rf build mkdir -p build && cd build cmake .. -DENABLE_JEMALLOC=OFF -DCMAKE_INSTALL_PREFIX=/opt/clickhouse
- 执行编译和安装。
1
make -j `nproc`
1
make install
- 查看安装后的路径。
1
ll /opt/clickhouse
- 查看版本。
1
/opt/clickhouse/bin/clickhouse-server --version
ClickHouse 20.3.19.4-lts
- 使用git clone命令下载ClickHouse源码包。
1 2
cd /home git clone git://github.com/ClickHouse/ClickHouse.git
- 进入目录,切换至v20.3.19.4-lts分支。
1 2
cd ClickHouse git checkout v20.3.19.4-lts
- 下载相关依赖项(由于需要下载依赖包较多,时间比较久)。
1
git submodule update --init --recursive
- 如果下载速度慢,可以替换下载镜像网址提高速度,操作如下:
1 2 3 4 5 6
# 更改下载地址 sed -i 's/https/git/g' .gitmodules # 将新的URL更新到.git/config git submodule sync # 循环下载依赖 git submodule update --init --recursive
- 若下载报错,参考FAQ中的问题1来解决,不需要重新执行git submodule update --init --recursive。
- 切换simdjson至avx512port分支。
1 2
cd /home/ClickHouse/contrib/simdjson git checkout avx512port
- 将grpc中的三方组件c-ares需要手动下载到指定目录。
1 2 3 4
cd /home/ClickHouse/contrib/grpc/third_party/cares/cares git clone git://github.com/c-ares/c-ares.git mv c-ares/* ./ && rm -rf c-ares/ ls
- 切换arrow至maint-0.15.x分支。
1 2
cd /home/ClickHouse/contrib/arrow git checkout maint-0.15.x
- 切换brotli至v1.0分支。
1 2
cd /home/ClickHouse/contrib/brotli git checkout v1.0
- 配置编译环境变量。
1 2
export CC=clang export CXX=clang++
- 创建build目录,执行cmake。
1 2 3 4
cd /home/ClickHouse rm -rf build mkdir -p build && cd build cmake .. -DENABLE_JEMALLOC=OFF -DCMAKE_INSTALL_PREFIX=/opt/clickhouse
- 执行编译和安装。
1
make -j `nproc`
1
make install
- 查看安装后的路径。
1
ll /opt/clickhouse
- 查看版本。
1
/opt/clickhouse/bin/clickhouse-server --version
父主题: 移植指南