Linux 制作补丁 打补丁 撤销补丁
1、制作补丁
diff - 逐行比较文件
格式
diff 参数 旧文件/旧文件夹 新文件/新文件夹
-N 将不存在的文件看作是空的
-a 将所有文件都视为文本文件
-u 以合并的方式来显示文件内容的不同
-r 以递归地方式比较所有子目录
// 比较Test2在Test1版本上的更新并输出
diff -Naru Test1 Test2
// 比较Test2在Test1版本上的更新并输出到文件diff.patch
diff -Naru Test1 Test2 > diff.patch
aaron@build:~/test$ cat .c abcdefg
hijklmn
opq
rst
uvw
xyz aaron@build:~/test$ cat .c abcdefg
ABCDEFG
hijklmn
oq
rst
UVW
xyz aaron@build:~/test$ diff -Naru .c .c
--- .c -- ::03.687450043 -
+++ .c -- ::19.867441496 -
@@ -, +, @@ - //删除此行
+ //增加此行,等于将67890改为67908
abcdefg
+ABCDEFG //新增加
hijklmn
-opq
+oq
rst
-uvw
+UVW
xyz aaron@build:~/test$ diff -Naru .c .c > diff.patch aaron@build:~/test$ ls
.c .c diff.patch aaron@build:~/test$ cat diff.patch
--- .c -- ::03.687450043 -
+++ .c -- ::19.867441496 -
@@ -, +, @@ -
+
abcdefg
+ABCDEFG
hijklmn
-opq
+oq
rst
-uvw
+UVW
xyz
2、打补丁
patch - 将一个diff文件应用到一个原始文件
格式
patch 参数 < 补丁
-b 备份原始文件,打补丁时,会复制或者重命名原始文件来备份
-R 撤销补丁
-p(num) 表示忽略num层路径
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
假设补丁头是上面一行
如果使用 -p0,就从 / 目录开始,也就是从 kernel 目录开始;
如果使用 -p1,就从 drivers 目录开始,也就是从 kernel/drivers 目录开始,忽略 kernel 当前目录下的差异文件;
以此类推。
// 将上面生成的补丁diff.patch打到1.c上,就和2.c相同
aaron@build:~/test$ cat .c abcdefg
hijklmn
opq
rst
uvw
xyz aaron@build:~/test$ patch -bp0 < diff.patch
patching file .c aaron@build:~/test$ cat .c abcdefg
ABCDEFG
hijklmn
oq
rst
UVW
xyz aaron@build:~/test$ ls
.c .c.orig .c diff.patch // 1.c.orig备份文件 aaron@build:~/test$ rm .c.orig // 确定打补丁成功后删除备份文件
3、撤销补丁
patch - 将一个diff文件应用到一个原始文件
格式
patch 参数 < 补丁
-R 撤销已打的补丁
// 将上一步打的补丁撤销,还原1.c的初始模样
aaron@build:~/test$ cat .c abcdefg
ABCDEFG
hijklmn
oq
rst
UVW
xyz aaron@build:~/test$ patch -Rp0 < diff.patch
patching file .c aaron@build:~/test$ cat .c abcdefg
hijklmn
opq
rst
uvw
xyz
Linux 制作补丁 打补丁 撤销补丁的更多相关文章
- Linux 补丁 的简单使用: 制作补丁,打补丁,撤销补丁
背景: 补丁的使用对于嵌入式开发人员来说,在维护或者开发中都比较方便. 制作补丁: diff - 逐行比较文件. 格式: diff 参数 旧文件/旧文件夹 新文件/新文件夹 (注意顺序 新旧文件夹 ...
- 在Linux下的找不同-打补丁
Q:为什么要找不同,为什么要打补丁? A: 在Linux应用中,作为DBA,我们知道MySQL跑在Linux系统之上,数据库最重要的追求就是性能,"稳"是重中之重,所以不能动不动就 ...
- weblogic补丁下载与安装补丁的方法
文章目录1.根据漏洞报告下载补丁2.补丁包上传解压到Linux3.关于OPatch4.安装补丁4.1单个补丁安装4.2查看已安装的补丁4.3多个补丁安装4.4单个补丁回滚4.5多个补丁回滚4.6验证补 ...
- linux制作RPM包
制作rpm包 1.制作流程1.1 前期工作 1)创建打包用的目录rpmbuild/{BUILD,SPECS,RPMS, SOURCES,SRPMS} 建议使用普通用户,在用户家目录中创建 2)确定好制 ...
- python在linux制作图形界面(snack)
snack是一个用于在linux制作图形界面(GUI)的模块,该模块由c编写,而且redhat的系统都自带这个模块. 1.获取模块 虽然redhat系统会自带这个模块,但是直接去import snac ...
- win10 + linux 制作双系统教程(我本身是win10系统)
1.制作启动U盘 准备工作: .linux镜像 .硬盘空余空间>8G,越大越好 .制作启动U盘的软件 .最好3.0U盘一个>4G 下载启动软件的工具(UItraIOS制作的U盘启动盘无法安 ...
- linux vim vi编辑时撤销输入操作
linux vim vi编辑时撤销输入操作 1,esc退出输入状态 2,u 撤销上次操作 3,ctrl+r 恢复撤销
- diff生成补丁与patch打补丁
1.使用diff生成补丁: diff是Linux下的文件比较命令,参数这里就不说了,直接man一下就行了,不仅可以比较文件,也可以比较两个目录,并且可以将不同之处生成补丁文件,其实就是一种打补丁的命令 ...
- Win10 PC一周年更新正式版14393.447 32位/64位更新补丁KB3200970下载 Flash补丁Kb3202790下载
微软在今天凌晨推送了Win10 PC一周年更新正式版14393.447,本次更新补丁代号为KB3200970,面向Win10一周年更新正式版的PC用户. 更新日志 • 提升了多媒体音频.远程桌面以及I ...
随机推荐
- Web字体(链接)嵌入
下面是我最近在学习的两种字体嵌入方法 1.@font-face 使用@font-face可以这样做: @font-face{ font-family:"Garamod Premier Pro ...
- MySql设计规范及SQL索引优化【呕心之作】
数据库及表结构基本设计规范 1. 所有表必须使用Innodb存储引擎 没有特殊要求(即Innodb无法满足的功能如:列存储,存储空间数据等)的情况下,所有表必须使用Innodb存储引擎(mysql5. ...
- html中引入另一个html文件
https://segmentfault.com/q/1010000002954318
- C++设计模式之-模板模式
模板方法模式 在GOF的<设计模式:可复用面向对象软件的基础>一书中对模板方法模式是这样说的:定义一个操作中的算法骨架,而将一些步骤延迟到子类中.TemplateMethod使得子类可以不 ...
- python_安装第三方库
1.有一个专门可下载安装第三方库的网址: http://www.lfd.uci.edu/~gohlke/pythonlibs/ Ctrl+f 搜索要下载的第三方库,并下载 2.库文件都是以 whl ...
- CUDA Samples: Streams' usage
以下CUDA sample是分别用C++和CUDA实现的流的使用code,并对其中使用到的CUDA函数进行了解说,code参考了<GPU高性能编程CUDA实战>一书的第十章,各个文件内容如 ...
- BASE理论
BASE是Basiclly Available(基本可用),Soft state(软状态),Eventually consistent(最终一致性)三个短语的缩写. BASE是对CAP中一致性和可用性 ...
- 【Java实战】DecimalFormat对数值格式化的舍入问题——RoundingMode
转自http://blog.csdn.net/alanzyy/article/details/8465098 背景: 在对数值做一些计算的时候,往往我们需要控制计算结果的精度,所以会使用到Dec ...
- xcode好玩的条件断点设置. 可以真人发声。
哈哈.设置个条件断点. 然后 Logmessage or speak message 挺有意思. 一听就知道是哪个断点触发了.
- IOS开发 警告 All interface orientations must be supported unless the app requires full screen.
在IOS开发中遇到警告 All interface orientations must be supported unless the app requires full screen. 只要勾上R ...