Вношу набор изменений в группу из 150 серверов. Все системы смогли успешно загрузить и установить определенный набор RPM через yum
, кроме одного. В этой конкретной системе все команды yum, кроме "clean", выводят на экран следующее:
[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
Я пробовал:
expat
, часть python
, и т.д.Есть предположения?
Исправление:
Судя по всему, установка 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 снова нормально работать.
Я также видел, как кто-то вызвал эту проблему, поставив Oracle lib/
путь в /etc/ld.so.conf.d
С помощью:
эхо /opt/oracle/app/product/11.2.0/dbhome_1/lib/> /etc/ld.so.conf.d/oracle.conf
Решил эту проблему, удалив /etc/ld.so.conf.d/oracle.conf
.
Хм, в python 2.6 cElementTree находится в /usr/lib64/python2.6/xml/etree/cElementTree.py, который является частью пакета python. Тот факт, что вы достигли import cElementTree
в коде yum указывает, что xml.etree
кажется отсутствует.
Попробуйте переустановить python, вручную загрузив rpm и используя rpm -Uvh
.
Если это не сработает, что произойдет, если вы import xml.etree.cElementTree
в оболочке питона? Что значит rpm --verify python
сказать?
Недавно я решил эту проблему следующим образом: (ОС: CentOS 6.3 с установленным Oracle).
редактировать /etc/profile
и найти export LD_LIBRARY_PATH
линия, если она есть.
Добавить /lib64
перед $ORACLE_HOME/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib64:$ORACLE_HOME/lib:/lib:/usr/lib:/usr/lib/oracle/11.2/client/lib
Выйдите из системы и повторно войдите в систему как root.
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
отключить LD_LIBRARY_PATH, ldconfig, ldd /usr/lib64/python2.6/lib-dynload/pyexpat.so
Как упоминалось в https://serverfault.com/a/686667/431469, это сработало для меня.