什么是RPM包中的SPEC文件中的1%{?dist}

时间:2014-08-26 14:42:45

标签: linux fedora packaging rpm

1%{?dist}是什么意思? 这是什么意思? 我没有找到任何意义

Name:           hello
Version:        2.8
Release:        1%{?dist}
Summary:        The "Hello World" program from GNU
License:        GPLv3+
URL:            http://ftp.gnu.org/gnu/%{name}
Source0:        http://ftp.gnu.org/gnu/%{name}/%{name}-%{version}.tar.gz
BuildRequires: gettext
Requires(post): info
Requires(preun): info
%description 

“Hello World”计划,完成所有FOSS的所有花俏 项目,包括配置,构建,国际化,帮助文件等。

%prep
%autosetup
%build
%configure
make %{?_smp_mflags}

2 个答案:

答案 0 :(得分:10)

问号用于条件评估。当宏没有值时,rpm默认将宏标记保留在原位。如果没有值,?告诉rpm删除宏标记,如果有宏,则替换宏的值:

$ rpm -E 'foo:%{foo}'$'\n''bar:%{?bar}'
foo:%{foo}
bar:

$ rpm -D'foo foov' -E 'foo:%{foo}'$'\n''bar:%{?bar}'
foo:foov
bar:

$ rpm -D'foo foov' -D'bar barv' -E 'foo:%{foo}'$'\n''bar:%{?bar}'
foo:foov
bar:barv

因此,正如RahulKrishnanRA所说,%{?dist}说当一个存在时使用分布标记(rhel5rf等),当它存在时使用空字符串没有。

不幸的是,我对此的唯一文档链接并不是特别好。 http://www.rpm.org/wiki/PackagerDocs/ConditionalBuilds和链接的手册页。

答案 1 :(得分:2)

{?dist}标记用于标记包的分发版本