zoukankan      html  css  js  c++  java
  • linux下对rpm源码手工打补丁

    前言

      通常情况rpm包组件管理方式下的linux环境,常用打补丁的方式只有一种:修改spec文件定义的Patch和patch字段,其实spec文件中调用的底层命令还是patch.  因为业务需要要编译内核,需要测试某一阶段不同补丁对内核的影响,但是通过修改spec文件进行编译时每次都是全量编译,验证周期非常长,因为执行rpmbuil -bp SPECS/xxx.spec --define="_topdir `pwd`"会重建BUILD目录;

    问题思考

      分析spec中打补丁的本质是调用patch进行打补丁,所以考虑对BUILD下源码目录进行手工打补丁,这样不会每次重建BUILD目录,可以利用Make -j num_of_thread方式进行增量编译,可以快速缩短验证周期;

           内核编译注意事项:

    解决办法

            

    基本命令语法:
    patch [-R] {-p(n)} [--dry-run] < patch_file_name
    p:为path的缩写。
    n:指将patch文件中的path第n条’/’及其左边部分取消。
    -R:卸载patch包。
    --dry-run:尝试patch软件,并不真正修改软件。
    使用实例:
    /home/sense/patch-2.6.19.1
    =============================================================
    diff --git a/arch/i386/kernel/acpi/boot.c b/arch/i386/kernel/acpi/boot.c
    index d12fb97..c8f96cf 100644
    --- a/arch/i386/kernel/acpi/boot.c
    +++ b/arch/i386/kernel/acpi/boot.c
    @@ -333,7 +333,7 @@ acpi_parse_ioapic(acpi_table_entry_heade
    /*
       * Parse Interrupt Source Override for the ACPI SCI
       */
    -static void acpi_sci_ioapic_setup(u32 bus_irq, u32 gsi, u16 polarity, u16 trigger)
    +static void acpi_sci_ioapic_setup(u32 gsi, u16 polarity, u16 trigger)
    =============================================================
    此patch文件的path=a/arch/i386/kernel/acpi
    [sense@ssn src]$ pwd
    /usr/src
    [sense@ssn src]$ tree
    .
    `-- a
    `-- arch
           `-- i386
             `-- kernel
                `-- acpi
    和a/同目录时:
    [sense@ssn src]$ pwd
    /usr/src
    [sense@ssn src]$ patch -p0 < /home/sense/patch-2.6.19.1   安装补丁
    [sense@ssn src]$ patch -p0 -R < /home/sense/patch-2.6.19.1   卸载补丁
    和a/arch/同目录时:
    [sense@ssn src]$ pwd
    /usr/src/a/
    [sense@ssn src]$ patch -p1 < /home/sense/patch-2.6.19.1   安装补丁
    [sense@ssn src]$ patch -p1 -R < /home/sense/patch-2.6.19.1   卸载补丁
    和a/arch/i386/同目录时:
    [sense@ssn src]$ pwd
    /usr/src/a/arch/
    [sense@ssn src]$ patch -p2 < /home/sense/patch-2.6.19.1   安装补丁
    [sense@ssn src]$ patch -p2 -R < /home/sense/patch-2.6.19.1   卸载补丁
  • 相关阅读:
    发球
    Java学习笔记
    驼峰式命名法
    公式编辑测试
    Python3.5 在Ubuntu16.04上无法画图的解决方案
    Ubuntu16.04 安装flash player
    Spring切面通知执行的顺序(Advice Order)
    修改别人写的利用AOP实现日志监控的问题
    传感器系列之4.10 酒精传感器
    传感器系列之4.8光敏传感器
  • 原文地址:https://www.cnblogs.com/noxy/p/11401923.html
Copyright © 2011-2022 走看看