本帖最后由 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: 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,搜狗一下发现时网关错误。重试即可。 解决了以上问题,基本上就能顺利编译了。时间比较长,耐心等待吧。 -------------------------------------------修补----------------------------------------------------
转载自灰太狼的博客 http://www.aboutyun.com/blog-4629-36.html
|