Linux 补丁生成与使用
我们在升级Linux 内核的时候,难免会接触到补丁的知识。下面对如何生成补丁和如何打补丁作讲解。
生成补丁:
制作 hello.c 和 hello_new.c 两个文件如如下所示。
➜ diff ls
hello.c hello_new.c hello_test.c hi.patch
➜ diff cat hello.c
#include "stdio.h"
int main(int argc ,char **argv)
{
printf("Hello World");
}
➜ diff cat hello_new.c
#include "stdio.h"
int main(int argc ,char **argv)
{
printf("Hello World\n");
return ;
}
使用 diff -uN 命令 进行生成patch
➜ diff diff -uN hello_new.c hello.c > hi.patch
➜ diff cat hi.patch
--- hello_new.c -- ::23.679704122 +
+++ hello.c -- ::59.190677641 +
@@ -, +, @@
#include "stdio.h"
int main(int argc ,char **argv)
{
- printf("Hello World\n");
- return ;
+ printf("Hello World");
}
至此,patch 已经创建完毕。
之后,我们进行使用 patch 命令 对 hello.c 文件进行打补丁。
➜ diff patch -p0 <hi.patch
patching file hello.c
Reversed (or previously applied) patch detected! Assume -R? [n] y
➜ diff cat hello.c
#include "stdio.h"
int main(int argc ,char **argv)
{
printf("Hello World\n");
return ;
}
➜ diff ls
hello.c hello.c.orig hello_new.c hello_test.c hi.patch
➜ diff cat hello.c.orig
#include "stdio.h"
int main(int argc ,char **argv)
{
printf("Hello World");
}
➜ diff cat hello.c
#include "stdio.h"
int main(int argc ,char **argv)
{
printf("Hello World\n");
return ;
}
➜ diff
可见,补丁已经成功应用,并且生成了 .orig 源文件。 --backup-if-mismatch 选项,可以不进行生成orig 文件。
➜ diff patch -p0 --no-backup-if-mismatch < hi.patch
patching file hello.c
Reversed (or previously applied) patch detected! Assume -R? [n] y
➜ diff ls
hello.c hello_new.c hello_test.c hi.patch
➜ diff cat hello.c
#include "stdio.h"
int main(int argc ,char **argv)
{
printf("Hello World\n");
return ;
}
diff 和 patch 命令介绍:
-pnum or --strip=num
Strip the smallest prefix containing num leading slashes from each file name found in the patch file. A sequence of one or more adjacent slashes is counted as a
single slash. This controls how file names found in the patch file are treated, in case you keep your files in a different directory than the person who sent out
the patch. For example, supposing the file name in the patch file was
/u/howard/src/blurfl/blurfl.c
setting -p0 gives the entire file name unmodified, -p1 gives
u/howard/src/blurfl/blurfl.c
without the leading slash, -p4 gives
blurfl/blurfl.c
and not specifying -p at all just gives you blurfl.c. Whatever you end up with is looked for either in the current directory, or the directory specified by the -d
option.
具体的使用说明,可以使用 man diff 和 man patch 命令来进行查看。
保持更新,转载请注明出处。
Linux 补丁生成与使用的更多相关文章
- Linux下生成patch和打patch
转自:http://blog.csdn.net/dl0914791011/article/details/17299103 通过diff工具生成补丁, patch工具打上补丁. 在使用diff之前, ...
- linux下生成core dump文件方法及设置
linux下生成core dump文件方法及设置 from:http://www.cppblog.com/kongque/archive/2011/03/07/141262.html core ...
- random and password 在Linux下生成crypt加密密码的方法,shell 生成指定范围随机数与随机字符串
openssl rand -hex n (n is number of characters) LANG=c < /dev/urandom tr -dc _A-Z-a-z-0-9 | head ...
- linux c生成唯一文件名称
linux c生成唯一文件名称可用mktemp()或mkstemp()函数
- 【linux】在linux上生成SSH-key 简单原理介绍+生成步骤
1.首先什么是SSH Secure Shell (SSH) 是一个允许两台电脑之间通过安全的连接进行数据交换的网络协议.通过加密保证了数据的保密性和完整性.SSH采用公钥加密技术来验证远程主机,以及( ...
- linux 模拟生成 CAN 设备
/************************************************************************************** * linux 模拟生成 ...
- 1.Linux下生成密钥
1.Linux下生成密钥 ssh-keygen的命令手册,通过”man ssh-keygen“命令: 通过命令”ssh-keygen -t rsa“ 生成之后会在用户的根目录生成一个 “.ssh”的文 ...
- Linux中生成Core Dump系统异常信息记录文件的教程
Linux中生成Core Dump系统异常信息记录文件的教程 http://www.jb51.net/LINUXjishu/473351.html
- linux c 生成uuid
/********方法一**********/#include <stdio.h> #include <stdlib.h> #include <string.h> ...
随机推荐
- 安装win8/win10提示无法在驱动器0分区上安装windows解决方法
在通过U盘或光盘安装win8/win8.1/win10系统时,不少用户遇到无法安装的问题,提示“无法在驱动器0的分区1上安装windows”,格式化分区1也不能解决,进而提示Windows无法安装到这 ...
- Gold Rush(hnu13249)
Gold Rush Time Limit: 2000ms, Special Time Limit:5000ms, Memory Limit:65536KB Total submit users: 15 ...
- 【C#数据结构系列】线性表
一:线性表 1.1:定义:零个或多个数据元素的有限序列 1.2: 线性表元素个数n定义为线性表的长度,n = 0称为空表,i 为数据元素ai在线性表中的位序. 1.3:满足线性表的条件:(1):有序, ...
- 无法外网访问VM中的hadoop yarn的8088端口
1.检查是否正确的启动了resourcemanager服务 若是没有启动,请检查yarn-site-xml配置 2.若是启动了 1.检查客户机和虚拟机之间是否能够相互ping通 2.检查虚拟机防火墙是 ...
- POJ1811(SummerTrainingDay04-G miller-rabin判断素性 && pollard-rho分解质因数)
Prime Test Time Limit: 6000MS Memory Limit: 65536K Total Submissions: 35528 Accepted: 9479 Case ...
- CSS笔记——属性选择器
1.存在和值(Presence and value)属性选择器这些属性选择器尝试匹配精确的属性值:[attr]:该选择器选择包含 attr 属性的所有元素,不论 attr 的值为何.[attr=val ...
- 【代码笔记】iOS-FMDBDemo
一,效果图. 二,工程图. 三,代码. ViewController.h #import <UIKit/UIKit.h> #import "FMDatabase.h" ...
- JQuery 节点监听
DOMSubtreeModified: 在DOM结构发生任何变化的时候.这个事件在其他事件触发后都会触发: $(".attr_box").bind("DOMSubtree ...
- Redis Linux版安装详解
Redis介绍 我的Linux系统是CentOS7 1.安装Redis 官方下载地址:http://download.redis.io 使用Linux下载:wget http://download.r ...
- BCG库的一个bug
作者:朱金灿 来源:http://blog.csdn.net/clever101 同事在使用BCG库图表组件(BCG库的版本为BCGCBPRO1510)时遇到一个问题,就是图表标题总是出现乱码, ...