我一直在努力争取这个。 所以我为我的项目编写了一个.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变量!
这就是我能想到的一切。有人知道吗?任何帮助将不胜感激。
提前多多感谢!
答案 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"))}