码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 如何修改rpm包


    基本思路:

    rpm包没有修改工具,只能是把rpm包解压、修改(包括增删)其中的文件,然后重新制作rpm包。

    注:制作rpm包,需要原rpm包的spec文件。

    所需工具:

    rpmrebuild 

    它主要是用来提取原rpm包中的spec文件。

    rpmrebuild有如下两种安装方式(建议第1中):

     1)下载安装rpmrebuild rpm包

    下载地址:

    http://rpmfind.net/linux/rpm2html/search.php?query=rpmrebuild

    rpm -ivh rpmrebuild-2.11-3.el7.noarch.rpm  安装后,可直接使用 rpmrebuild 命令。

    2)下载解压tar包:

    下载地址:https://jaist.dl.sourceforge.net/project/rpmrebuild/rpmrebuild/2.15/rpmrebuild-2.15.tar.gz

    解压后,使用./rpmrebuild.sh 脚本,和 rpmrebuild命令一样。

    rpmbuild

    它主要是用来制作rpm包的。

    步骤:

    0)创建一个临时目录

    mkdir -p /root/test_rpm_dir

    cp mlnx-ofa_kernel-5.2-OFED.5.2.1.0.4.1.rhel7u3.x86_64.rpm /root/test_rpm_dir

    cd  /root/test_rpm_dir

    1)解压原rpm包

    rpm2cpio mlnx-ofa_kernel-5.2-OFED.5.2.1.0.4.1.rhel7u3.x86_64.rpm | cpio -div

    2)修改内容 

    按自己需求修改内容,或增删文件

    3)提取原rpm包spec文件 

    #注:下面命令中的 --spec-only=test.spec 中的test.spec是要保存spec的文件路径(即把提取的spec文件保存为当前路径下的test.spec)。

    有两种提取spec文件的方式:

    a)从指定的rpm包文件中提取 

    #注:-p, 即 --package 就是指使用rpm包文件,而不是系统中已安装的rpm。

    #注:-n, 即 --notest-install,不要执行一个测试性的安装(do not perform a test install)。

    #注:-s,即 --spec-only= ,指只提取创建spec文件(generate specfile only)。

    rpmrebuild  -p -n -s test.spec mlnx-ofa_kernel-5.2-OFED.5.2.1.0.4.1.rhel7u3.x86_64.rpm 

    或

    rpmrebuild  --package --notest-install --spec-only=test.spec mlnx-ofa_kernel-5.2-OFED.5.2.1.0.4.1.rhel7u3.x86_64.rpm 

    a)从系统中安装的rpm中提取 

    如果rpm包已经安装到系统中(且你已经从本地删除了该rpm包源文件),可以执行如下命令提取:

    rpmrebuild -s test.spec -n mlnx-ofa_kernel-5.6-OFED.5.6.2.0.9.1.rhel7u4.x86_64

    4)修改spec文件

    如果有增删的文件,则需要在spec文件中体现

    5)重新制作rpm

    使用rpmbuild  通过指定--buildroot  和 提取的spec 重新制作包。

    rpmbuild -ba  --buildroot /root/test_rpm_dir  test.spec

    注:如果是已经删除了rpm包文件,只能从系统中已安装的rpm路径下打包对应文件来制作新的rpm包,此时应去掉 --buildroot /root/test_rpm_dir

    参考:修改rpm中的文件重新打包 - 走看看

  • 相关阅读:
    【从零开始学习 SystemVerilog】6.1、SystemVerilog 接口—— Interface 概述
    《机器学习实战》4.朴素贝叶斯
    读书会丨如何才能不做情绪的人质?
    【iOS】计算器实现
    关于第一次接入Kotlin
    jsp精品课程网站系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
    力扣第18题 四数之和 c++双指针注释版。
    react hook 获取setState的新值
    Kotlin当中的小技巧
    基于C/C++的UG二次开发流程
  • 原文地址:https://blog.csdn.net/billbonaparte1/article/details/125998193
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号