Linux源代码补丁文件如何安装
时间:2019-11-20 08:54:10 来源:igfitidea点击:
在Linux中,Linux补丁文件使用up2date或yum命令安装。
而Linux和UNIX源软件通常带有安全性和其他补丁。源代码补丁文件是通过patch命令来安装的。
patch
命令获取一个包含由diff程序生成的差异列表的补丁文件patchfile,并将这些差异应用于一个或多个原始文件,从而生成修补版本。通常,打补丁的版本会代替原始版本。
patch命令语法
基本语法如下:
$ patch < patch.file $ patch source.code.file < patch.file $ patch -p LEVEL < {/path/to/patch/file}
要应用补丁,可以在shell中运行以下命令:
$ patch < /path/to/file
在此示例中,使用patch.diff文件修补foo.c:
$ patch foo.c < patch.diff
可以使用-R选项撤消或反转补丁:
$ patch -R < /path/to/file
如何创建补丁?
要创建补丁,可以运行以下diff命令:
$ diff -u oldfile-name-here newfile-name-here > patch.diff
示例:在类似Linux或Unix的系统上为hello.c示例程序创建和应用补丁
创建hello.c,如下所示:
#include<stdio.h> main(){ printf("Hello, world!\n"); }
复制hello.c;这两个文件必须位于同一目录中:
$ cp hello.c hello-new.c
编辑文件hello-new.c,做一些修改。
#include<stdio.h> int main(void){ printf("Hello, world!\n"); return 0; }
接下来,使用命令diff创建一个名为hello.patch的统一diff补丁文件:
$ diff -u hello.c hello-new.c > hello.patch
要查看补丁,请使用cat命令,如下所示:
$ cat hello.patch
输出示例:
--- hello.c 2014-04-29 17:59:49.000000000 +0530 +++ hello-new.c 2014-04-29 18:00:43.000000000 +0530 @@ -1,5 +1,6 @@ #include<stdio.h> -main(){ +int main(void){ printf("Hello, world!\n"); + return 0; }
要从hello.patch应用补丁,请输入:
### The hello.patch patchfile knows the name of the file to be patched ## patch < hello.patch
输出示例:
patching file hello.c
最后,这是我更新和修补后的hello.c:
$ cat hello.c
输出示例:
#include<stdio.h> int main(void){ printf("Hello, world!\n"); return 0; }
您现在可以编译程序:
$ cc hello.c -o hello
如下运行:
$ ./hello
输出示例:
Hello, world!
在整个源代码树上应用补丁
首先,复制源树:
## Original source code is in lighttpd-1.4.35/ directory ## $ cp -R lighttpd-1.4.35/ lighttpd-1.4.35-new/
转到lighttpd-1.4.35-new目录,然后根据您的要求进行更改:
$ cd lighttpd-1.4.35-new/ $ vi geoip-mod.c $ vi Makefile
最后,使用以下命令创建补丁:
$ cd .. $ diff -rupN lighttpd-1.4.35/ lighttpd-1.4.35-new/ > my.patch
您可以使用my.patch文件通过上述patch命令在另一台计算机/服务器上修补lighttpd-1.4.35源代码:
patch -p1 < my.patch
有关更多信息和用法,请参见patch和其他命令的手册页。