我正在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 )和再次安装它。