Linux下Patch补丁的生成与打补丁命令

时间:2021-08-31 00:49:44
之前在公司做项目的时候用到了在linux打补丁的技术(呵呵,其实也不是什么技术说大了就是一条命令),感觉这个还是挺有用的,因为很多原厂都是给出源码基础或是他们修改基础上的补丁包都我们,让我们自己打上去来更新一些代码的功能的。

一、打补丁最需要注意有以下两点:


1、要打补丁的文件必须是未做任何修改的(这个可以打开补丁文件看一下删除的文件的日期是否和我们要打补丁的文件一样就可以了)。我之前就是因为修改了厂商给的源码所以打补丁的时间打不进去,会出错,后来找资料才明白不能改打补丁前的文件。

2、还有一个就是有的补丁要一个一个的打,那是补丁做成这样的,一般厂商给说明是否需要一个一个的打,还直接打最后一个版本的就OK了,但我认为一个一个的打的补丁要严谨些,因为它的每一个补丁表示了一次功能性的修改,这样每次都可以验证补丁的正确性了。

二、生成补丁(针对于发布补丁文件的人)


命令: diff -Naur 路径1/file_old文件   路径2/file_new文件 > xxx.patch文件

注:xxx.patch文件就是新旧文件生成的补丁文件,路径2最好是修改文件的当前路径这样打补丁的时候就把补丁文件放到要打补丁文件所在目录下一起打,file_new文件最好保存下来以便打补丁者打不上或者打错的时间对比下那里没有打上。

三、打补丁(针对于打补丁的人)


命令: patch -bp1 < xxx.patch

注:把xxx.patch和要打补丁的文件放到一起到要打补丁文件 目录下执行上述命令会把补丁打进去更新现有文件,由于加入了参数-b所以还有生成一个.org后缀的文件它是打补丁前的源文件,确定打好了可以删除之。

四、撤销打的补丁(针对打补丁的人)


命令: patch -Rp1 < xxx.patch

注:执行它也是在打完xxx.patch的补丁的文件的基础上执行。