使用 yum 安装软件包时,出现以下错误:
$ yum install <rpm_name> -v -y
error: %pre(<rpm_name>) scriptlet failed, exit status 1
Error in PREIN scriptlet in rpm package <rpm_name>
Warning: scriptlet or other non-fatal errors occurred during transaction.
Verifying : <rpm_name> 1/1
What is this? <rpm_name>
VerifyTransaction time: 0.003
Transaction time: 0.139
如何解决这个问题?
您的问题是
rpm
包本身的错误。如果您执行了此软件包,请检查预安装脚本。如果没有,您可以联系包创建者并要求他这样做。
下载rpm包运行一下:
rpm -qp --scripts <rpmname>.rpm
这将为您提供分配给该包的 scriptlet 的内容。 RPM 正在尝试执行,但某处出现错误。
结果发现 rpm 数据库存在一些问题。重建 rpm DB 后问题解决,参考此链接:https://www.cyberciti.biz/tips/rebuilding-corrupted-rpm-database.html
对于我来说,在 RHEL 中,解决方案是运行以下代码:
getent group cgred >/dev/null || groupadd cgred
也许selinux已启用: 红帽解决方案: https://access.redhat.com/solutions/24282
scriptlet 失败的一个常见问题是 selinux 标签错误。如果 /usr/bin/rpm 的 selinux 类型不是 rpm_exec_t,则每个软件包的每个 scriptlet 都会失败。要检查 /usr/bin/rpm 的 selinux 类型,请使用:
ls -Z /usr/bin/rpm