【问题标题】:Change file members when creating RPM updates创建 RPM 更新时更改文件成员
【发布时间】:2019-01-26 09:54:35
【问题描述】:

在过去的几年中,我们的应用程序已打包到一个 rpm 文件中,并带有通常的编号更新。现在我想将一些文件分离到第二个 RPM 中,用于产品管理。

从旧.spec 文件的%files 部分中删除文件并将它们添加到新.spec 文件中的正确方法是什么?

例如,我们现在有 myApp.rpm 构建自:

/usr/local/myApp
+ bin/ {bunch of files here}
+ config/ {bunch of files here}
+ branding/

因此,当前的规范文件在其%files 指令中列出了上述所有内容。

要将branding 拆分为单独的 rpm 而不弄乱包装?例如。

myApp.spec

Name: myApp
%install
  {make directories, copy everything but branding}
%files
/%{_prefix}/myApp
/%{_prefix}/myApp/bin/*
/%{_prefix}/myApp/config/*

branding.spec

Name: myApp_branding
Requires: myApp
%install
   {copy branding to rpm tree}
%files
/%{_prefix}/myApp/branding/*

升级现有安装后,品牌文件的包成员现在是否为 myApp_branding 包?

这种方法有什么缺点或风险吗?

谢谢

【问题讨论】:

    标签: rpmbuild rpm-spec


    【解决方案1】:

    不,不推荐这种方式。

    记住每个项目只有一个 .spec 文件就足够了,您可以使用 %package 正文项来获取其他 rpm 包。例如在元信息之后添加以下代码。即在%prep%build 项目之前

    %package branding
    Summary: Branding for myApp
    Requires: myApp
    %description branding
    branding files for myApp
    

    之后,是的,您可以为每个包使用多个“%files”部分。喜欢

    %files
    /%{_prefix}/myApp/bin/*
    /%{_prefix}/myApp/config/*
    
    %files branding
    /%{_prefix}/myApp/branding/*
    

    如您所见,我在主要 %files 部分省略了 /%{_prefix}/myApp 行。实际上,当您选择父目录时,它会自动包含其所有子目录,并且当子包尝试再次包含子目录时,会导致构建时出现重复错误。如果您想使用/%{_prefix}/myApp,那么%exclude 可以提供帮助。见

    %files
    /%{_prefix}/myApp/*
    %exclude /%{_prefix}/myApp/branding/*
    
    %files branding
    /%{_prefix}/myApp/branding/*
    

    【讨论】:

    • 感谢您的回复,但对于不同的白标 OEM 品牌皮肤,会有多个品牌 rpm。因此,我们向每个 OEM 合作伙伴分发带有 (myApp.rpm brandingA.rpm) 和 (myApp.rpm brandingB.rpm)、(myApp.rpm brandingC.rpm) 等的 ZIP 文件。以前(单组)品牌文件位于 myApp.rpm 内。我正在尝试确认之前 myApp.rpm 中文件的包所有权是否正确重新分配给 brandingX.rpm ...
    • 可以创建多个品牌 rpm。然后以 zip 格式交付选定的品牌。但是,如果您的品牌/主题共享相同的目的地/目录,那么您可以在 %post brandingX 部分通过添加符号链接来解决此问题,例如 %{__ln_s} /usr/myApp/brandingX /usr/myApp/defaultBrand
    • %files brandingX 下提到的任何内容都将归同一个包所有,只需记住将其从主%files 部分中排除,或者省略父目录或通过%exclude
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-15
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    相关资源
    最近更新 更多