linux系统打补丁常用的方式很多,如果是联网的情况下,直接使用yum update命令即可。如果没有联网或者有特殊的情况也可以使用diff 和patch命令来打补丁。
方法:
1、生成补丁
补丁⽂件是使用diff命令⽣成的,⽣成补丁⽂件的命令使⽤格式如下:
diff -uNr oldfile newfile > patch_file.patch
diff命令,它的功能就是逐⾏⽐较两个⽂件的不同,然后输出⽐较的结果输出到补丁文件。
参数解析:
-u:选项以统⼀格式创建补丁⽂件,这种格式⽐缺省格式更紧凑些
-N:选项确保补丁⽂件将正确地处理已经创建和删除⽂件的情况
-r:递归选项,设置了这个选项,会将两个不同版本源代码⽬录中的所有对应⽂件全部都进⾏⼀次⽐较,包括⼦⽬录⽂件
oldfile:源⽂件(⽬录),未进⾏修改的
newfile:以oldfile为基础,根据需求对⾥⾯的⽂件内容修改之后结果
patch_file.patch补丁文件⼀般以.patch为后缀。
注解:
补丁命令的功能就是逐个⽐较源⽂件(夹)和⽬标⽂件(夹)的所有⽂件,将差异信息记录到patch_file.patch中。下面对补丁文件内容进行讲解:
补丁头部分:
1、--- test1.txt 表示源文件(被修改的文件)
2、+++ test2.txt 表示目的文件
块部分(@@ @@ 表示一个块的开始):
3、@@ -1,3 表示源文件从第1行开始,一共有3行有差异
4、@@ 1,3 表示目的文件从第1行开始,一共有3行有差异
正文:
5、-zzzzzxxccv 表示被修改的文件要删除这一行
6、+bbbbbbbbgd表示被修改的文件要增加这一行
2、打补丁
打补丁是通过patch命令完成的。⼀般情况下,打补丁命令使⽤格式如下(这⾥只介绍了对源⽂件(夹)进⾏打补丁操作):
patch -pN < xxx.patch
参数解析:
-pN:选项打补丁时要忽略掉第N层⽬录。
举个例子: 如果补丁文件包含路径名称 /curds/whey/src/blurfl/blurfl.c,那么:
-p 0 使用完整路径名
-p 1 除去前导斜杠,留下 curds/whey/src/blurfl/blurfl.c。
-p 4 除去前导斜杠和前三个目录,留下 blurfl/blurfl.c。
下面给大家举个例子:
1、在/tmp目录下创建test1.txt ,并查看文件内容
2、同样在/tmp目录下创建test2.txt,并查看文件内容
3、制作补丁,并检查补丁内容
4、打补丁
5、检查test1.txt打补丁是否成功,内容是否被修改
此时可以看到test1.txt 和test2.txt的内容已经一致,说明打补丁成功。