Linux 使用system()API时rpm安装后脚本失败

Linux 使用system()API时rpm安装后脚本失败,linux,ld,rpm,rpmbuild,Linux,Ld,Rpm,Rpmbuild,在系统调用中发出RPM post install脚本时失败。当规范文件中没有提到post脚本时,我们看不到安装问题 *.规格 %职位 sfile=/etc/ld.so.conf 如果grep'^/usr/lib'$sfile>/dev/null 2>&1;然后 printf%s\n/usr/lib>>$s文件; fi post脚本看起来很简单 正在准备安装程序包。。。 readline-4.2-4 错误:从readline-4.2-4执行%post scriptlet失败,退出状态255 你能帮

在系统调用中发出RPM post install脚本时失败。当规范文件中没有提到post脚本时,我们看不到安装问题

*.规格 %职位 sfile=/etc/ld.so.conf 如果grep'^/usr/lib'$sfile>/dev/null 2>&1;然后 printf%s\n/usr/lib>>$s文件; fi

post脚本看起来很简单

正在准备安装程序包。。。 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命令时,我们没有看到问题。

您有一个错误%post well duh-

尝试在%post scriptlet的末尾添加出口0。似乎正在发生的是,最后执行的命令的返回代码,即grep作为失败的退出代码返回到rpm


请注意,您可以非常轻松地调试失败的包scriptlet,尽管这项技术并不明显。在/var/tmp中查找rpm tmp*文件:当脚本失败时,rpm不会删除扩展的scriptlet,即脚本。通常,您不能总是调试RPM试图使用sh-x运行的脚本,然后将更改传播回*.spec文件中。我不确定您的scriptlet出了什么问题。但是您不应该修改/etc/ld.so.conf。您应该在/etc/ld.so.conf.d/%{name}.conf

中创建并分发文件,这不是答案。这是一个建议,当然不是解决真正问题的办法。