Hadoop3.1构建在`protoc--version失败`

tag5nh1u  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(764)

我试图从hadoop3.1的源代码编译它。一旦进入docker容器,我将按照中包含的说明与maven一起构建它 BUILDING.txt 在hadoop的源代码文件中。而 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。
有人经历过类似的事情吗?
3yhwsihp

3yhwsihp1#

在没有找到精确解之后,这里有一个解决方法。
hadoop的源代码,附带 ./start-build-env.sh . 在运行脚本时 Docker container 将由它启动,其中hadoop可以与 Maven .
所有必需的库都存在于容器中,但仅包含在用户的 $PATH ,而不是根的 $PATH . 这是一个问题,因为它方便使用 sudo 来构建包,这就是 protoc --version 不能归还东西。
现在每个集装箱 ./start-build-env.sh 似乎是临时的,并且您不能编辑根的 $PATH 通过 ~/.bashrc . 解决方法是通过 ./start-build-env.sh 从另一个终端窗口,使用以下命令登录到容器: sudo docker exec -it <container> bash . 现在您可以下载一个简单的编辑器(如 nano 或者 vi 通过 apt-get ),并编辑默认值 $PATHvisudo .
然后命令 sudo mvn package -Pdist... 在容器内,不会陷入我上面描述的问题

相关问题