YUM安裝MONGODB發生Error in PREIN scriptlet in rpm package mongodb-enterprise-server-4.0.2-1.el6.x86_64錯誤


YUM安裝MONGODB發生Error in PREIN scriptlet in rpm package mongodb-enterprise-server-4.0.2-1.el6.x86_64錯誤

小知識1:

使用root權限都不能編輯某個文件,很可能是使用chattr命令鎖定該文件了。通過chattr命令修改屬性能夠提高系統的安全性,但是它並不適合所有的目錄。chattr命令不能保護/、/dev、/tmp、/var目錄。lsattr命令是顯示chattr命令設置的文件屬性。

使用lsattr file 查看是否被鎖:

[root@localhost packages]# lsattr /etc/shadow

----i--------e- /etc/shadow

使用chattr -i file解鎖

[root@localhost packages]# chattr -i /etc/shadow

-------------e- /etc/shadow

使用chattr -i file加鎖

[root@localhost packages]# chattr +i /etc/shadow

----i--------e- /etc/shadow

小知識2:安裝mongodb server 4.0.2過程需要在/etc/目錄某些文件需要擁有寫入權限。

/etc/group

/etc/gshadow

/etc/passwd

/etc/shadow

小知識3:centos安裝mongodb

1、Configure repository.

Create an /etc/yum.repos.d/mongodb-enterprise.repo file so that you can install MongoDB enterprise directly using yum:

[mongodb-enterprise]

name=MongoDB Enterprise Repository

baseurl=https://repo.mongodb.com/yum/redhat/$releasever/mongodb-enterprise/4.0/$basearch/

gpgcheck=1

enabled=1

gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc

2、Install the MongoDB Enterprise packages.

Install MongoDB Enterprise 4.0.

Issue the following command:

sudo yum install -y mongodb-enterprise

 

 

錯誤日志:

[root@localhost ~]# yum install mongodb-enterprise

*省略無用日志

*

Error in PREIN scriptlet in rpm package mongodb-enterprise-server-4.0.2-1.el6.x86_64

groupadd: cannot open /etc/group

error: %pre(mongodb-enterprise-server-4.0.2-1.el6.x86_64) scriptlet failed, exit status 6

error:   install: %pre scriptlet failed (2), skipping mongodb-enterprise-server-4.0.2-1.el6

*省略無用日志

*

Failed:

  mongodb-enterprise-server.x86_64 0:4.0.2-1.el6

Complete!

分析原因:

         從日志中得到3點信息:

1、  執行rpm package過程出錯(前提)

2、  /etc/group無法打開(主要原因)

3、  %pre部分腳本出錯

解決步驟:

1、  使用vim/vm 編輯/etc/group文件,無法編輯有兩種情況:

a)         ll查看write權限(變更權限chmod +w file)

b)         lsattr查看文件加鎖(解鎖chattr -i file )。

2、  使用rpm --scripts -qp mongodb-enterprise-server-4.0.2-1.el6.x86_64.rpm查看安裝腳本(為spec文件功能)

[root@localhost packages]# rpm --scripts -qp mongodb-enterprise-server-4.0.2-1.el6.x86_64.rpm

warning: mongodb-enterprise-server-4.0.2-1.el6.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID e52529d4: NOKEY

preinstall scriptlet (using /bin/sh):

if ! /usr/bin/id -g mongod &>/dev/null; then

    /usr/sbin/groupadd -r mongod

fi

if ! /usr/bin/id mongod &>/dev/null; then

    /usr/sbin/useradd -M -r -g mongod -d /var/lib/mongo -s /bin/false   -c mongod mongod > /dev/null 2>&1

fi

postinstall scriptlet (using /bin/sh):

if test $1 = 1

then

  /sbin/chkconfig --add mongod

fi

preuninstall scriptlet (using /bin/sh):

if test $1 = 0

then

  /sbin/chkconfig --del mongod

fi

postuninstall scriptlet (using /bin/sh):

if test $1 -ge 1

then

  /sbin/service mongod condrestart >/dev/null 2>&1 || :

fi

紅色部分內容preinstall scriptlet 對應錯誤%pre的內容

綠色部分內容為%pre階段實際需要執行shell命令,將其逐條執行,根據提示解決錯誤。

3、  重新安裝yum reinstall mongodb-enterprise

[root@localhost ~]# yum reinstall mongodb-enterprise

**省略不需要的日志

Installed:

  mongodb-enterprise.x86_64 0:4.0.2-1.el6

Dependency Installed:

  mongodb-enterprise-server.x86_64 0:4.0.2-1.el6

Complete!

總結:從錯誤日志分析出真正的原因,文件鎖是本次rpm執行%pre階段的真正的原因。解決問題之后,經常接着其他問題,需要重復3步驟幾次才能徹底解決。

補充:怎么在yum install獲取rpm包

         在執行yum install 的過程會download相關rpm包,在install之前及時ctrl+c終止命令,然后到/var/cache/yum/x86_64/6/mongodb-enterprise/packages/(路徑可能不一致)下獲取包。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM