5 votes

RHEL 6.x - yum donne des erreurs "ImportError: No module named cElementTree"

Je suis en train d'apporter une série de changements à un groupe de 150 serveurs. Tous les systèmes ont réussi à télécharger et installer avec succès un ensemble spécifique de RPM via yum, sauf un. Sur ce système en particulier, toutes les commandes yum en dehors de "clean" affichent ce qui suit à l'écran :

[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 
    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

J'ai essayé :

  • yum clean
  • réinstaller bits et pièces manuellement via RPM... expat, partie de python, etc.
  • rebâtir la base de données RPM

Des idées ?

10voto

ewwhite Points 193555

La solution :

Apparemment, l'installation d'Oracle sur ce système a injecté le chemin d'Oracle dans LD_LIBRARY_PATH...

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

Ne pas définir la variable a permis à yum de fonctionner correctement à nouveau.

1voto

jowi Points 111

Hmm, en python 2.6, cElementTree se trouve dans /usr/lib64/python2.6/xml/etree/cElementTree.py, qui fait partie du paquet python. Le fait que vous atteigniez l'import cElementTree dans le code yum indique que xml.etree semble manquer.

Essayez de réinstaller python en téléchargeant manuellement le rpm et en utilisant rpm -Uvh.

Si cela ne fonctionne pas, que se passe-t-il si vous import xml.etree.cElementTree dans un shell python ? Que dit rpm --verify python ?

1voto

Bryan Pendleton Points 7878

J'ai également vu quelqu'un provoquer ce problème en plaçant le chemin lib/ d'Oracle dans /etc/ld.so.conf.d

Utilisation:

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

Résolu ce problème en supprimant /etc/ld.so.conf.d/oracle.conf.

0voto

user2785748 Points 1

Récemment, j'ai résolu ce problème comme suit : (OS : CentOS 6.3 avec Oracle installé).

  1. Modifiez /etc/profile et trouvez la ligne export LD_LIBRARY_PATH si elle est présente.

  2. Ajoutez /lib64 avant $ORACLE_HOME/lib

    export  LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib64:$ORACLE_HOME/lib:/lib:/usr/lib:/usr/lib/oracle/11.2/client/lib
  3. Déconnectez-vous et reconnectez-vous en tant que root.

0voto

Vishnu Kumar Points 131

declare -x n'a pas fonctionné.
Cela a fonctionné pour moi.

[root@host ~]# unset LD_LIBRARY_PATH

Si une variable est définie dans /etc/ld.so.conf alors supprimez-la et exécutez la commande # ldconfig pour recréer le cache ld.

[root@host ~]# ldconfig

Confirmez que la bibliothèque Python se lie maintenant à la bonne bibliothèque /lib64/libexpat.so.1.

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X