在Amazon AWS上处理升级libevent的问题

我正在Amazon EC2上构build一个具有以下依赖关系链的应用程序(使用Python):

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

最后一个(libevent)在星期天升级了,我的服务器现在产生这个错误:

 (...) 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 

不想花太多时间在这个问题上,我试图通过创build一个符号链接到一个总是最近的版本来缓解它:

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

但是这并不奏效:

 (...) 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 

关于如何进行,我有点难住。 我应该创build更多的符号链接? 什么? 还是有更好的方法来解决这个问题…

PS。 为了logging,我正在使用Amazon AMI。

libevent升级引入了一个图书馆ABI版本的凹凸(你可能会发现libevent-1.4.so.3 )。 你不能只创build一个符号链接,因为针对之前的ABI构build的二进制文件将不起作用(因此undefined symbol: current_base错误)。 您需要重新编译新的库版本。 它看起来像你从蛋或源代码安装它,所以删除当前模块(删除/usr/lib/python2.6/site-packages/gevent-0.13.7-py2.6-linux-x86_64.egg )和再次安装它。