patch命令的用法

patch是个什么东西?有什么用呢?

从一个实际的例子说起吧,看一些linux上crond 的源码: http://ftp.redhat.com/pub/redhat/linux/enterprise/5Server/en/os/SRPMS/vixie-cron-4.1-72.el5.src.rpm

打开该文件后,会发现里面有很多的patch文件,要想看到完整的cron的源文件,需要自己打这些patch,如果不了解patch命令还不太好办。

 

首先解压该文件,目录结构大概为:

/

1.patch

2.patch

vixie-cron-4.1.tar.gz     // 打patch之前的源文件

vixie-cron.spec

 

首先从vixie-cron.spec中grep出来要打的patch:

grep -i “^patch” vixie-cron.spec  |awk ‘{print $2}’ >~/phpor

然后解压vixie-cron-4.1.tar.gz

tar -zxf vixie-cron-4.1.tar.gz

cd vixie-cron-4.1

while read p; do patch -p1 <../$p; done <~/phpor

 

这样就ok了。

 

关于patch命令的参考资料:

http://blog.chinaunix.net/uid-9525959-id-2001542.html

 

patch练习:

1. 创建一个patch文件

diff -uN oldfile newfile>1.patch

2. 打patch

patch <1.patch

 

给目录打patch

1. diff -uNr olddir newdir>2.patch

2. 打patch

patch <2.patch

 

diff 参数说明:

-u : 使用统一的输出格式 (默认的格式打patch不太好使)

-N: 对于目录比较来讲,新文件也打进去

-r: 对于目录来讲,递归处理子目录

 

 

 

 

留下评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据