写了一篇博客记录编译cdh hbase源代码并打补丁的过程,如有不正确的,欢迎指出!
说明:
-b 指定下载哪个分支
最后一个参数指定下载下来的文件名称
降低gcc版本到4.4:
建立libjvm软连接
下载并编译hadoop-snappy
安装jar包到本地仓库
暂不在此列出,请参考网上文章。
注意:目前只能装2.4.1版本的,装最新版本的可能会缺少文件。
测试是否安装成功,如果成功你会看到:
如果安装失败,你可能会看到:
进入到cdh4-0.94.6_4.4.0 目录,然后运行mvn基本命令。
忽略测试,请添加如下参数:
添加maven运行时jvm大小,请在mvn前面添加如下参数:
生成javadoc和文档,请添加如下参数:
生成release加入security和native包,请添加如下参数:
基于hadoop2.0进行编译,请添加如下参数:
添加hadoop-snappy支持,请添加如下参数:
如果你添加了一些java代码,在每个文件头没有添加license,则需要添加如下参数:
综上,完整命令如下:
修改代码之后,在提交代码之前,运行如下命令生成patch:
如果你已经将该动文件加入到提交缓存区,即执行了如下代码:
你可以使用如下代码打补丁:
如果在提交之后,想生成patch,执行如下命令:
更多diff的命令如下:
打patch:
测试patch是否打成功:
如果出现以下错误:
请安装dos2unix:
然后,执行如下代码:
最后再尝试打补丁。
注意:
请注意,git apply 是一个事务性操作的命令,也就是说,要么所有补丁都打上去,要么全部放弃。
对于传统的 diff 命令生成的补丁,则只能用 git apply 处理。对于 format-patch 制作的新式补丁,应当使用 git am 命令。
查看远程服务器地址和仓库名称:
添加远程仓库地址:
再一次查看远程服务器地址和仓库名称:
抓取远程仓库更新:
然后,再执行下面命令查看远程分支:
下载cdh上的cdh4-0.94.6_4.4.0分支,在本地命名为cdh4-0.94.6_4.4.0:
将本地的cdh4-0.94.6_4.4.0分支其提交到自己的远程仓库:
如果在启动 hbase 的服务过程中出现如下日志:
请查看 src/saveversion.sh 文件的编码及换行符是否和你的操作系统一致。编码应该设置为 utf-8,如果你使用的是 linux 系统,则换行符应该为 unix/linux 换行符,不应该为 window 换行符。