频 道 直 达 - 新闻 - 读书 - 培训 - 教程 - 前沿 - 组网 - 系统应用 - 安全 - 编程 - 存储 - 操作系统 - 数据库 - 服务器 - 专题 - 产品 - 案例库 - 技术圈 - 博客 - BBS
51CTO.COM_中国领先的IT技术网站
找资料:

撤消一个linux补丁

作者: coly译 出处:中国Linux论坛  (  ) 砖  (  ) 好  评论 ( ) 条  进入论坛
更新时间:2006-11-29 14:05
关 键 词:补丁  撤消  linux  patch
阅读提示:如果你对新打的补丁不很满意,而你想回复到以前较早的内核版本去,那么我们从上面描述的第6步开始逆顺序操作即可

如果你对新打的补丁不很满意,而你想回复到以前较早的内核版本去,那么我们从上面描述的第6步开始逆顺序操作即可(为什么要采取撤消补丁的方式来回到先前版本的理由很多,我们就不说了):
a) 将内核源代码的版本恢复到先前的名字:
mv linux-2.4.5kh3 linux-2.4.5kh2
b) 执行那条奇妙的patch命令:
patch -RE -p0 < patch-2.4.5kh3
这里,-E选项说明如果发现了空文件,那么就删除它;-R选项说明在补丁文件中的“新”文件和“旧”文件现在要调换过来了(实际上就是给新版本打补丁,让它变成老版本,但是这里是否一定要先更改源代码的目录名我还不明确,需要作实验)。
这里有一个疑问,就是为什么要进行代码目录的改名?
*****************************************************************************
避免make distclean操作
*****************************************************************************
根据文档/usr/src/linux/Documentation/SubmittingPatches所描述的,运行一个没有make distclean的递归diff,使用如下命令:
diff -ruN -X dontdiff linux-2.4.5kh2 linux-2.4.5kh3 > patch.diff
dontdiff是一个可执行文件,它可以从下面这个网址进行下载:
http://www.moses.uklinux.net/patches/dontdiff
但是,就我而言,我还是不知道为什么要这么做,或者说不进行make distclean的目的是什么。如果有那位朋友知道的话,非常感谢你告诉我一声,或者是把这部分内容补充到这份文档中。
制作一个官方的补丁文件
你已经安装了一个新的Linux,我们称它为Linux-2.4.2。但是差不多每个月,都会有新的Linux补丁推出,这些补丁或者修补了一些问题,或者支持了一些新的硬件或其它新的特性。所以,当你安装了Linux-2.4.2几个月以后,就会有新的稳定发行版推出,我们称它为Linux-2.4.5。
我们将要描述的过程解释了你如何最简便的将自己的Linux从2.4.2升级为最新的2.4.5。
关键的窍门在于使用一系列的补丁文件。
*****************************************************************************
第0步:理解官方的Linux补丁文件是如何制作的。
*****************************************************************************
每一个官方的Linux补丁文件都是一个使用diff工具在两个连续的Linux版本中所有文件间产生的diff文件。
作为一个例子,我们假定这个补丁文件是用来将Linux-2.4.2升级到Linux-2.4.5的,这个补丁文件通过如下方法获得:
cd /usr/src/linux-2.4.2
make distclean
cd /usr/src/linux-2.4.3
make distclean
ln -s linux-2.4.2 linux
diff -ruN linux linux-2.4.3 > patch_2.4.3
gzip patch_2.4.3
这些补丁文件按照顺序使用gzip压缩,以节省Linux发行版本站点的下载时间。例如我们生成的补丁文件——patch_2.4.3.gz,就是一个经过压缩的补丁文件。
Linux官方补丁总是认为缺省的源代码子树名字为“Linux”。这种方法可能有点混淆,但是它允许一些(版本)连续的补丁不用修改源代码子树的名字就可以连续的被修改到源代码子树上。(下面我们可以看到)
这些补丁文件的名字都是标准的:
patch_2.4.3 记录着linux-2.4.3 和 linux-2.4.2之间的版本差异。
patch_2.4.4 记录着linux-2.4.4 and linux-2.4.3之间的版本差异。
patch_2.4.5 记录着linux-2.4.5 and linux-2.4.4之间的版本差异。
在我们的例子中,我们正好需要这3个补丁文件,他们的名字是patch_2.4.3.gz、patch_2.4.4.gz和patch_2.4.5.gz,用来将Linux-2.4.2升级到Linux-2.4.5。
*****************************************************************************
第1步:升级Linux源代码目录的名字和Linux符号连接。
*****************************************************************************
假定内核源代码的路径是:/usr/src/linux-2.4.2/
并且所有需要的压缩补丁文件都已经存放在目录/usr/src 中了。
执行下列命令:
cd /usr/src
mv linux-2.4.2 linux-2.4.5
rm linux
ln -s linux-2.4.5 linux
*****************************************************************************
第2步:清理源代码目录(删除中间目标文件和配置文件)。
*****************************************************************************
执行下列命令:
cd linux
make distclean
*****************************************************************************
第3步:解压缩补丁文件。
*****************************************************************************
in our example, execute:
cd /usr/src
gunzip patch-2.4.3.gz
gunzip patch-2.4.4.gz
gunzip patch-2.4.5.gz
*****************************************************************************
第4步:重复执行patch命令。
*****************************************************************************
执行下列命令:
for i in 3 4 5; do
patch -p0 < patch_2-4.$i
done
其中
patch -p0 < patchfile
命令作用在输入的补丁文件上,并将对应的老版本的内核源代码中所有的文件和子目录升级到对应的新版本(在我们的例子中,老版本的内核源代码目录是/usr/src/linux)。在我们的例子中,旧的内核源代码版本是Linux-2.4.5kh2。这里参数–p0用来保证文件名不被改变(既不被修改,也不被删除)。
目标目录是Linux,就是说旧版本的内核源代码经过patch以后,就被升级成了新版本的内核源代码。

责任编辑 赵毅 zhaoyi#51cto.com TEL:(010)68476636-8001


发表
查看
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 领 先 的 IT 技 术 网 站 ·
技 术 成 就 梦 想
订阅技术快讯
电子杂志下载
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。
名称:Vista精品应用黄皮书
简介:《Vista精品应用黄皮书》囊括了Vista的各方面内容。此次的精简版,是将里面的内容做了提取,便于用户下载和使用。内容包含了各种Vista的安装与实施、技巧与解析以及各种Vista相关学习文档和相关软件的安全下载。该电子书是了解和应用Vista人员必备的工具手册,并且也是第一本
名称:2006中国IT论坛精品集合
简介:本书由“51CTO论坛推广联盟”制作完成。书中所有内容均来自各联盟成员的论坛(网站)。制作本书的目的是为了集中大家的优势资源,将更多更精彩的内容带给广大技术爱好者。本书是联盟成立以来制作的第一本书。
关键字阅读
频道精选
主编信箱 热线:010-66476606 告诉我们您想看的:专题 文章
关于我们 | 诚聘英才 | 联系我们 | 网站大事 | 意见反馈 | 网站地图
Copyright©2005-2007 51CTO.COM 版权所有