前言:主机部署了垃圾回收机制,trash-empty的时候总是报错md5的问题,放好长时间了,虽然不影响主机垃圾回收机制,但是看着不得劲,决定整一波~但是这一波下来也是学会了好多东西。
1、既然python报错,那就先看python版本,是默认版本还是安装其他的版本,当然第一反应还是想着pip安装一波,后续证明pip这种想法是错的。
python -m pip install xxxx
2、知识盲区,就百度,按照百度方法的错误分析思路
>>>dir(hashlib)
['__all__', '__builtins__', '__doc__', '__file__', '__get_builtin_constructor', '__name__', '__package__' , 'algorithms', 'new', 'sha224', 'sha256', 'sha384', 'sha512']
会发现里面列出的和正常的相比缺少了
'_hashlib','md5', 'sha1'
使用命令
>>>import _hashlib
ImportError: libssl.so.4: cannot open shared object file: No such file or directory
好的,问题出来了,缺失了这个库~
3、检查系统是否安装了openssl
如果未安装,https://www.openssl.org/source/old/1.0.1/openssl-1.0.1e.tar.gz
下载之后/config shared zlib-dynamic 生成Makefile文件
然后make,生成
libssl.so.1.0.0
libcrypto.so.1.0.0
建立步骤5的软链接。
4、安装了还报错,为了点啥呢?那接着查
查看/usr/lib64/目录下(如是32位系统那路径就是/usr/lib/)libssl.so库文件的版本,我的是libssl.so.1.0.0
5、创建软链接(ln源就是上面查出的对应版本的库文件):
到这里按照百度大神们的经验基本就解决了。
但是,这个动态库我搞了半天,发现链接是越建越多,导致主机除常规命令外,使用其他命令时会报core dump,就很难受。
首先先查看主机
rpm -qa | grep openssl
rpm -e | grep openssl --nodeps ----无视依赖卸载
然后卸载,core dump这个报错暂时算是解决了
想删除lib64目录下关于openssl这两个库的软链接,重新链接,但是rm命令还是会报python的错误,更改了setup.py以及Setup.dist这俩文件重编了python之后,还是会报错。
终极解决办法:(虽然简单粗暴,但是不建议使用,如有不慎,主机会直接崩溃,需重装os)
我的OS版本
然后找了6.5版本直接将lib64与bin64打包,上传到此环境,解压,问题直接解决。
后续,才了解到trash-empty相关的垃圾回收的命令以及知识。
这个问题浪费了一天的工作时间,一直纠缠在库之间的链接问题上面,导致后续主机几近崩溃,事实告诉我们,不要忽略问题本身以及除了百度之外,要想想为什么?
马后炮:
其实这个问题当时要是重新更换版本,建立python链接,应该会解决;
还有删除/usr/lib64下面的openssl相关库的软链按照上述链接方法也是可以解决;