在系统调用中发出RPM后安装脚本失败。在spec文件中未提及post script时,我们看不到安装问题。
*。spec.in
%后
sfile =的/ etc / ld.so.conf中
如果! grep'^ / usr / lib'$ sfile> / dev / null 2>& 1;然后
printf“%s \ n”“/ usr / lib”>> $ sfile;
网络
帖子脚本看起来很简单。
准备安装包... readline的-4.2-4 错误:从readline-4.2-4执行%post scriptlet失败,退出状态255
你能帮我们一下吗?
ret = system("/bin/rpm -ivU --nodeps --force --root /mnt /tmp/readline-4.2-4.ppc.rpm");
当我们在shell提示符中发出上述rpm命令时,我们看不到问题。
答案 0 :(得分:0)
你有一个错误的帖子(嗯嗯!; - )
尝试添加"退出0"在%post scriptlet的末尾。似乎正在发生的是最后执行的命令(即grep)的返回代码作为失败的退出代码返回到rpm。
请注意,您可以非常轻松地调试失败的软件包scriptlet(尽管该技术并不是很明显)。在/ var / tmp中查找rpm-tmp *文件:当脚本失败时,RPM不会擦除扩展的scriptlet(即脚本)。您可以(通常,并非总是)使用" sh -x"调试RPM尝试运行的脚本。然后将更改传播回* .spec文件
答案 1 :(得分:-1)
我不确定您的scriptlet有什么问题。但是你不应该修改/etc/ld.so.conf
。您应该在/etc/ld.so.conf.d/%{name}.conf