RPM:在%pre scriptlet

时间:2015-07-09 15:27:44

标签: bash rpm rpm-spec

我已将一些常用的实用程序脚本放入common.sh,我想在%pre期间在我的RPM specfile中使用它。 common.sh位于RPM包的根目录中。

我打算做的只是调用类似source common.sh的内容,但如何在common.sh期间从RPM访问%pre

1 个答案:

答案 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.)

这样代码仍会被解析回一行,因此第一行和第二行的;