1.创建目录 demo

cd demo
有bug文件a.txt:
当前目录为demo

mkdir -p  old/a/p

vi   old/a/p/foo.txt

old_line_1

old_line_2
bug 修复后的foo.txt:
当前目录为demo

mkdir -p  new/a/p

vi   new/a/p/foo.txt

new_line_1

new_line_2
补丁产生:
当前目录为demo
LC_ALL=C TZ=UTC0 diff -Naur old new > foo.patch
补丁内容:
当前目录为demo
[root@monitor demo]# cat foo.patch
diff -Naur old/a/b/foo.txt new/a/b/foo.txt
--- old/a/b/foo.txt -- ::56.999206666 +
+++ new/a/b/foo.txt -- ::03.160497528 +
@@ -, +, @@
-old_line_1
-old_line_2
+new_line_1
+new_line_2
模拟打补丁:(补丁针对 old/a/b.foo.txt文件打补丁)
当前目录demo

[root@monitor demo]# patch -p0 <foo.patch
patching file old/a/b/foo.txt

当前目录demo

[root@monitor demo]# mkdir xx
[root@monitor demo]# cp foo.patch xx
[root@monitor demo]# patch -p0 < xx/foo.patch
 patching file old/a/b/foo.txt

cd xx

当前目录为demo/xx

[root@monitor xx]# patch -p0 < foo.patch

can't find file to patch at input line 4
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff -Naur old/a/b/foo.txt new/a/b/foo.txt
|--- old/a/b/foo.txt 2016-05-26 06:57:56.999206666 +0000
|+++ new/a/b/foo.txt 2016-05-26 06:59:03.160497528 +0000

说明在当前目录不能找到  old/a/b/foo.txt (在demo/xx目录下找到文件与目录去补丁

P0:你当前的目录位置,去找old/a/b/foo.txt

p1:你当前目录位置去找a/b/foo.txt,p1会掉old/,到当前目录找a/b/foo.txt

p2:你当前目录位置去找a/b/foo.txt,p2会掉old/a,到当前目录找b/foo.txt

p3:你当前目录位置去找a/b/foo.txt,p3会掉old/a/b,到当前目录找foo.txt
结论:决定补丁如何补:你的补丁所在的目录(你该把补丁放在那里)
P(N)决定去查找要补丁的文件路径,不同的N,会掉某部分路径后,再在当前目录,找已除掉后路径,找文件去补丁
P(N)与当前目录关系很大,与补丁在那里没有关系 patch -d xx P(N) 〈 XX 可以命令行上指定 工作目录

linux 打补丁 2原理的更多相关文章

  1. Linux数据包路由原理、Iptables/netfilter入门学习

    相关学习资料 https://www.frozentux.net/iptables-tutorial/cn/iptables-tutorial-cn-1.1.19.html http://zh.wik ...

  2. Linux打补丁的一些问题

    linuxpatchlinux内核文档commandheader类unix操作系统有一个很有趣的特性就是源代码级的补丁包.在windows上我们打补丁都是运行一个可执行的程序,然后就可以把补丁打完了, ...

  3. 动态替换Linux核心函数的原理和实现

    转载:https://www.ibm.com/developerworks/cn/linux/l-knldebug/ 动态替换Linux核心函数的原理和实现 在调试Linux核心模块时,有时需要能够实 ...

  4. Linux系统的启动原理

    Linux系统的启动原理 RHEL的启动原理BIOS自检-MBR-启动GRUB-加载内核-systemd的init进程 systemd的初始化进程加载需要的服务,挂载文件系统/etc/fstabsys ...

  5. linux seccomp使用和原理

    linux seccomp使用和原理 概要 linux的沙箱机制,可以限制进程对系统调用的访问,从系统调用号,到系统调用的参数,都可以检查和限制 有两种模式 SECCOMP_MODE_STRICT, ...

  6. Linux磁盘与文件系统原理

    这一章主要是原理性的,介绍了Linux文件系统的运作原理.涉及到很多计算机组成和操作系统的原理性知识,这部分知识很多都忘了,在这里复习下.    我们只看本章第1,2节.--------------- ...

  7. Linux内核补丁批量自动下载工具

    Linux kernel官网cgit工具不支持按变更代码进行补丁搜索,想到个办法就是把补丁都抓下来,这样可以在本地搜索.花了2个小时写了个小工具,话不多说,直接看效果: E:\docs\TOOLS\p ...

  8. kkjcre1p: unable to spawn jobq slave process, slot 0, error 1089(Linux x86_64)补丁

    在shutdown immediately的时候,alert Log出现如下错误信息,并且不能正常关闭 kkjcre1p: unable to spawn jobq slave process, sl ...

  9. linux下DHCP服务原理总结

    DHCP(全称Dynamic host configuration protocol):动态主机配置协议DHCP工作在OSI的应用层,可以帮助计算机从指定的DHCP服务器获取配置信息的协议.(主要包括 ...

随机推荐

  1. 调色板QPalette类用法详解(附实例、源码)

    http://blog.csdn.net/rl529014/article/details/51589096

  2. Spring学习笔记(二)

    1.Spring MVC 返回json数据 <bean class="org.springframework.web.servlet.mvc.annotation.Annotation ...

  3. linux c/c++ GDB教程详解

    学习使用了GDB一段时间后,发现它真的好强大!好用! GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或许,各位比较喜欢那种图形界面方式的,像VC.BCB等IDE的调试,但如果你是在U ...

  4. Emeditor所有快捷键操作

    新建文本    Ctrl+N         创建一个新的文本文件. 打开         Ctrl+O    打开一个已存在的文件. 保存         Ctrl+S     保存当前文件. 重新 ...

  5. ORA-12545:Connect failed beacuse target host or object does not exist

    更换计算机名,重新启动系统后 oracle 的监听器就无法正常启动, 总是提示ORA-12545:Connect failed beacuse target host or object does n ...

  6. java web的一些特殊用法(一)

    1.查看jquery ajax请求的数据的具体格式 很多时候,我们需要查看到ajax返回时的具体格式才知道怎么去解析他.在最原始的ajax写法中,可以通过xmlhttp.responseText查看到 ...

  7. 兼容ie\firefox\chrome的cursor

    cursor:hand 与 cursor:pointer 的效果是一样,都像手形光标. 但用FireFox浏览时才注意到使用cursor:hand在FireFox.chorme里并被支持.cursor ...

  8. ZOJ 3795 Grouping

    大致题意是给n个人和m组关系,每组关系都是两个人s和t,表示s年龄不小于t的年龄,然后让你把这n个人分组,使得任何一个组里面的任意两人都不能直接或间接的得出这两个人的年龄大小关系. 思路:根据给出的关 ...

  9. 添加iis的wolf、wolf2、json支持

    1.打开“mime类型”,添加: 如下“文件扩展名”和“mime类型”: .woff            application/x-font-woff .woff2          applic ...

  10. seg格式文件的分析

    s ,r, c1, c2   第r行的c1列到 c2列的值为s