我正在对一组 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