在RPM软件包的SPEC文件中,1% {?dist}是什么意思?

8

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”程序是一个典型的自由开源软件项目,包括配置、构建、国际化、帮助文件等所有组成部分。

%prep
%autosetup
%build
%configure
make %{?_smp_mflags}
2个回答

19

问号用于条件评估。当宏没有值时,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 及其链接的手册页面。


2

{?dist}标签用于标记软件包的发行版修订版本。


其他答案中所做的那样,更多关于 ? 意义的细节会更有帮助... - glglgl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接