背景
在编译Hadoop3.0的时候,在cmake编译阶段失败,错误如下:
[WARNING] CMake Error at CMakeLists.txt:23 (cmake_minimum_required):
[WARNING] CMake 3.1 or higher is required. You are running version 2.8.12.2
复制代码
很明显,这是cmake版本过低导致的,那么就需要升级cmake到Hadoop要求版本以及更高版本了。
本文主要介绍如何升级CentOS7的cmake版本。
注:笔者使用的Hadoop编译环境是一个基于CentOS7的docker容器,所以以下升级cmake的步骤会涉及到docker的一些操作,除此以外,升级步骤和普通操作系统无异。
升级cmake
进入docker容器
提醒:非docker环境可跳过此步骤
笔者使用的升级docker image的方式是直接进入容器内部,做完相应的修改后,再退出容器,然后 commit 修改到原有image。当然还可以使用 Dockerfile 升级docker image,在此就不再赘述。详情将在docker系列文章说明。
以交互式的方式进入docker容器:
docker run -it xwd/hadoop:centos-7-hadoop bash
复制代码
执行命令之后,就会进入以 xwd/hadoop:centos-7-hadoop 这个 image 为基础的容器的终端了,其操作和普通操作系统终端大致一样。
下载cmake二进制包
这里,笔者使用cmake-3.10.2-Linux-x86_64版本为例。
进入docker容器终端或者普通操作系统终端,下载cmake安装包:
cd /opt
wget https://cmake.org/files/v3.10/cmake-3.10.2-Linux-x86_64.tar.gz
复制代码
升级cmake
如果原有cmake环境就是使用cmake的二进制包制作的,那么直接修改环境变量文件即可。如果不熟悉这种方法的同学,可以在下文看到相关操作。
如果原有环境是使用yum等工具安装,那么,先卸载已有的cmake:
yum remove cmake
复制代码
解压下载好的cmake二进制包:
cd /opt
tar zxvf cmake-3.10.2-Linux-x86_64.tar.gz
复制代码
解压成功后,就可以在 /opt 目录下看到一个 cmake-3.10.2-Linux-x86_64 目录,下面添加cmake环境变量,编辑 /etc/profile.d/cmake.sh 文件,写入以下内容:
export CMAKE_HOME=/opt/cmake-3.10.2-Linux-x86_64
export PATH=$PATH:$CMAKE_HOME/bin
复制代码
保存并退出,执行命令让cmake环境文件生效:
source /etc/profile
复制代码
此时,再次查看cmake版本,就已经是3.10.2了:
cmake -version
复制代码
OK,cmake环境版本升级完毕。
更新docker image
提醒:非docker环境可跳过此步骤
在docker容器内更新完cmake版本之后,执行 exit 命令退出容器,然后提交更新:
docker commit -m "update cmake to 3.10.2" 371401fce751 xwd/hadoop:centos-7-hadoop
复制代码
上述命令具体参数解释,在我的docker系列文章中会讲解
命令成功之后,终端就会出现类似以下的信息:
sha256:cb4a004b41af0a691cb2d78489fb11047081cb85e02c151093ad84198fa5c19d
复制代码
总结
其实在Linux系统中,笔者习惯使用工具的二进制包制作环境,这种方式不仅绿色而且简单,非常推荐使用。最后希望志同道合的同学们多多交流学习经验。
原创不易,与君共勉!