Ric*_*o M 5 linux fedora rpm rhel
我有一个规范文件,它解压缩了一个库,该库部署在 shell 中导出的位置。
IE
%file
${AXIS2_C}/bin/services/services.xml
Run Code Online (Sandbox Code Playgroud)
这失败了:
error: File not found: root/rpmbuild/BUILDROOT/i386/${AXIS2_C}/bin/services/services.xml
Run Code Online (Sandbox Code Playgroud)
即 shell 变量不会被扩展。有没有办法解决 ?
谢谢!
不幸的是,由 %prep、%build 或 %install 部分启动的 shell 中定义的任何内容都不会保留在构建环境中。您需要定义 %{AXIS2_C},一个MACRO变量(不是 shell 变量):
%define AXIS2_C /usr/local/something
Run Code Online (Sandbox Code Playgroud)
然后在你的两个 shell 中将它称为
make whatever FOO=%{AXIS2_C} # or however you used the env variable
Run Code Online (Sandbox Code Playgroud)
然后在 %files 部分,使用
%file
%{AXIS2_C}/bin/services/services.xml
Run Code Online (Sandbox Code Playgroud)
通常,最初的 %define 位于规范文件的顶部,并附有一些有关其用途的文档。如果您需要动态设置宏,则必须使用更复杂的 RPM 规范宏命令,例如 %() 来进行 shell 扩展。