RHEL 6.x – yum给出“ImportError:No module named cElementTree”错误

我正在对一组150台服务器进行一系列更改。 所有系统都能够通过yum成功下载和安装一组特定的RPM,除了一个。 一个这个特定的系统,除了“干净”之外的所有yum命令将以下内容转储到屏幕上:

 [root@dev1v ~]# yum install sssd Loaded plugins: rhnplugin /usr/lib64/python2.6/xmlrpclib.py:612: DeprecationWarning: The xmllib module is obsolete. Use xml.sax instead. import xmllib # lazy subclassing (!) Traceback (most recent call last): File "/usr/bin/yum", line 29, in <module> yummain.user_main(sys.argv[1:], exit_code=True) File "/usr/share/yum-cli/yummain.py", line 285, in user_main errcode = main(args) File "/usr/share/yum-cli/yummain.py", line 136, in main result, resultmsgs = base.doCommands() File "/usr/share/yum-cli/cli.py", line 434, in doCommands self._getTs(needTsRemove) File "/usr/lib/python2.6/site-packages/yum/depsolve.py", line 99, in _getTs self._getTsInfo(remove_only) . . . File "/usr/lib/python2.6/site-packages/yum/repoMDObject.py", line 124, in __init__ self.parse(srcfile) File "/usr/lib/python2.6/site-packages/yum/repoMDObject.py", line 140, in parse parser = iterparse(infile) File "/usr/lib/python2.6/site-packages/yum/misc.py", line 1169, in cElementTree_iterparse _cElementTree_import() File "/usr/lib/python2.6/site-packages/yum/misc.py", line 1164, in _cElementTree_import import cElementTree ImportError: No module named cElementTree 

我试过了:

  • 百胜清洁
  • 通过RPM手动重新安装零件… expatpython一部分等
  • 重buildRPM数据库

有什么想法吗?

修正:

显然,这个系统上的Oracle安装将Oracle的path注入到LD_LIBRARY_PATH中。

 [root@dev1v etc]# export declare -x LD_LIBRARY_PATH="/home/oracle/app/oracle/product/11.2.0/client_1/lib" 

取消设置variables允许yum再次正常工作。

嗯,在Python 2.6中,cElementTree位于/usr/lib64/python2.6/xml/etree/cElementTree.py中,它是python包的一部分。 您在yum代码中到达import cElementTree的事实表明xml.etree似乎丢失。

尝试通过手动下载rpm并使用rpm -Uvh重新安装python。

如果这不起作用,如果您在python shell中import xml.etree.cElementTree会发生什么? rpm --verify python说什么?

我也看到有人通过将Oracle的lib/path放在/etc/ld.so.conf.d引起这个问题

使用:

echo /opt/oracle/app/product/11.2.0/dbhome_1/lib/> /etc/ld.so.conf.d/oracle.conf

通过删除/etc/ld.so.conf.d/oracle.conf解决了这个问题。

最近,我解决了这个问题,如下所示:(操作系统:安装Oracle的CentOS 6.3)。

  1. 编辑/etc/profile并findexport LD_LIBRARY_PATH行(如果存在)。

  2. $ORACLE_HOME/lib之前添加/lib64

     export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib64:$ORACLE_HOME/lib:/lib:/usr/lib:/usr/lib/oracle/11.2/client/lib 
  3. 以root身份注销并重新login。

declare -x没有工作。
这对我有效。

 [root@host ~]# unset LD_LIBRARY_PATH 

如果在/etc/ld.so.conf中定义了任何variables,则删除它并运行#ldconfig命令重新创buildldcaching。

 [root@host ~]# ldconfig 

确认Python库现在链接到正确的/lib64/libexpat.so.1库。

 [root@host ~]# ldd /usr/lib64/python2.6/lib-dynload/pyexpat.so 

取消设置LD_LIBRARY_PATH,ldconfig,ldd /usr/lib64/python2.6/lib-dynload/pyexpat.so

正如在https://serverfault.com/a/686667/431469中提到的,这对我有效&#x3002;