RPM spec文件 - 是否可以动态填充spec文件变量

问题描述 投票:30回答:1

我有一个spec文件。我需要定义一个spec变量,它从系统上的一行文件中获取其值。

例如

%define path `cat /home/user/path_file`

并且在path_file中是一行

/var/www/html/hosts

这部分有效。我说从RPM BUILD输出开始有时${path}的值实际上是我的命令cat /home/user/path_file,有时值是path_file(/ var / www / html / hosts)中的行应该是什么?

rpm rpmbuild rpm-spec
1个回答
42
投票

您可以使用spec文件顶部的%(cmd)定义rpmbuild变量。请注意,命令在括号中,而不是大括号。一个例子:

%define whoami %(whoami)

在spec文件的其他地方,例如脚本或构建/安装部分,在大括号中正常使用变量,如下所示:

echo "The user that built this is %{whoami}"

cmd可以是任何东西,包括你的猫命令。注意 - 当另一个用户重建spec文件时,它可能找不到该文件。所以最好像这样使用%{sourcedir}宏:

%define path %(cat %{sourcedir}/path_file)

并确保path_file位于源目录中,并作为源文件包含在spec文件中。

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