• linux 打补丁 2原理


    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 2016-05-26 06:57:56.999206666 +0000 +++ new/a/b/foo.txt 2016-05-26 06:59:03.160497528 +0000 @@ -1,2 +1,2 @@ -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 可以命令行上指定 工作目录

  • 相关阅读:
    4.关于QT中的QFile文件操作,QBuffer,Label上加入QPixmap,QByteArray和QString之间的差别,QTextStream和QDataStream的差别,QT内存映射(
    PlSql加入数据库链接
    UserScan的处理流程分析
    第八十八题(金山笔试题,字符串移动)
    4Sum_leetCode
    LeetCode Add Binary
    Hibernate or JPA Annotation中BLOB、CLOB注解写法
    配置Nginx防止直接用IP訪问Webserver
    Java集合系列之TreeMap源代码分析
    使用Application Loader上传APP流程解读[APP公布]
  • 原文地址:https://www.cnblogs.com/zengkefu/p/5531701.html
Copyright © 2020-2023  润新知