RPM:正在%pre-scriptlet中加载bash脚本
我在RPM:正在%pre-scriptlet中加载bash脚本,bash,rpm,rpm-spec,Bash,Rpm,Rpm Spec,我在common.sh中放入了一些常用的实用程序脚本,我想在%pre期间在我的RPM规范文件中使用这些脚本common.sh位于RPM包的根目录中 我计划做的是简单地调用类似于source common.sh,但是在%pre期间如何从RPM访问common.sh?我能够使用以下方法解决此问题: 在执行rpmbuild之前,我已将common.spec放入SPECS文件夹 通用规范 %define mymacro()(echo-n“我的参数是%1”;睡眠%1;echo已完成。) 我已经添加了%i
common.sh
中放入了一些常用的实用程序脚本,我想在%pre
期间在我的RPM规范文件中使用这些脚本common.sh
位于RPM包的根目录中
我计划做的是简单地调用类似于
source common.sh
,但是在%pre
期间如何从RPM访问common.sh
?我能够使用以下方法解决此问题:
在执行rpmbuild
之前,我已将common.spec
放入SPECS
文件夹
通用规范
%define mymacro()(echo-n“我的参数是%1”;睡眠%1;echo已完成。)
我已经添加了%include SPECS/common.spec
作为实际spec文件的第一行
用法示例
%pre
%mymacro 5
我的arg完成了5
多行宏
在我看来,语法上非常脆弱,但您可以使用\
将换行符放入宏中。这将告诉RPM生成器它应该继续解析宏。以前面的宏为例:
%define mymacro() (echo -n "My arg is %1 " ; \
sleep %1 ; \
echo done.)
这样代码仍将被解析回一行,因此
代码>在第一行和第二行。如果common.sh
在rpm内部,我不相信您可以(至少不可靠)。您最好在生成时将common.sh
作为rpm宏,以便在%pre
使用时使用。@EtanReisner您知道关于rpm宏的好资源吗?稍旧一些,但仍然非常准确/有用:@EtanReisner谢谢!跟进问题: