2017-01-19 74 views
0

在系统调用中发出RPM安装脚本失败。当在脚本文件中未提及脚本时,我们没有看到安装问题。rpm使用系统()后,安装脚本失败API

* .spec.in
%后
sfile =的/ etc/ld.so.conf中
如果! grep'^/usr/lib'$ sfile>/dev/null 2> & 1;然后
printf“%s \ n”“/ usr/lib”>> $ sfile;
fi

帖子脚本看起来很简单。

准备包安装... 的readline-4.2-4 错误:从readline的-4.2-4%后小脚本的执行失败,退出状态255

你能帮我们吗?

ret = system("/bin/rpm -ivU --nodeps --force --root /mnt /tmp/readline-4.2-4.ppc.rpm"); 

当我们在shell提示符下发出上面的rpm命令时,我们看不到问题。

回答

0

你有越野车的%post(以及咄!;-)

尝试增加 “退出0” 的帖子%小脚本结束。看来正在发生的事情是,最后执行的命令(即grep)的返回码作为失败的退出码返回到rpm。

请注意,您可以非常容易地调试失败的程序包scriptlet(尽管该技术并不明显)。在/ var/tmp中查找rpm-tmp *文件:当脚本失败时,RPM不会擦除扩展脚本(即脚本)。您可以(通常不是总是)调试RPM试图使用“sh -x”运行的脚本,然后将更改传播回* .spec文件

-1

我不确定您的scriptlet有什么问题。但是你不应该修改/etc/ld.so.conf。您应该创建并分发文件/etc/ld.so.conf.d/%{name}.conf

+0

这不是一个答案。这是一个建议,当然不是解决真正的问题。 – alvits