【问题标题】:Unpacking an RPM file and repacking It解压 RPM 文件并重新打包
【发布时间】:2011-09-15 08:03:16
【问题描述】:

我有一个 RPM 文件。我必须对该 RPM 进行一些更改,重新打包并测试。谁能帮帮我?

【问题讨论】:

    标签: linux solaris rpmbuild


    【解决方案1】:

    修改您没有源代码的 RPM 的最佳方法是按照以下步骤操作:

    1. 使用 rpm2cpio 命令将 rpm 解压到一个目录中
    2. 在该子目录中进行必要的更改
    3. 制作一个“虚拟”规范文件并构建它。

    该虚拟规范文件可能如下所示:

    Name: blah
    Version: 1.0
    Release: 1
    Summary: blah
    License: blah
    Distribution: blah
    Group: blah
    Packager: me
    BuildRoot: /path/to/dir/with/mods
    
    %description
    blah
    
    %files
    /path/to/dir/with/mods/*
    

    用实际值替换此处的每个“废话”(使用rpm -qpi <strong>rpm file</strong> 获取值)。将 BuildRoot 替换为您已解包修改后的 rpm 的目录。然后运行rpmbuild -bb dummy.spec

    由于没有定义准备/设置/构建/安装步骤,它只会采用 buildroot 中的内容并制作 RPM。

    如果 rpm 包有脚本文件,您还必须将它们放在这个虚拟规范文件中。要查看包是否有任何脚本,请运行:rpm -qp --scripts <strong>rpm file</strong>。依赖项、先决条件等也是如此。

    我可能还缺少其他细节,但这应该足以让您入门。

    更新:对于它的价值,还有http://rpmrebuild.sourceforge.net/

    【讨论】:

    • 如果不指定/修改 rpmbuildBUILDROOT 设置,这将不起作用。
    • 我认为%files 应该相对于BuildRoot
    【解决方案2】:

    我认为这是一个叫做补丁的概念。我开始使用link 修补第一个 srpm。但基本思想是,获取 srpm,安装 srpm,在该构建区域目录中创建补丁,并在规范文件中指定补丁文件 %patch0 -p1。然后进行 rpm 构建。修补愉快!

    【讨论】:

    • 我面临的主要问题是我没有源 RPM。我只有 RPM 版本。
    • @Monojeet,然后找出源 rpm?存在 srpm 是合乎逻辑的,因为在修补时,我们需要 source rpm 而不是构建的 rpm。
    • 考虑获取 srpm。我可以知道那是什么 rpm 名称吗?
    • 这是一个专有的应用程序构建 RPM。 Jsut 想确保在没有 SRPM 的情况下根本无法编辑 RPM
    • 啊哈..另一个问题。如果你想保护你的 rpm 的完整性,你可能应该签署你的 rpm 包。 magazine.redhat.com/2007/12/04/hacking-rpms-with-rpmrebuild 您可能可以阅读此链接以获取 rpmrebuild。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-03
    • 1970-01-01
    • 2015-11-05
    • 1970-01-01
    相关资源
    最近更新 更多