码迷,mamicode.com
首页 > 系统相关 > 详细

Linux 补丁 的简单使用: 制作补丁,打补丁,撤销补丁

时间:2019-12-27 00:28:28      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:文本文件   pat   运行   参数   维护   简单   重定向   子目录   开发人员   

背景:

  补丁的使用对于嵌入式开发人员来说,在维护或者开发中都比较方便。

 

制作补丁:

diff - 逐行比较文件。

格式: diff   参数   旧文件/旧文件夹   新文件/新文件夹    (注意顺序 新旧文件夹的顺序)

diff有很多参数,但是在制作补丁中主要使用以下参数。

-N   将不存在的文件看作是空的

-a   将所有文件都视为文本文件

-u   以合并的方式来显示文件内容的不同

-r   以递归地方式比较所有子目录

// 比较Test2在Test1版本上的更新并输出
diff -Naru Test1 Test2
// 比较Test2在Test1版本上的更新并输出到文件diff.patch
diff -Naru Test1 Test2 > diff.patch
例如:
$ cat a.c
12345
67890
abcdefg
hijklmn
opq
rst

$ cat b.c
12345
67908
abcdefg
ABCDEFG
hijklmn
oq

 运行看看,只要将其重定向文件就相当于制作成文件:

$ diff a.c b.c -Naur
--- a.c 2019-12-26 22:47:23.826403400 +0800
+++ b.c 2019-12-26 22:47:21.287250500 +0800
@@ -1,6 +1,6 @@
 12345
-67890   // -代表删除此行
+67908   // +增加此行;   先-后+ 相当于等于将67890改为67908
 abcdefg
+ABCDEFG   // +增加此行
 hijklmn
-opq     // -代表删除此行
-rst      // -代表删除此行
+oq      // +增加此行

只要将其重定向文件就相当于制作成补丁:

diff -Naru a.c b.c > diff.patch

 

打补丁:

patch - 将一个diff文件应用到一个原始文件

格式:

patch   参数   <   补丁

-b   备份原始文件,打补丁时,会复制或者重命名原始文件来备份

-R   撤销补丁

-p(num)   表示忽略num层路径

对于文件打补丁

直接使用以下命令即可:

patch -b < diff.patch

效果:让a.c 的内容变成与 b.c 一模一样,保留一份后缀为.orig但内容与a.c之前的内容一样的文件。

 

对于目录的补丁

使用 -pN (N代表数字)指定目录的补丁从第几级路径开始。

kernel_a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c   kernel_b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c

假设补丁头是上面一行

如果使用 -p0,就从 / 目录开始,也就是从 kernel_a 目录开始;

如果使用 -p1,就从 drivers 目录开始,也就是从 kernel/drivers 目录开始,忽略 kernel 当前目录下的差异文件;

以此类推。

来到两个差异目录的根目录,输入下面命令,让补丁从根目录开始改动差异

patch -bp0 < diff.patch 

可以使用 -x 排除指定的路径

 

撤销补丁:

patch - 将一个diff文件应用到一个原始文件

格式

patch   -R  [其他参数]  <   补丁

-R   撤销已打的补丁

 

Linux 补丁 的简单使用: 制作补丁,打补丁,撤销补丁

标签:文本文件   pat   运行   参数   维护   简单   重定向   子目录   开发人员   

原文地址:https://www.cnblogs.com/schips/p/12105127.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!