1

在 Ubuntu 11.10 上启动 Komodo IDE 7 在启动期间崩溃libcrypto.so(请参阅此论坛讨论):

#0  0xb121ffbc in EVP_PKEY_CTX_dup () from /lib/i386-linux-gnu/libcrypto.so.1.0.0
#1  0xb12121f6 in EVP_MD_CTX_copy_ex () from /lib/i386-linux-gnu/libcrypto.so.1.0.0
#2  0xb1212362 in EVP_MD_CTX_copy () from /lib/i386-linux-gnu/libcrypto.so.1.0.0
#3  0xb0e93c4d in ?? () from .../Komodo-IDE-7/lib/python/lib/python2.6/lib-dynload/_hashlib.so
#4  0xb0e93fc9 in ?? () from .../Komodo-IDE-7/lib/python/lib/python2.6/lib-dynload/_hashlib.so
#5  0xb549ba2d in PyCFunction_Call () from .../Komodo-IDE-7/lib/mozilla/libpython2.6.so

我怎样才能让它成功运行?

4

1 回答 1

3

经调查,这发生在调用_hashlib模块中的函数时。该模块是标准 Ubuntu python 安装中的一个内置模块(请参阅 参考资料sys.builtin_module_names),因此_hashlib.so存在于其下lib/python/lib/python2.6/lib-dynload/_hashlib.so的不是 Ubuntu python 构建的一部分。

您可以通过从标准 Python 源重新编译该模块来解决此问题:

export KOMODO_DIR=/home/davidf/Applications/Komodo-IDE-7
hg clone http://hg.python.org/cpython
cd cpython
hg checkout v2.6.5
(
    cd $KOMODO_DIR/lib/python/lib
    # handle no libssl.so
    ln -s /lib/libssl.so.0.9.8
    ln -s ./libssl.so.0.9.8 libssl.so
    # save the original _hashlib library
    cd python2.6/lib-dynload/
    mv _hashlib.so _hashlib.so.orig
)
# cd to python src for python 2.6.5
./configure --prefix $KOMODO_DIR/lib/python/

# step here to patch setup.py as @jalefkowit describes
# ...

# build and copy result to komodo's lib-dynload directory
$KOMODO_DIR/lib/python/bin/python setup.py build_ext
cp build/lib.linux-i686-2.6/_hashlib.so $KOMODO_DIR/lib/python/lib/python2.6/lib-dynload/

注意事项:

  • 我实际上并没有使用上面的脚本;这是一种消遣。可能有错误:)
  • 您需要 CPython 2.6.5 源代码;如果你愿意,你可以通过其他方式获得这些
  • 可能有一种更短、更简单的方法来做到这一点
  • 这将构建所有 Python 扩展模块,而不仅仅是您需要的那个
  • 在我的 Ubuntu 11.10 上,有一个libssl.so.0.9.8,但没有libssl.so. 上面的链接允许 Python 构建找到它们。
  • 这实际上适用于我的机器,但对于 64 位/另一个版本,您可能需要进行一些调整
于 2012-02-13T11:47:50.193 回答