一次安装rpcbind失败引发的思考

时间:2022-03-08 08:08:18

问题:

yum install rpcbind -y

出现如下错误:

Error in PREIN scriptlet in rpm package rpcbind-0.2.0-11.el6.x86_64
error: %pre(rpcbind-0.2.0-11.el6.x86_64) scriptlet failed, exit status 1
error:   install: %pre scriptlet failed (2), skipping rpcbind-0.2.0-11.el6
  Verifying  : libtirpc-0.2.1-10.el6.x86_64                                                                                       1/3 
  Verifying  : libgssglue-0.1-11.el6.x86_64                                                                                       2/3 
  Verifying  : rpcbind-0.2.0-11.el6.x86_64                                                                                        3/3 

Dependency Installed:
  libgssglue.x86_64 0:0.1-11.el6                                    libtirpc.x86_64 0:0.2.1-10.el6                                   

Failed:
  rpcbind.x86_64 0:0.2.0-11.el6

解决:

错误提示安装软件的时候执行什么脚本出现了错误,经百度之后知道在安装rpm软件包的时候,会先执行rpm包中的预处理脚本,应该是执行这个脚本的时候出现了错误,所以我尝试查看这个脚本都执行了什么内容;

那么如何获取到这个脚本呢?

取对应的rpm包
yum install xxxxpackage  --downloadonly --downloaddir=/root
取得rpm对应的安装预处理脚本
rpm --scripts -qp xxxxpackage  > x-scripts.log

详见:

http://xifan.blog.51cto.com/632768/372307/

发现该脚本中有用到useradd/userdel命令来添加rpc的用户,由此想起之前使用chattr +i /etc/passwd对passwd文件做了加锁处理,所以会造成useradd/userdel命令不能正常执行,这应该就是造成预处理脚本不能正常执行的原因了吧,使用chattr -i /etc/passwd解锁之后软件可以正常安装。

注:从出现错误,到发现预处理脚本这一概念,再到想起passwd锁定一共花费了将近2个小时。

总结:

1.要了解软件安装的原理

2.只要是对系统有做过任何修改,一定要有相关的记录档案,包括执行了什么命令。