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

问题描述 投票:5回答:2

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}
linux fedora packaging rpm
2个回答
11
投票

问号用于条件评估。当宏没有值时,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}标签用于标记程序包的发行版本

© www.soinside.com 2019 - 2024. All rights reserved.