[英]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
nano
或vi
),并在visudo
编辑默认的$PATH
。
然后在容器内执行命令sudo mvn package -Pdist...
,不会卡在我上面描述的问题中
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.