patch -p0 和patch -p1的区别
原文地址:http://apps.hi.baidu.com/share/detail/22993397
patch -p0 和patch -p1的区别
blog.chinaunix.net/u1/48180/showart_1868730.html
下面是我出现的错误备份一下,//原因是patch的目录不对,应该在kernel同级的drivers/usb/目录下进行的哦
[root@localhost usb]# tar zxvf usb-2.6.12LE06.patch.tar.gz
usb-2.6.12.patch
[root@localhost usb]# ls
usb-2.6.12LE06.patch.tar.gz usb-2.6.12.patch
[root@localhost usb]# patch -p1 < usb-2.6.12.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 -ruN usb_old/Makefile usb/Makefile
|--- usb_old/Makefile 2005-06-19 19:09:13.000000000 +0200
|+++ usb/Makefile 2005-11-06 00:44:46.000000000 +0100
--------------------------
File to patch:
Skip this patch? [y] y
Skipping patch.
1 out of 1 hunk ignored
can't find file to patch at input line 15
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff -ruN usb_old/media/Kconfig usb/media/Kconfig
|--- usb_old/media/Kconfig 2005-06-19 17:49:07.000000000 +0200
|+++ usb/media/Kconfig 2005-11-25 21:14:39.000000000 +0100
--------------------------
File to patch:
Skip this patch? [y] y
Skipping patch.
1 out of 1 hunk ignored
can't find file to patch at input line 38
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff -ruN usb_old/media/Makefile usb/media/Makefile
|--- usb_old/media/Makefile 2005-06-19 17:49:07.000000000 +0200
|+++ usb/media/Makefile 2005-11-05 23:05:56.000000000 +0100
--------------------------
File to patch:
Skip this patch? [y] y
Skipping patch.
1 out of 1 hunk ignored
patching file media/spca5xx/cs2102.h
patching file media/spca5xx/hdcs2020.h
patching file media/spca5xx/hv7131b.h
patching file media/spca5xx/hv7131c.h
patching file media/spca5xx/icm105a.h
patching file media/spca5xx/Makefile
patching file media/spca5xx/Makefile.2.4
patching file media/spca5xx/Makefile.org
patching file media/spca5xx/pas106b.h
patching file media/spca5xx/pb0330.h
patching file media/spca5xx/sn9cxxx.h
patching file media/spca5xx/sp5xxfw2.dat
patching file media/spca5xx/sp5xxfw2.h
patching file media/spca5xx/spca5xx.h
patching file media/spca5xx/spcaCompat.h
patching file media/spca5xx/spca_core.c
patching file media/spca5xx/spcadecoder.c
patching file media/spca5xx/spcadecoder.h
patching file media/spca5xx/spcausb.h
patching file media/spca5xx/tas5130c.h
patching file media/spca5xx/zc3xx.h
[root@localhost usb]#
#####################
下面来自无名博客: vcdog.cublog.cn 的具体内容:
今天上QQ的时候发现eva不能用了,后来又看到了解决方法,所以想打个补丁,不过不会:-)。后来查了查明白了,写了个总结,分享一下,也不知道以前有没有这方面的东西,希望我这个不是多余的。
创建补丁文件:
或者
diff -Naur 旧的文件 新的文件 > patch文件
对于目录层数的一些限制
在创建patch的时候文件夹的层数应当是一样的,比如
+++ new/modules/pcitableTue Dec 19 20:05:41 2000
这样是可以的。
而
+++ new/modules/pcitableTue Dec 19 20:05:41 2000
这样做可能会有一些问题。
如何使用patch
对于一个patch文件,有两种常用使用方法:
1.
2.
patch命令里面的层数(-p0?-p1?)
参数-p来指定从第几层开始比较。比如有一个patch文件的补丁头是这样的:
+++ new/modules/pcitableTue Dec 19 20:05:41 2000
如果使用参数-p0,就表示从当前目录,找一个叫作new的目录,在它下面找一个叫modules的目录,再在它下面找一个叫pcitableMon的目录。
如果使用参数-p1,就表示忽略第一层,从当前目录找一个叫modules的目录,在它下面找一个叫modules的目录。这样会忽略掉补丁头提到的new目录。
依此类推。
patch文件的结构
补丁头
补丁头是分别由---/+++开头的两行,用来表示要打补丁的文件。
一个补丁文件中的多个补丁
一个补丁文件中可能包含以---/+++开头的很多节,每一节用来打一个补丁。所以在一个补丁文件中可以包含好多个补丁。
块
块是补丁中要修改的地方。它通常由一部分不用修改的东西开始和结束。他们只是用来表示要修改的位置。他们通常以@@开始,结束于另一个块的开始或者一个新的补丁头。
块的缩进
块会缩进一列,而这一列是用来表示这一行是要增加还是要删除的。
块的第一列
+号表示这一行是要加上的。
-号表示这一行是要删除的。
没有加号也没有减号表示这里只是引用的而不需要修改。
一个patch的例子
--- old/modules/pcitableMon Sep 27 11:03:56 1999
+++ new/modules/pcitableTue Dec 19 20:05:41 2000
@@ -1,4 +1,6 @@
0x0e110xae10"cpqarray""Compaq|Smart-2/P RAID Controller"
+0x10000x0010"cpqarray""Compaq|Integrated Array Controller"
+0x10110x0046"cpqarray""Compaq|Smart-2/P RAID Controller"
0x0e110xae32"tlan""Compaq|Netelligent 10/100"
0x0e110xae34"tlan""Compaq|Netelligent 10"
0x0e110xae35"tlan""Compaq|Integrated NetFlex-3/P"
@@ -21,6 +23,7 @@
0x10000x000f"ncr53c8xx""Symbios|53c875"
0x10000x0012"ncr53c8xx""Symbios|53c895a"
0x10000x008f"ncr53c8xx""Symbios|53c875J"
+0x10000x000a"sym53c8xx""Symbios|53c1510"
0x10000x0701"yellowfin""Symbios|83C885 gigabit ethernet"
0x10000x0702"yellowfin""Symbios|Yellowfin G-NIC gigabit ethernet"
0x10110x0001"tulip""DEC|DECchip 21050"
--- old/usr/share/kudzu/pcitableSun Sep 26 17:11:23 1999
+++ new/usr/share/kudzu/pcitableTue Dec 19 20:05:41 2000
@@ -15,6 +15,8 @@
0x0e110x3034"unknown""Compaq|QVision 1280/p"
0x0e110x4000"unknown""Compaq|4000 [Triflex]"
0x0e110xa0f3"ignore""Compaq|Triflex PCI to ISA Bridge"
+0x10000x0010"cpqarray""Compaq|Integrated Array Controller"
+0x10110x0046"cpqarray""Compaq|Smart-2/P RAID Controller"
0x0e110xae10"cpqarray""Compaq|Smart-2/P RAID Controller"
0x0e110xae29"unknown""Compaq|MIS-L"
0x0e110xae2a"unknown""Compaq|MPC"
@@ -46,6 +48,7 @@
0x10000x000f"ncr53c8xx""Symbios|53c875"
0x10000x0012"ncr53c8xx""Symbios|53c895a"
0x10000x008f"ncr53c8xx""Symbios|53c875J"
+0x10000x000a"sym53c8xx""Symbios|53c1510"
0x10000x0701"yellowfin""Symbios|83C885 gigabit ethernet"
0x10000x0702"yellowfin""Symbios|Yellowfin G-NIC gigabit ethernet"
0x10000x0901"unknown""Symbios|61C102"
分析
这个例子是由命令
创建的。不过最好是用命令diff -Naur来代替diff -u。
它修改了两个文件,new/modules/pcitable和new/usr/share/kudzu/pcitable。
第一个补丁头包含两个块,分别增加了两行和一行。
这个是参考了这篇文章http://www.cpqlinux.com/patch.html来总结翻译。由于刚刚接触这些东西,很多地方可能翻译的不恰当,尤其是一些术语,如有发现问题,请给我留言说明,以便我来改正,谢谢。
patch -p0 和patch -p1的区别相关推荐
- 打patch p0 p1区别
如何使用patch 对于一个patch文件,有两种常用使用方法: 1.代码:cat new-patch | patch -p0 2.代码:patch -p0 < new-patch patch命 ...
- git 生成多个patch_如何用git命令生成Patch和打Patch
在程序员的日常开发与合作过程中,对于code的生成patch和打patch(应用patch)成为经常需要做的事情.什么是patch?简单来讲,patch中存储的是你对代码的修改,生成patch就是记录 ...
- [git 基础] 生成patch 和 打patch 的实例
简洁点啊,我看 网上 很多搞得很复杂的介绍, 然后,最关键,他们 这边版本不仅抄来抄去,而且,还是一个英文 谷歌网页翻译版本. 搞得好复杂, 还没讲 清楚. 1生成Patch 直接就是在GUI上,选一 ...
- 如何生成Patch及打patch
如何生成patch: 1. 修改代码 2. git add 添加修改的代码 3. git commit 提交代码 4. git format-patch -1生成Patch 如何打patch: 1. ...
- 如何用git命令生成Patch和打Patch(git format-Patch和git am)
在程序员的日常开发与合作过程中,对于code的生成patch和打patch(应用patch)成为经常需要做的事情. 什么是patch?简单来讲,patch中存储的是你对代码的修改 什么是生成patch ...
- git生成patch和打patch
日常开发与合作过程中,对于code生成patch和打patch(应用patch)成为经常需要做的事情,使用方法(直接给出一些examples): 生成patch git diff > xxx.p ...
- Linux合入patch命令,Linux patch命令
Linux patch命令 Linux patch命令用于修补文件. patch指令让用户利用设置修补文件的方式,修改,更新原始文件.倘若一次仅修改一个文件,可直接在指令列中下达指令依序执行.如果配合 ...
- 使用Git生成patch和应用patch
1. 在git源码目录下执行 git format-patch <old_sha>...<new_sha> -o <patch_dir> 如 git format- ...
- git补丁操作:git生成patch和应用patch
一.生成patch 1.拉取代码仓 git clone xxx代码仓地址 2.在clone到本地的代码目录中,例如对README.md文件进行了修改.然后使用 git status 命令查看工作目录和 ...
最新文章
- sybase Invalid command line argument 'and'.
- 哈尔滨理工大学软件与微电子学院程序设计竞赛 题解
- Windows下Caffe的学习与应用(三)——使用OpenCV3调用自己训练好的Caffe模型进行图像分类
- Geospark从Shapefile中加载RDD
- mysql 体系结构不匹配_指定的DSN包含驱动程序和应用程序之间的体系结构不匹配...
- 刷机提示图像和设备不匹配_安卓5.0升级失败如何解决 安卓5.0刷机失败解决方法介绍【教程】...
- [实验流体力学][Matlab] pi 定理的应用
- ajax的url怎么将后缀补上_球形门锁怎么拆装?球形门锁安装的方法都包括哪些?
- Buses and People CodeForces 160E 三维偏序+线段树
- Java程序员可以做哪些副业?
- matlab电压灵敏度矩阵,一种基于线性化潮流的配电网灵敏度计算方法与流程
- 如何有效管理和快速盘点固定资产?
- OC--Foundation框架
- php直接读取导入excel文件内容
- java 判断文章的重复率_5个避免意外论文重复率高的方法
- 【leetcode刷题】 64.数组的度——Java版
- Mac系统 PDF转换各种文件格式安装使用教程【PDF Converter Master】
- 共建健康网络环境 戮默科技受邀参与制定新《标准》
- 江南大学计算机考研学硕报录比,江南大学考研报考录取比例
- Day16 Java异常处理
热门文章
- 1.1.1.1校园网_还担心断网?快试试清华校园网自动连接程序
- Windows 环境下载安装Docker
- Spark机器学习MLlib系列1(for python)--数据类型,向量,分布式矩阵,API
- 【转】python删除小记
- For循环中不可以嵌套RDD操作
- Ubuntu 下 使用 adb logcat 显示 Android 日志
- Android 5.1 修改系统默认语言
- linux驱动中printk的使用注意事项
- android的helloworld工程目录学习
- WINCE6.0+S3C2443下ADC在电池驱动应用