31

我有一个规格文件。我需要定义一个从系统上的单行文件中获取其值的规范变量。

例如

%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) 中的行,因为它应该是?

4

1 回答 1

42

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

%define whoami %(whoami)

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

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

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

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

并确保它path_file位于源目录中并作为源包含在规范文件中。

于 2012-04-19T20:20:21.193 回答