Работа с обновлением 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) и установите его снова.

Другие вопросы по тегам