Lidando com upgrade de libevent no Amazon AWS

3

Estou criando um aplicativo (em Python) no Amazon EC2 que possui uma cadeia de dependência a seguir:

gevent-websocket ---> gevent ---> libevent

O último (libevent) foi atualizado no domingo e meu servidor agora está gerando esse erro:

(...)
  File "/usr/lib/python2.6/site-packages/gevent-0.13.7-py2.6-linux-x86_64.egg/gevent/__init__.py", line 41, in <module>
    from gevent import core
ImportError: libevent-1.4.so.2: cannot open shared object file: No such file or directory

Não querendo gastar muito tempo com o problema, tentei amenizá-lo criando um link simbólico para uma versão sempre recente:

$ sudo ln -s /usr/lib64/libevent.so /usr/lib64/libevent-1.4.so.2

Mas não funcionou bem:

(...)
  File "/usr/lib/python2.6/site-packages/gevent-0.13.7-py2.6-linux-x86_64.egg/gevent/__init__.py", line 41, in <module>
    from gevent import core
ImportError: /usr/lib/python2.6/site-packages/gevent-0.13.7-py2.6-linux-x86_64.egg/gevent/core.so: undefined symbol: current_base

Estou um pouco confuso sobre como proceder. Devo criar mais links simbólicos? Para quê? Ou existe uma maneira melhor de resolver este problema ...

PS. Para o registro estou usando o Amazon AMI.

    
por Dreen 24.10.2012 / 00:00

1 resposta

3

A atualização do libevent introduziu um aumento na versão ABI da biblioteca (você provavelmente encontrará libevent-1.4.so.3 ). Você não pode simplesmente criar um link simbólico porque binários construídos contra o ABI anterior não funcionarão (daí o erro undefined symbol: current_base ). Você precisa reconstruir o gevent contra a nova versão da biblioteca. Parece que você instalou a partir de um ovo ou fonte de tarball, portanto, remova o módulo atual (delete /usr/lib/python2.6/site-packages/gevent-0.13.7-py2.6-linux-x86_64.egg ) e instale-o novamente.

    
por 24.10.2012 / 00:15