繁体   English   中英

Hadoop 3.1构建失败于`protoc --version`

[英]Hadoop 3.1 build fail at `protoc --version`

我正在尝试从其源代码编译Hadoop 3.1。 进入Docker容器后,我将按照Hadoop源代码文件内BUILDING.txt包含的说明使用maven进行BUILDING.txt Apache Hadoop Common ............................... FAILURE [ 0.458 s]试图构建时,我得到以下信息错误,关于protoc --version

[ERROR] Failed to execute goal org.apache.hadoop:hadoop-maven-plugins:3.1.0:protoc (compile-protoc) on project hadoop-common:org.apache.maven.plugin.MojoExecutionException: 'protoc --version' did not return a version -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.hadoop:hadoop-maven-plugins:3.1.0:protoc (compile-protoc) on project hadoop-common: org.apache.maven.plugin.MojoExecutionException: 'protoc --version' did not return a version

但是, protoc命令在我的安装中起作用:

$ protoc
Missing input file.
$ protoc --version
libprotoc 2.5.0

protoc版本3.0发生了同样的事情。

任何人都经历过类似的事情吗?

在找不到确切的解决方案之后,这里是一种解决方法。

Hadoop的源代码随附./start-build-env.sh 运行脚本后,它将启动一个Docker container ,其中可以使用Maven构建Hadoop。

所有必需的库都存在于容器中,但仅包含在用户的$PATH ,而不包含在root的$PATH 这是一个问题,因为使用sudo来构建软件包很方便,这就是protoc --version无法返回内容的原因。

现在,./ ./start-build-env.sh启动的每个容器似乎都是临时的,您无法通过~/.bashrc编辑根目录的$PATH 一种解决方法是通过./start-build-env.sh启动容器,然后从另一个终端窗口中,使用以下命令登录到容器: sudo docker exec -it <container> bash 现在,您可以下载一个简单的编辑器(例如通过apt-get nanovi ),并在visudo编辑默认的$PATH

然后在容器内执行命令sudo mvn package -Pdist... ,不会卡在我上面描述的问题中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM