我有一个规范文件,它解压一个库,该库部署在 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
(或者甚至" "
根本没有)