天天看点

clickhouse源码安装(无sudo权限,gcc、cmake、ninja源码安装)

ClickHouse 源码安装 (无sudo情况下,gcc,cmake,ninja源码安装)

简介

​ 由于工作和学习的需要,需要使用clickhouse数据库。如果只是限于日常的简单使用,那么不需要源码安装;如果涉及到对clickhouse的改造和开发,则必须要利用源码安装。而且限制于个人的身份,很难去获取sudo权限,因此安装各种软件就会收到限制。下面就介绍一下,非sudo权限下源码安装clickhouse的全部过程。

gcc安装

​ clickhouse支持的gcc版本为10.0以上,而大部分linux系统原生的gcc-4.7左右。下面是源码安装gcc的过程。(之前也用clang编译过,出奇的顺利,如果gcc行不通的话,可以试试clang)

# gcc 源码安装
# 下载源码并解压,注意源码的版本
# 进入解压后的目录
./contrib/download_prerequisites # 下载依赖
mkdir -p ~/gcc-build-10.1.0 # 建立安装路径,放在home目录下
cd ~/gcc-build-10.1.0
# 这一步是为了生成makefile, gcc-10.1.0是压缩包解压后的路径, --prefix用于指定安装路径
../gcc-10.1.0/configure --prefix=~/gcc-build-10.1.0 --enable-checking=release --enable-languages=c,c++ --disable-multilib

# 编译 -j16用于多线程编译,速度会快很多
make -j16
make install

# 修改环境路径, 直接写在.bashrc中
 export PATH=~/gcc-build-10.1.0/bin:$PATH
 export LD_LIBRARY_PATH=~/gcc-build-10.1.0/lib64:~/gcc-build-10.1.0/lib:$LD_LIBRARY_PATH # 这个路径不能unset,因为cmake会用到
 export C_INCLUDE_PATH=~/gcc-build-10-1.0/include:$C_INCLUDE_PATH
           

此时运行gcc --version,已经能得到10.0以上的版本了。make的过程可能会比较长,耐心等待。

cmake安装

cmake的版本我采用的是3.19.1,下载源码并解压

mkdir -p ~/cmake3_19       # cmake安装路径
cd ~/cmake-3.19.1          # 切换到cmake源码解压后的目录
./bootstrap --prefix=/data/users/guojiantao/cmake3_19 # 指定安装路径,进行一些环境配置
gmake -j16                 # 编译
gmake install              # 安装
# 将cmake添加到环境变量,注意不要把上面gcc的环境变量删掉
export PATH=~/gcc-build-10.1.0/bin:~/cmake3_19/bin:$PATH
           

此时执行cmake --version就能看到cmake的版本了

ninja安装

ninja的版本是1.10.2。ninja需要依赖re2c,因此需要安装re2c,re2c的版本是2.0.3,下载源码并解压。

mkdir -p ~/re2c       # 安装路径
cd re2c-1.0.3/        # 解压后的安装包
autoreconf -i -W all
./configure --prefix=~/re2c       
make
make install
# 下面将路径添加到环境变量, 注意不要覆盖之前的变量
export PATH=~/gcc-build-10.1.0/bin:~/cmake3_19/bin:~/re2c/bin:$PATH
           

ninja安装

git clone git://github.com/ninja-build/ninja.git && cd ninja # 下载并切换目录
./configure.py --bootstrap                                   # 编译并生成可执行文件
# 将路径添加到环境变量
export PATH=~/gcc-build-10.1.0/bin:~/cmake3_19/bin:~/re2c/bin:~/ninja-1.10.2$PATH
           

至此,clickhouse需要的所有环境都已经配置完成

clickhouse安装

首先下载源码

git clone --recursive https://github.com/ClickHouse/ClickHouse.git
cd ClickHouse
git submodule update --init --recursive       #这一步骤一定要多执行几次,要下载submodule,可能下载不完全
           

然后进行安装

# 首先测试一下版本
gcc --version
g++ --version
cmake --version
ninja --version
# 结果如下
# gcc --version
gcc (GCC) 10.1.0
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

# g++ --version
g++ (GCC) 10.1.0
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

# cmake --version
cmake version 3.19.1
CMake suite maintained and supported by Kitware (kitware.com/cmake).

# ninja --version
1.10.2
           
# 指定编译器, 剩下的一步一步执行就完事了
export CC=$(which gcc)
export CXX=$(which g++)
cd ClickHouse
mkdir build
cd build
cmake ..
ninja
           

ninja中可能遇到的bug:

bug1:

clickhouse源码安装(无sudo权限,gcc、cmake、ninja源码安装)

方案:clickhouse声明和linux内核声明不一致。解决方法:将…/base/glibc-compatibility/musl/eventfd.c的第6行的“unsigned”去掉。(这个方法不知道会不会有坑)

bug2:

执行./clickhouse-serevr,路径权限出现问题。这是因为用户没有sudo权限,那么clickhouse默认一些日志的存储位置无法去访问

cd ClickHouse
cp ./programs/server/config.xml ./programs/server/config_test.xml   # 复制一个xml文件
mkdir ~/var                                                         # 在home目录下创建一个存放数据的文件夹
vim ./programs/server/config_test.xml                               # 修改配置文件
# 修改内容如下
将所有的/var前面添加“~”,表示clickhouse将数据存储到home下的var,而不是从根目录中去寻找var
# 然后再启动clickhouse
./clickhosue-serevr --config ~/ClickHouse/programs/server/config_test.xml    # 指定配置文件