我已将一些常用的实用程序脚本放入common.sh
,我想在%pre
期间在我的RPM specfile中使用它。 common.sh
位于RPM包的根目录中。
我打算做的只是调用类似source common.sh
的内容,但如何在common.sh
期间从RPM访问%pre
?
答案 0 :(得分:2)
我能够使用RPM macros解决此问题,方法如下:
在执行rpmbuild
之前,我已将common.spec
放入SPECS
文件夹。
<强> common.spec 强>
%define mymacro() (echo -n "My arg is %1 " ; sleep %1 ; echo done.)
我已将%include SPECS/common.spec
添加为实际规范文件的第一行。
使用示例
%pre
%mymacro 5
我的arg已经完成了。
多行宏
非常脆弱的语法imo,但你可以使用\
将换行符放入你的宏。这将告诉RPM构建器它应该继续解析宏。以前一个宏为例:
%define mymacro() (echo -n "My arg is %1 " ; \
sleep %1 ; \
echo done.)
这样代码仍会被解析回一行,因此第一行和第二行的;
。