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 制作补丁 打补丁 撤销补丁的更多相关文章

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

    ​ 背景: 补丁的使用对于嵌入式开发人员来说,在维护或者开发中都比较方便. 制作补丁: diff - 逐行比较文件. 格式: diff 参数 旧文件/旧文件夹 新文件/新文件夹 (注意顺序 新旧文件夹 ...

  2. 在Linux下的找不同-打补丁

    Q:为什么要找不同,为什么要打补丁? A: 在Linux应用中,作为DBA,我们知道MySQL跑在Linux系统之上,数据库最重要的追求就是性能,"稳"是重中之重,所以不能动不动就 ...

  3. weblogic补丁下载与安装补丁的方法

    文章目录1.根据漏洞报告下载补丁2.补丁包上传解压到Linux3.关于OPatch4.安装补丁4.1单个补丁安装4.2查看已安装的补丁4.3多个补丁安装4.4单个补丁回滚4.5多个补丁回滚4.6验证补 ...

  4. linux制作RPM包

    制作rpm包 1.制作流程1.1 前期工作 1)创建打包用的目录rpmbuild/{BUILD,SPECS,RPMS, SOURCES,SRPMS} 建议使用普通用户,在用户家目录中创建 2)确定好制 ...

  5. python在linux制作图形界面(snack)

    snack是一个用于在linux制作图形界面(GUI)的模块,该模块由c编写,而且redhat的系统都自带这个模块. 1.获取模块 虽然redhat系统会自带这个模块,但是直接去import snac ...

  6. win10 + linux 制作双系统教程(我本身是win10系统)

    1.制作启动U盘 准备工作: .linux镜像 .硬盘空余空间>8G,越大越好 .制作启动U盘的软件 .最好3.0U盘一个>4G 下载启动软件的工具(UItraIOS制作的U盘启动盘无法安 ...

  7. linux vim vi编辑时撤销输入操作

    linux vim vi编辑时撤销输入操作 1,esc退出输入状态 2,u 撤销上次操作 3,ctrl+r 恢复撤销

  8. diff生成补丁与patch打补丁

    1.使用diff生成补丁: diff是Linux下的文件比较命令,参数这里就不说了,直接man一下就行了,不仅可以比较文件,也可以比较两个目录,并且可以将不同之处生成补丁文件,其实就是一种打补丁的命令 ...

  9. Win10 PC一周年更新正式版14393.447 32位/64位更新补丁KB3200970下载 Flash补丁Kb3202790下载

    微软在今天凌晨推送了Win10 PC一周年更新正式版14393.447,本次更新补丁代号为KB3200970,面向Win10一周年更新正式版的PC用户. 更新日志 • 提升了多媒体音频.远程桌面以及I ...

随机推荐

  1. JQuery数字类型验证正则表达式

    有朋友整了一些关于js与jquery的数字类型验证正则表达式代码,下面我给大家再整理一下. 这里包括了数字验证实现与测试实例了,大家可参考. js验证数字正则表达式 代码如下: //检测是否为数字和小 ...

  2. mybatis定义拦截器

    applicationContext.xml <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlS ...

  3. 嵌套类,PIMPL

    body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...

  4. eureka-4-eureka server 高可用

    Eureka Server 可以通过运行多个实例并相互注册实现高可用部署.Eureka Server 实例之间会彼此增量同步信息,确保所有节点信息一致. 关键点: 配置: eureka.client. ...

  5. zset类型以及其操作

    sorted set类型 sorted sets类型以及其操作zset是set的一格升级版本,它在set的基础上增加了一格顺序属性,这一属性在添加元素的同时可以指定,每次指定后,zset会自动重新按照 ...

  6. 2017北京赛区J题

    类型:三维动态规划 题目链接 题意: 合并连续石头块,最终要合并成一块,求时间最短,每次只能连续合并L~R块石头,不能合并成一块时输出-1 题解: 利用动态规划解决两种分问题 dp[l][r][k]: ...

  7. LaText中插入带上下限的求和符号

    效果如下: LaTex命令如下: \begin{equation} \label{8} z_{i}(k+1)=\sum_{j\in N_{i}(k)} a_{ij}(k)z_{i}(k),z_{i}( ...

  8. 获取url的hash值

    location是javascript里边管理地址栏的内置对象,比如location.href就管理页面的url,用location.href=url就可以直接将页面重定向url. 而location ...

  9. vue.js 源代码学习笔记 ----- core scedule.js

    /* @flow */ import type Watcher from './watcher' import config from '../config' import { callHook } ...

  10. 从互联网进化的角度看AI+时代的巨头竞争

    今天几乎所有的互联网公司在谈论和布局人工智能,收购相关企业.人工智能和AI+成为当今科技领域最灸手可热的名词,关于什么是AI+,其概念就是用以表达将"人工智能"作为当前行业科技化发 ...