如何使用rpmbuild取消定义%{dist}来构建SRPM?

时间:2014-03-10 19:17:22

标签: rpmbuild

我正在尝试制定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

2 个答案:

答案 0 :(得分:2)

简单:

$ rpmbuild --undefine dist -bs foo.spec

答案 1 :(得分:0)

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

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

mypackage.spec:

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

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

$ rpmbuild -bb mypackage.spec