【问题标题】:Komodo IDE 7 crashes on Ubuntu 11.10Komodo IDE 7 在 Ubuntu 11.10 上崩溃
【发布时间】:2012-02-13 11:45:45
【问题描述】:

在 Ubuntu 11.10 上启动 Komodo IDE 7 在启动期间在 libcrypto.so 中崩溃(请参阅 this forum discussion):

#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

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

【问题讨论】:

    标签: python ubuntu crash openssl komodo


    【解决方案1】:

    经调查,这发生在调用_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 位/其他版本,您可能需要进行一些调整

    【讨论】:

    • 这对我来说也适用于 ubuntu 11.10 32 位版本谢谢大卫 :)
    • 这在 2 月至 3 月的两台机器上对我有用,但在我的最新 Ubuntu 11.10 的新机器上不起作用。我得到:“无法找到构建这些模块的必要位:_bsddb _sqlite3 _tkinter bsddb185 dbm gdbm sunaudiodev zlib 要找到必要的位,请在 setup.py 中的 detect_modules() 中查找模块名称。无法构建这些模块:crypt nis" 在构建 cpython 2.6.5 时。
    • @hughdbrown:我想我已经找到了在 Ubuntu 11.10 上实现这项工作的解决方案。该问题似乎与Ubuntu's move towards multiarch support 有关,涉及将一堆系统文件移动到新位置。您需要在 cpython 的 setup.py 中添加几行,以便它可以找到您的系统库现在所在的目录。 Here's a diff that shows the exact changes to make to the setup.py file.(当你运行它时它仍然会抱怨丢失的位,但 _hashlib.so 无论如何都会构建。)
    • @jalefkowit:是的,我在 support.activestate.com [support.activestate.com/node/7538].我已经应用了您的修复程序,Komodo 现在正在为我工​​作。非常感谢。这是我在新 Ubuntu 机器上安装的所有东西中最难运行的东西。
    • @jalefkowit:请随时编辑上述解决方案以合并您的更改
    猜你喜欢
    • 2012-01-08
    • 1970-01-01
    • 1970-01-01
    • 2011-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-09
    • 1970-01-01
    相关资源
    最近更新 更多