SPEC %files 属性和 Shell 变量

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 变量不会被扩展。有没有办法解决 ?

谢谢!

jsb*_*ngs 7

不幸的是,由 %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 扩展。