error while loading shared libraries: libcrypto.so.1.0.0: cannot open shared

samtools: error while loading shared libraries: libcrypto.so.1.0.0: cannot open shared object file: No such file or directory

使用conda 安装samtools,使用samtools报错。说是samtools在使用时要加载libcrypto.so.1.0.0这个文件,但是没找到它,就报错了。
这个错误,我在centOS 7服务器上遇到过,也在win的linux ubuntu子系统下也遇到过。

centOS 7服务器上

samtools: error while loading shared libraries: libcrypto.so.1.0.0: cannot open shared object file: No such file or directory

搜索参考 Problem with libcrypto.so.1.0.0 centos 7

查看一下当前系统文件里,libcrypto.so都有哪些版本

$ ll /usr/lib64/libcrypto.so.*
-rwxr-xr-x. 1 root root 1440256 Mar  9  2016 /usr/lib64/libcrypto.so.0.9.8e
lrwxrwxrwx  1 root root      19 Jul 28 13:24 /usr/lib64/libcrypto.so.10 -> libcrypto.so.1.0.2k
-rwxr-xr-x  1 root root 2521144 Aug  9  2019 /usr/lib64/libcrypto.so.1.0.2k
lrwxrwxrwx. 1 root root      19 Jul  6 22:08 /usr/lib64/libcrypto.so.6 -> libcrypto.so.0.9.8e

属实没有这个libcrypto.so.1.0.0,但是有这个/usr/lib64/libcrypto.so.1.0.2k,此外在anaconda目录下也看到了

$ ll ~/anaconda3/envs/hts/lib/libcrypto.so.*
-rwxrwxr-x 1 user user 3266768 Dec 24 15:46 /home/user/anaconda3/envs/hts/lib/libcrypto.so.1.1

看名字可知道,这两应该相差不多,于是可以尝试建立一个叫libcrypto.so.1.0.0的符号链接指向/usr/lib64/libcrypto.so.1.0.2k 或者~/anaconda3/envs/hts/lib/libcrypto.so.1.1
使用命令

## 其中,`ENV_NAME`是conda环境名,需根据自己的名字进行替换。
$ ln -s ~/anaconda3/envs/ENV_NAME/lib/libcrypto.so.1.1 ~/anaconda3/envs/ENV_NAME/lib/libcrypto.so.1.0.0

or

使用命令

## 其中,`ENV_NAME`是conda环境名,需根据自己的名字进行替换。
$ ln -s /usr/lib64/libcrypto.so.1.0.2k ~/anaconda3/envs/ENV_NAME/lib/libcrypto.so.1.0.0

尝试运行samtools,成功运行。

win linux子系统下

在wsl下,我试过直接用sudo apt-get install samtools安装samtools,然后运行,没出问题。

而用conda安装samtools,运行报错了。(没新建环境,直接在base环境下安装的)
在anconda3安装目录下的lib目录下找到相关文件。
使用命令建立一个合适的软链接

## 这里因为是在默认base环境下安装的samtools,所以不需要进入虚拟环境目录下envs/ENV_NAME的lib目录
$ ln -s ~/anaconda3/lib/libcrypto.so.1.1 ~/anaconda3/lib/libcrypto.so.1.0.0

尝试运行samtools,成功运行。

运行某个软件,报错提示某个lib*.so找不到,这算是一类问题了,
可以尝试建立一个软件需要的文件名指向高或低的版本库文件来解决该问题,(虽然不一定能解决所有问题,但还是能解决部分问题)

在网上搜索,出现这个错误的情况并不单是用samtools,其他软件也有,若是用anconda安装可参考上面的解决方案。
若不是的话,可参考这个命令。将符号链接建立在/usr/lib64/或者/usr/lib/目录下试试看~

## 这个命令也可解决上面centOS 7服务器上samtools的问题,不过需要管理员权限
$ sudo ln -s /usr/lib64/libcrypto.so.1.0.2k /usr/lib64/libcrypto.so.1.0.0
原文地址:https://www.cnblogs.com/huanping/p/13786701.html