Как мне отменить определение% {dist} с помощью rpmbuild для построения SRPM?

Я пытаюсь разработать свой процесс сборки для 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

person leedm777    schedule 10.03.2014    source источник


Ответы (2)


просто:

$ rpmbuild --undefine dist -bs foo.spec
person fche    schedule 21.03.2017
comment
Это кажется новым в RPM 4.10.2. Беглый взгляд на некоторые зеркала CentOS показывает, что он не будет работать в CentOS 6 (4.8), но должен работать в CentOS 7 (4.11). - person Aaron D. Marasco; 22.03.2017

Я не верю, что есть способ условно проверить, какой пакет вы создаете, но вы можете попробовать определить макрос в командной строке только при сборке пакетов с исходным кодом. Затем вы бы условно проверили макрос в верхней части файла спецификации:

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

mypackage.spec:

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

Чтобы создать двоичный пакет, просто опустите --define "mymacro 1":

$ rpmbuild -bb mypackage.spec
person jayhendren    schedule 29.07.2014