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