分享

hive补丁文件如何使用

Baron 发表于 2015-1-13 13:09:03 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 4 32723
我下的hive0.14.0源代码,在编译的时候报错,然后找到了补丁文件,现在不知道该怎么使用补丁文件。
目录结构如下:
hive目录路径:/data/apache-hive-0.14.0-src
补丁文件路径:/data/apache-hive-0.14.0-src/HIVE-8833.5-spark.patch

已有(4)人评论

跳转到指定楼层
arsenduan 发表于 2015-1-13 14:03:55
既然是补丁,也就相当于对源码的修改。放入相应的路径,然后编译打包,安装应该就可以了
回复

使用道具 举报

desehawk 发表于 2015-1-13 16:44:36
本帖最后由 desehawk 于 2015-1-13 16:50 编辑
可以用patch命令

试试这样:

  1. patch -p 1 < ./HIVE-8833.5-spark.patch
复制代码



网上见过这种,但是具体p几,楼主可以试试

  1.   patch -p0 < test.patch
复制代码


下载社区提供的补丁之后,使用 patch 命令即可以应用到源码中, 后续在进行编译测试即可

回复

使用道具 举报

muyannian 发表于 2015-1-13 17:00:11
desehawk 发表于 2015-1-13 16:44
本帖最后由 desehawk 于 2015-1-13 16:50 编辑
可以用patch命令
  1. patch -p0 < new-patch
复制代码





patch命令里面的层数(-p0?-p1?)
参数-p来指定从第几层开始比较。比如有一个patch文件的补丁头是这样的:

CODE:
--- old/modules/pcitableMon Sep 27 11:03:56 1999
+++ new/modules/pcitableTue Dec 19 20:05:41 2000


如果使用参数-p0,就表示从当前目录,找一个叫作new的目录,在它下面找一个叫modules的目录,再在它下面找一个叫pcitableMon的目录。
如果使用参数-p1,就表示忽略第一层,从当前目录找一个叫modules的目录,在它下面找一个叫modules的目录。这样会忽略掉补丁头提到的new目录。
依此类推。

回复

使用道具 举报

arsenduan 发表于 2015-1-13 17:01:42
这是hadoop的打补丁过程,希望对你有所帮助

1. 生成hadoop patch
单文件:
diff -u from-file to-file
多文件:
diff -uNr from-dir to-dir > to-dir.patch
2. 在hadoop根目录下安装patch
patch -p0 < Hadoop-0.20.2-v1382.patch
3.如果需要回滚patch,恢复到以前的版本,可执行
patch -RE -p0 < Hadoop-0.20.2-v1382.patch
4.在hadoop根目录下执行ant开始编译:
ant
如果这一步编译出现下列错误提示信息:
  BUILD FAILED/home/hadoop/hadoop-0.20.2/build.xml:1624: Class org.apache.tools.ant.taskdefs.ConditionTask doesn't support the nested "typefound" element.
这是因为ant版本太低,我用系统自带的ant 1.6.5 编译就出错了。到apache网站上下载个ant 1.8.0就可以了。
ant的安装很简单,直接解压到 /home/hadoop/ant ,然后在~/.bashrc配置下路径就可以了:
# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# User specific aliases and functions
export ANT_HOME=/home

回复

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条