转速和转速rpmbuild - 在%files部分中使用全局环境变量

时间:2014-09-17 16:15:24

标签: rpm rpmbuild rpm-spec

我一直在努力争取这个。 所以我为我的项目编写了一个.specs文件,一切都很顺利。 rpm是构建的,安装很顺利......但是后来我遇到了麻烦,因为现在我必须使用自定义的全局环境变量来设置安装路径。

这将给出一个%files部分:

%files
%defattr(-,root,root)
$INSTALLPATH/Crystal/bin/Crystal.jar

其中Crystal是我的项目名称,并且由于导出命令行,INSTALLPATH在env中定义。然后,跑步时     buildrpm -ba Crystal.specs 我有以下错误:

error: File must begin with "/" : $INSTALLPATH/Crystal/bin/Crystal.jar

我试图在.rpmmacros文件中定义一个宏,如下所示:     %_installpath $ INSTALLPATH

在我的specs文件中,当我这样做时     echo%{_ installpath} 我得到了我在.rpmmacros中设置的值。但是如果我在%files中使用它:

%files
%defattr(-,root,root)
%{_installpath}/Crystal/bin/Crystal.jar

我再次得到同样的错误!

error: File must begin with "/" : $INSTALLPATH/Crystal/bin/Crystal.jar

我也尝试用specs文件定义一个变量,我有同样悲伤的结果。看起来只要我的变量/宏引用$ INSTALL,然后%文件就不会接受它。但我必须使用这个env变量!

这就是我能想到的一切。有人知道吗?任何帮助将不胜感激。

提前多多感谢!

1 个答案:

答案 0 :(得分:6)

%files部分不会扩展shell变量。你不能这样做。

我有几个选项,我可以随便看到。你可以

  • 生成一个包含文件列表的文件(在%install或者你有什么),然后使用%files -f files.lst

  • 使用以下命令在rpm宏定义时展开$INSTALLPATH

    # For RPM >= 4.7.0
    %_installpath %{getenv:INSTALLPATH}
    # For RPM < 4.7.0
    %_installpath %{lua:print(os.getenv("INSTALLPATH"))}