Komodo IDE 7 在 Ubuntu 11.10 上崩溃

1 投票
1 回答
851 浏览
提问于 2025-04-17 12:57

在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

我该怎么做才能让它成功运行呢?

1 个回答

3

经过调查发现,这个问题出现在调用 _hashlib 模块中的一个函数时。这个模块是标准的Ubuntu Python安装中自带的模块(可以通过 sys.builtin_module_names 查看),所以在 lib/python/lib/python2.6/lib-dynload/_hashlib.so 下的 _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位或其他版本的系统,你可能需要做一些调整。

撰写回答