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 ...
随机推荐
- tkinter模块常用参数
tkinter模块常用参数 1.使用tkinter.Tk() 生成主窗口(root=tkinter.Tk()):root.title('标题名') 修改框体的名字,也可在创建时使用class ...
- leetcode 427. Construct Quad Tree
We want to use quad trees to store an N x N boolean grid. Each cell in the grid can only be true or ...
- This function has none of DETERMINISTIC, NO SQL解决办法
This function has none of DETERMINISTIC, NO SQL解决办法 创建存储过程时 出错信息: ERROR 1418 (HY000): This function ...
- 普通用户开通sudo权限:xxx is not in the sudoers file.This incident will be reported.的解决方法
1.切换到root用户下,怎么切换就不用说了吧,不会的自己百度去. 2.添加sudo文件的写权限,命令是: chmod u+w /etc/sudoers 3.编辑sudoers文件 vi /etc/s ...
- LeetCode OJ:Maximal Square(最大矩形)
Given a 2D binary matrix filled with 0's and 1's, find the largest square containing all 1's and ret ...
- shell脚本中四则运算
方法一: (()) ##在括号里面可以直接对变量进行操作 例如:vim test.sh 方法二: let ##let后面加要操作的运算 例如: 方法三: expr ...
- request参数获取的几种方式
经常用到Request.QueryString[""]和Request.Form[""]来获取参数值. 今天照常用,ajax方式向后台传参,先用的Request ...
- MayBatis与Spring的整合
1. 步骤 第一步:导入相关的jar包(spring和mybatis) mybatis-spring-*.jar spring-jdbc-*.jar spring-tx-*.jar 第二步:sprin ...
- (一) ffmpeg filter学习-使用流程
FFMPEG中有一个类库:libavfilter.该类库提供了各种视音频过滤器.之前一直没有怎么使用过这个类库,最近看了一下它的使用说明,发现还是很强大的,有很多现成的filter供使用,完成视频的处 ...
- vue 初级小总结
(1)插值,即渲染文本 文本:数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值 <h1>{{ message }}</h1> data() { return ...