分享

hadoop cdh4编译src.rpm包

hyj 发表于 2014-4-6 23:23:27 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 1 9661
hadoop cdh4修改源码方式有几种
hadoop cdh4编译报错处理一般方法是什么?

已有(1)人评论

跳转到指定楼层
hyj 发表于 2014-4-6 23:23:54
本帖最后由 pig2 于 2014-4-6 23:32 编辑
会在/root/rpmbuild的对应目录中看到源码以及rpm打包脚本
修改源码有两种方式:
1 直接替换源码包
2 增量的增加patch:
把patch放到SOURCES下然后
在.spec中
定义Source的下面定义,例如
Patch0: HADOOP-0.20.2+923-0001-SOGOU.-Add-feature-config-file-based-security.patch
相应的在%prep下加入%patch0 -p1
之后通过rpmbuild -ba --target noarch hadoop.spec编译java rpm安装包
报错处理一般方法
错误基本都是在maven执行过程中出的错,所以首先观察报错信息,如果信息不充分可以到/root/rpmbuild/BUILD/hadoop-2.0.0-cdh4.1.3/src目录中用maven编译,加上-e,可以得到更详细的异常信息。
遇到的错误:
1 没有protobuf
报错中的关键信息:Caused by: /home/jack/home/download/build/hadoop-common/hadoop-common-project/hadoop-common/target/antrun/build-main.xml:23:
会发现这个xml中生成了一个脚本,脚本中调用了protoc命令,运行之,报告此命令不存在。按照http://hadoop-common.472056.n3.nabble.com/failed-to-build-trunk-what-s-wrong-td3660097.html提示需要安装protobuf。
2 找不到protobuf中的相关类
报错中有N多类和方法找不到,用jar tvf命令查看其下载的2.4版本中确实没有相关类,但看了刚下载的2.5版本中则有相关类。经过find ./ | xargs grep -nH "protobuf-java" | grep "pom.xml" 发现有个地方显式的依赖于2.4版本,改掉,从新打包,覆盖原来的源码包。
这可能也跟本地安装的protobuf版本有关,因此建议升级成2.5版本后再编译,可能会避免此问题。
3 CMake没有安装
报错中明显的说明了Cannot run program "cmake" ,yum install cmake即可。
4 磁盘空间不足
按照官网运行命令时,他会把rpm源码解压到/root/rpmbuild/中,一般这个目录挂载的磁盘空间都比较小,而且编译过程中还会下载tomcat,因此注意预留空间。实在不行,将home目录移动到磁盘空间较大的路径下即可。(需要修改/etc/passwd,重启)
5 用户群组不对
报错时报Bad owner/group,很明显的权限问题,用chown修改后,发现再次编译时会很多文件会被覆盖掉。所以在spec脚本的install段中加入chown修改文件所属即可。
6 网络不稳,maven下载时偶尔会遇到proxy error,code是502,搜狗一下发现时网关错误。重试即可。
解决了以上问题,基本上就能顺利编译了。时间比较长,耐心等待吧。
-------------------------------------------修补----------------------------------------------------
1. 发现空间不够使用
ln -s /xxxx /root/rpmbuild
即可,不应该去修改 /etc/passwd。

2. 在Linux中应当尽量少用root,否则很容易出现奇怪的权限问题。

3. protobuf Google官网下载:https://code.google.com/p/protobuf/

转载自灰太狼的博客
http://www.aboutyun.com/blog-4629-36.html

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条