" 目录:RHCA+ -> 6 软件仓库 -> 12 patch命令(更新补丁) "

按照补丁文件进行更新;语法格式为:patch -pn < 补丁文件
给软件更新补丁后,要重新执行make编译,相较于安装少了./configure步骤
给旧文件打补丁依赖的不是新文件,而是补丁文件
|--------|-----------------------------------------------------------|
| 参数 | 作用 |
| -pn | n为数字(例p0、p1、p2),在补丁文件中所记录的目录中取消几个/,n就是几;去掉目录的目的是和当前所在目录匹配 |
| -R(大写) | 还原补丁,恢复用补丁文件修改过的源文件 |
例:当前位于/root/test/目录下,补丁文件中记录的文件目录为/root/test/dd.txt
-p1(在补丁文件目录中取消一级目录):代表路径root/test/root/test/old.txt
-p2(在补丁文件目录中取消二级目录):代表路径/root/test/test/old.txt
-p3(在补丁文件目录中取消三级目录):代表路径/root/test/old.txt,这个路径才是对的
1、用补丁文件更新原文件内容
root@wuzuniao \~# cat 12.patch #查看补丁文件路径(补丁文件可用diff命令生成)
--- 1.txt 2023-03-26 22:01:26.500034822 +0800
+++ 2.txt 2023-04-05 21:55:28.978502961 +0800
@@ -1,3 +1,4 @@
+wuzuniao
root@wuzuniao \~# patch -p0 < 12.patch #更新原文件1.txt;p0是因为补丁文件中记录的文件目录就在当前目录下,所以不需要取消任何/
patching file 1.txt
root@wuzuniao \~# cat 1.txt #查看到内容已被更改
wuzuniao
root@wuzuniao \~# patch -R < 12.patch #还原被补丁修改过的源文件
patching file 1.txt
root@wuzuniao \~# cat 1.txt #查看到还原成功
root@wuzuniao \~#