【问题标题】:How do I undefine %{dist} using rpmbuild to build SRPM?如何使用 rpmbuild 取消定义 %{dist} 以构建 SRPM?
【发布时间】:2014-04-14 02:14:50
【问题描述】:

我正在尝试制定 RPM 的构建过程。

当我生成源 RPM 时,它的文件名中包含 %{dist}。我希望它只对二进制 RPM 执行此操作,因为源 RPM 不是特定于发行版的。

dist 宏在/etc/rpm/macros.dist 中定义。在构建源 RPM 时如何取消定义它?

foo.spec:

Name:    foo
Version: 0.1
Release: 1%{?dist}
# etc...

构建命令:

$ rpmbuild -bs foo.spec
$ ls ../SRPMS
$ foo-0.1-1.el6.src.rpm

【问题讨论】:

    标签: rpmbuild


    【解决方案1】:

    简单:

    $ rpmbuild --undefine dist -bs foo.spec
    

    【讨论】:

    • 这似乎是be new in RPM 4.10.2。快速浏览一些 CentOS 镜像表明它在 CentOS 6 (4.8) 中无法使用,但在 CentOS 7 (4.11) 中应该可以。
    【解决方案2】:

    我不相信有一种方法可以有条件地检查您正在构建的包类型,但您可以尝试仅在构建源包时在命令行中定义宏。然后,您将有条件地检查规范文件顶部的宏:

    $ rpmbuild -bs --define "mymacro 1" mypackage.spec
    

    mypackage.spec:

    %if 0%{?mymacro}
    %undefine dist
    %endif
    

    要构建二进制包,只需省略--define "mymacro 1"

    $ rpmbuild -bb mypackage.spec
    

    【讨论】:

      猜你喜欢
      • 2011-07-05
      • 2014-04-29
      • 2012-09-13
      • 2011-07-13
      • 1970-01-01
      • 2015-05-11
      • 2019-01-08
      • 2018-05-11
      • 2014-09-08
      相关资源
      最近更新 更多