Работа с обновлением libevent на Amazon AWS
Я создаю приложение (на Python) на Amazon EC2, которое имеет следующую цепочку зависимостей:
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
Не желая тратить много времени на эту проблему, я попытался смягчить ее, создав символическую ссылку на всегда последнюю версию:
$ 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
Я немного озадачен тем, как поступить. Должен ли я создать больше символических ссылок? К чему? Или есть лучший способ решить эту проблему...
PS. Для записи я использую Amazon AMI.
1 ответ
В обновлении libevent появился вариант с библиотекой ABI (вы, вероятно, найдете libevent-1.4.so.3
). Вы не можете просто создать символическую ссылку, потому что двоичные файлы, созданные на основе предыдущего ABI, не будут работать (следовательно, undefined symbol: current_base
ошибка). Вам нужно пересобрать gevent против новой версии библиотеки. Похоже, что вы установили его из архива яйца или исходного кода, поэтому удалите текущий модуль (удалить /usr/lib/python2.6/site-packages/gevent-0.13.7-py2.6-linux-x86_64.egg
) и установите его снова.