今天想尝试下 pyspider (以前没用过), 在 pyenv 的 anaconda 下进行了安装, 之后在使用的时候发生了 segmentation fault.
coredumpctl 查看了一下, 问题出在 libcrypto.so.1.0.0 这个文件
本来以为是 anaconda 版本太低了, 更新到最新版本之后还是这个问题
pyenv在安装其它python的时候, 可以修改编译参数, 测试按照下面安装的python是不会报错的
CFLAGS=-I/usr/include/openssl LDFLAGS=-L/usr/lib pyenv install 3.6.2
而如果直接 " pyenv install 3.6.2 " , 也会发生segmentation fault. 而且出现问题的文件也是 anaconda 里面的 libcrypto.so.1.0.0 这个文件(没去了解过pyenv, 照理说pyenv 新装的 3.6.2应该和 anaconda没有关系才对, 不知道为什么会去引用 anaconda 下面的 libcrypto.so.1.0.0).
pyenv 安装 anaconda 的时候不能调整 CFLAGS 之类的参数(二进制安装), 网上也搜不到相关东西, 感觉没什么希望了, 最后尝试了一下用系统的 "/usr/lib/libcrypto.so.1.0.0" 把 anaconda 文件夹里面的 "libcrypto.so.1.0.0"替换了, 居然可以成功运行, 不会发生SF了, 不知道这样有没有后患.
发个帖子占个坑. 不知道有没有人了解这个的, 求解~
离线
你的 anaconda 是二进制安装吧?它依赖旧版本的 openssl。
离线
你的 anaconda 是二进制安装吧?它依赖旧版本的 openssl。
anaconda 好像都是二进制安装的, 用的是 pyenv 默认的安装方式
也的确是依赖 openssl-1.0
不过 arch 上面 openssl 1.1 和 1.0 都是安装着的
我现在也不太清楚为什么用系统的 libcrypto.so.1.0.0 把 anaconda 里面的文件替换掉就正常了 (
离线
所以还是用源里的包好。
应该是 anaconda 的 libcrypto.so.1.0.0 链接到了系统的某个库,版本或者编译参数什么的不兼容,所以挂了。
离线
所以还是用源里的包好。
应该是 anaconda 的 libcrypto.so.1.0.0 链接到了系统的某个库,版本或者编译参数什么的不兼容,所以挂了。
不太清楚, 之前确认过了, 原来那个文件不是链接
替换了之后目前情况是正常的, 如果之后不能工作的话还是用pyenv安装换过编译参数的python版本好了
离线
我这里的「链接」指的是 ld 所进行的动态链接啦。
离线