linux 怎么打补丁

linux 怎么打补丁,第1张

     linux打补丁总共有四个步骤,具体 *** 作如下:

      1、首先登录VMware上安装的一台centos主机,网络处于联网状态,命令一般为cat/etc/redhat-release。

      2、然后在终端上输入yumupdate,按下回车,就会开始进行版本包的下载和依赖分析。

      3、一般会提示是否确认下载,输入“y”确认,即可开始下载,并且能够看到下载的百分比。

      4、如果出现complete则说明软件和补丁已经更新完成了。

      以上就是的分享了,希望能够帮助到大家。

      本文章基于ThinkpadE15品牌、centos7系统撰写的。

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

用KERNEL——PATCH升级KERNEL

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

无名指 兄写的大作

在kernel源码的README中有说明,如果你下载的PATCH是形如patch-2.4.X.gz的话使用gzip -cd patch-2.4.x.gz|patch -p0 如果是BZ格式的压缩包则使用bzip2 -dc patch-2.4.x.bz|patch -p0

但这样使用的话简直就是恶梦,你需要一个个的去替换文件,一般使用脚本来PATCH。这里假设你的源码目录为/src/linux,补丁下载到/src目录下,PATCH的步骤如下:

cd /src

linux/scripts/patch-kernel linux

脚本会自动找到补丁并应用,这里我解释一下:

linux/scripts/patch-kernel是个脚本文件,linux则是你的源码目录,如果要使这个命令完整的话后面还应该写上补丁所在的目录,这里因为补丁在当前目录下所以就省了。在补丁目录后面还可写上所要使用的补丁的最高版本号,比如你的源代码为2.4.10,而你下载了从2.4.10到2.4.20的所有软件包,并都放在同一目录下。在patch时你只想升级到2.4.19,不想使用2.4.20。命令格式就该象下面这个样子:

源码目录/scripts/patch-kernel 源码目录 补丁所在目录 2.4.19

这样的话版本号到2.4.19为止的所有补丁都会被使用,而2.4.20则被忽略不会被patch上。

如果不写上最高的版本号则目录下的所有补丁都会被使用。哇!写的手软,不过还没完,为了让大家不会再象我一样为打补丁而死大量的脑细胞,我接着写!!

上面的格式只能patch标准的补丁,而有时kernel会发布些pre或ac补丁,一般格式如下:

patch-2.4.x-pre*.gz

patch-2.4.x-ac*.gz

patch-2.4.x-pre*-ac*.gz

patch-2.4.x-pre*-acl*.gz

这时就要加参数才能patch了,对于ac补丁要这样使用

linux/scripts/patch-kernel linux -ac*

*为0到9的数字,比如patch-2.4.5-ac3.gz 这时的参数就为-ac3,也就是说参数同版本号的最后一个域相同。但有个例外象patch-2.4.x-pre*.gz这样的补丁就不能这样使用,我就是被这样的补丁搞的头大。最后分析脚本才发现,它居然没为pre设置参数,不知这是不是疏乎。这样的话你可以自己改脚本,不过我偷了点懒没改脚本,而是改了补丁的文件名:

mv patch-2.4.x-pre1.gz patch-2.4.x.gz

这样的话就可以使用了,而且并没有出现问题,可以正常编译。对于-pre*-ac*这样的补丁也是一样 *** 作把其中的pre*删除再使用-ac*参数patch就可以了。

当然你也可以直接使用patch命令来安装,为了不回答那么多的问题,就不能使用patch -p0而要把命令改为如下形式:

gzip -cd patch-2.4.x-pre2-ac1.gz|patch -p1 -s -N -E -d 源码目录

可以使用这种方式来安装任何补丁,而不用管它的文件名了。

哇总算写完了,这是我今天和补丁作斗争的战果!!拿出来希望能对大家有点帮助!!

patch 命令用于打补丁,补丁文件是使用diff产生的.

patch 命令语法 patch [ -b [ -B Prefix ] ] [ -f ] [ -l ] [ -N ] [ -R ] [ -s ] [ -v ] [ -c | -e | -n ] [ -d Directory ] [ -D Define ] [ -F Number ] [ -i PatchFile ] [ -o OutFile ] [ -p Number ] [ -r RejectFile ] [ -x Number ] [ File ]

patch 命令失败或拒绝接受补丁时,会产生一个和原文件同名,以".rej"为后缀的差异文件。  

当知道 -b 时,会产生一个和原文件同名,以".orig"为后缀的备份文件。

常使用的 patch 参数:

-p 指定目录级别(从路径全称中除去几层目录)

如,如果补丁文件包含路径名称 /curds/whey/src/blurfl/blurfl.c,

那么: -p 0 使用完整路径名

-p 1 除去前导斜杠,留下 curds/whey/src/blurfl/blurfl.c。

-p 4 除去前导斜杠和前三个目录,留下 blurfl/blurfl.c。

-d Directory 打补丁前,更改当前目录到指定目录

-i PatchFile 从指定文件,而不是从标准输入中读取补丁信息

-R 逆向补丁


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/9009320.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-23
下一篇 2023-04-23

发表评论

登录后才能评论

评论列表(0条)

保存