RHEL 6.x - yum 给出“ImportError:没有名为 cElementTree 的模块”错误

RHEL 6.x - yum 给出“ImportError:没有名为 cElementTree 的模块”错误

我正在对一组 150 台服务器进行一系列更改。yum除一台系统外,所有系统都能够通过 成功下载并安装一组特定的 RPM。在这个特定的系统中,除“clean”之外的所有 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 手动重新安装部分内容... expat,部分python等等。
  • 重建 RPM 数据库

有什么想法吗?

答案1

修复:

显然,该系统上的 Oracle 安装将 Oracle 的路径注入了 LD_LIBRARY_PATH...

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

取消设置该变量可使 yum 再次正常运行。

答案2

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

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

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

答案3

我还看到有人通过将 Oracle 的lib/路径放入/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

答案4

declare -x没用。
这个对我有用。

[root@host ~]# unset LD_LIBRARY_PATH

如果在 /etc/ld.so.conf 中定义了任何变量,则删除它并运行 # ldconfig 命令来重新创建 ld 缓存。

[root@host ~]# ldconfig

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

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

相关内容