前言
本文并没有介绍如何安装kudu,而是记录了根据官方文档构建kudu时的手稿,根据官方文档构建kudu需要解决大量的依赖问题,我弄了将近一整天了,最后放弃了(我太菜了,连安装都安装不上...)。。。最后选择到cdh官网下载kudu的rpm包进行安装,安装成功的步骤在另一篇博客中介绍。
使用源码构建Kudu
要从源代码构建Kudu,需要RHEL或CentOS 6.6或更高版本。要在7.0之前的版本上构建,必须安装Red Hat Developer Toolset(以便访问具有C ++ 11功能的编译器)。
1.如果未安装必备软件,请安装它们。
如果安装时报错,提示尝试其他镜像,可尝试修改yum源,参考:更换yum源
sudo yum install autoconf automake cyrus-sasl-devel cyrus-sasl-gssapi \
cyrus-sasl-plain flex gcc gcc-c++ gdb git java-1.8.0-openjdk-devel \
krb5-server krb5-workstation libtool make openssl-devel patch \
pkgconfig redhat-lsb-core rsync unzip vim-common which
2.如果在7.0之前的RHEL或CentOS上构建,请安装Red Hat Developer Toolset。
官网提供的网址由于服务调整,无法下载对应rpm包,网上也没有找到资源,所以后面产生的大量依赖缺失以及gcc版本太低都是由于这个原因导致的。
我安装的时候提示doxygen版本过低,需要重新安装高版本的doxygen,以下是doxygen安装方式,如果没有报错的话,可省略这步。
安装doxygen时提示cmake版本太低,以下是安装cmake的方式,如果没有提示报错的话可以忽略:
#移除自带cmake
sudo yum remove cmake cmake-data
#下载新版本源码并解压
wget https://cmake.org/files/v3.9/cmake-3.9.2.tar.gz
tar -zxvf cmake-3.9.2.tar.gz
#进入解压出的目录编译
cd cmake-3.9.2
./configure
make && make install
#创建软连接
ln -s ./bin/* /usr/bin/
安装BISON
wget http://ftp.gnu.org/gnu/bison/bison-2.6.4.tar.gz
tar -xvzf bison-2.7.tar.gz
cd bison-2.6.4
./configure
make && make install
安装qt4
下载qt4安装包https://download.qt.io/archive/qt/4.8/4.8.4/qt-everywhere-opensource-src-4.8.4.tar.gz
将安装包上传到linux并解压
#解压
tar zxvf qt-everywhere-opensource-src-4.8.5.tar.gz
#进入解压后的目录进行配置
cd qt-everywhere-opensource-src-4.8.5
./configure --prefix=/usr/local
#根据提示选择开源版并接受
o
yes
#根据提示gmake、gmake install
gmake
gmake install
如果doxygen在make时报如下错误:
/install-package/doxygen/src/linkedmap.h: 在成员函数‘T* LinkedMap<T>::add(const char*, Args&& ...)’中:
/install-package/doxygen/src/linkedmap.h:64:19: 错误:‘make_unique’不是‘std’的成员
Ptr ptr = std::make_unique<T>(k,std::forward<Args>(args)...);
^
/install-package/doxygen/src/linkedmap.h:64:37: 错误:expected primary-expression before ‘>’ token
Ptr ptr = std::make_unique<T>(k,std::forward<Args>(args)...);
^
/install-package/doxygen/src/linkedmap.h:64:65: 错误:expected ‘)’ before ‘...’ token
Ptr ptr = std::make_unique<T>(k,std::forward<Args>(args)...);
^
/install-package/doxygen/src/linkedmap.h:64:68: 错误:参数包未能在‘...’中被展开:
Ptr ptr = std::make_unique<T>(k,std::forward<Args>(args)...);
^
/install-package/doxygen/src/linkedmap.h:64:68: 附注: ‘args’
/install-package/doxygen/src/linkedmap.h:64:68: 附注: ‘Args’
/install-package/doxygen/src/linkedmap.h: 在成员函数‘bool LinkedMap<T>::del(const char*)’中:
/install-package/doxygen/src/linkedmap.h:80:92: 错误:形参声明为‘auto’
auto vecit = std::find_if(m_entries.begin(),m_entries.end(),[obj=it->second](auto &el) { return el.get()==obj; });
^
/install-package/doxygen/src/linkedmap.h: 在 lambda 函数中:
/install-package/doxygen/src/linkedmap.h:80:105: 错误:‘el’在此作用域中尚未声明
auto vecit = std::find_if(m_entries.begin(),m_entries.end(),[obj=it->second](auto &el) { return el.get()==obj; });
^
make[2]: *** [vhdlparser/CMakeFiles/vhdlparser.dir/VhdlParser.cc.o] 错误 1
make[1]: *** [vhdlparser/CMakeFiles/vhdlparser.dir/all] 错误 2
原因是gcc版本太低,要求gcc版本大于6.2
#查看gcc版本
gcc -v
#如果小于6.2,请参照以下步骤进行安装
#下载
wget http://ftp.gnu.org/gnu/gcc/gcc-9.1.0/gcc-9.1.0.tar.gz
#或者
wget http://mirror.hust.edu.cn/gnu/gcc/gcc-9.1.0/gcc-9.1.0.tar.gz
#解压
tar -xzvf gcc-9.1.0.tar.gz
#进入解压后的目录
cd gcc-9.1.0
#执行download_prerequisites脚本,自动下载依赖,如果长时间没有反应,说明后台正在下载,属于正常现象。
./contrib/download_prerequisites
#以上命令如果报错
#sha512sum: 警告:1 个校验和不匹配
#error: Cannot verify integrity of possibly corrupted file gmp-6.1.0.tar.bz2
#是由于网络问题,下载失败,可以尝试手动下载报错文件并放到gcc-9.1.0目录下
#下载地址ftp://gcc.gnu.org/pub/gcc/infrastructure/
#如果报错解压失败,tar: Error is not recoverable: exiting now
#error: Cannot extract package from gmp-6.1.0.tar.bz2
#需要安装bzip2
yum -y install bzip2
#然后进行编译
mkdir temp
cd temp
../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
make -j4
#如果make的时候报错,尝试安装autogen
yum install autogen
make install
#安装之后执行 gcc -v 查看版本
报错glibc
../../thirdparty/installed/common/bin/cmake: /lib64/libc.so.6: version `GLIBC_2.15' not found (required by ../../thirdparty/installed/common/bin/cmake)
../../thirdparty/installed/common/bin/cmake: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ../../thirdparty/installed/common/bin/cmake)
../../thirdparty/installed/common/bin/cmake: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by ../../thirdparty/installed/common/bin/cmake)
../../thirdparty/installed/common/bin/cmake: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.19' not found (required by ../../thirdparty/installed/common/bin/cmake)
../../thirdparty/installed/common/bin/cmake: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.17' not found (required by ../../thirdparty/installed/common/bin/cmake)
../../thirdparty/installed/common/bin/cmake: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.5' not found (required by ../../thirdparty/installed/common/bin/cmake)
../../thirdparty/installed/common/bin/cmake: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by ../../thirdparty/installed/common/bin/cmake)
../../thirdparty/installed/common/bin/cmake: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by ../../thirdparty/installed/common/bin/cmake)
../../thirdparty/installed/common/bin/cmake: /usr/lib64/libcrypto.so.10: version `OPENSSL_1.0.2' not found (required by ../../thirdparty/installed/common/bin/cmake)
到以下地址中下载对应的包进行编译安装。
也不晓得何时是个头,到这里我就放弃了,没有继续下去了,如果有根据官方文档成功编译kudu的朋友,烦请不吝赐教!