SPEC %files 属性和 Shell 变量

SPEC %files 属性和 Shell 变量

我有一个规范文件,它解压一个库,该库部署在 shell 中导出的位置。

IE

%file
${AXIS2_C}/bin/services/services.xml

这失败了:

error: File not found: root/rpmbuild/BUILDROOT/i386/${AXIS2_C}/bin/services/services.xml

即 shell 变量不会被扩展。有没有办法解决 ?

谢谢!

答案1

不幸的是,由 %prep、%build 或 %install 部分启动的 shell 中定义的任何内容都不会保留在构建环境中。您需要定义 %{AXIS2_C},一个宏观变量(不是 shell 变量):

%define AXIS2_C /usr/local/something

然后在两个 shell 中将其引用为

make whatever FOO=%{AXIS2_C} # or however you used the env variable

然后在 %files 部分中,使用

%file
%{AXIS2_C}/bin/services/services.xml

通常,最初的 %define 位于规范文件的顶部,并带有一些有关其用途的文档。如果您需要动态设置宏,则必须使用更复杂的 RPM 规范宏命令,例如 %() 来进行 shell 扩展。

答案2

如果您不将其封装在 中{ },而仅使用,会发生什么情况" "

%file
"$AXIS2_C"/bin/services/services.xml

(或者甚至" "根本没有)

相关内容