我试图从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。
有人经历过类似的事情吗?
1条答案
按热度按时间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
),并编辑默认值$PATH
在visudo
.然后命令
sudo mvn package -Pdist...
在容器内,不会陷入我上面描述的问题