處理conda安裝工具的動(dòng)態(tài)庫問題——解決記錄

問題記錄

在conda的某工作環(huán)境下使用rmats2rmats2sashimiplot作圖的時(shí)候,發(fā)現(xiàn)有一個(gè)報(bào)錯(cuò):無法找到libcrypto.so.1.0.0,我查看了游一下samtools的依賴

$ldd `which samtools`
    linux-vdso.so.1 =>  (0x00007fff96dfe000)
    libm.so.6 => /lib64/libm.so.6 (0x00007fc22ef22000)
    libz.so.1 => /home/sxj/biosoft/anaconda/envs/dss/bin/../lib/libz.so.1 (0x00007fc22ed09000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007fc22eb05000)
    libcrypto.so.1.0.0 => not found
    libcurl.so.4 => /home/sxj/biosoft/anaconda/envs/dss/bin/../lib/libcurl.so.4 (0x00007fc22ea7c000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fc22e860000)
    libc.so.6 => /lib64/libc.so.6 (0x00007fc22e493000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fc22f24b000)
    libssh2.so.1 => /home/sxj/biosoft/anaconda/envs/dss/bin/../lib/./libssh2.so.1 (0x00007fc22e45f000)
    libssl.so.1.1 => /home/sxj/biosoft/anaconda/envs/dss/bin/../lib/./libssl.so.1.1 (0x00007fc22e3c9000)
    libcrypto.so.1.1 => /home/sxj/biosoft/anaconda/envs/dss/bin/../lib/./libcrypto.so.1.1 (0x00007fc22e0d1000)
    libgssapi_krb5.so.2 => /home/sxj/biosoft/anaconda/envs/dss/bin/../lib/./libgssapi_krb5.so.2 (0x00007fc22e081000)
    libkrb5.so.3 => /home/sxj/biosoft/anaconda/envs/dss/bin/../lib/./libkrb5.so.3 (0x00007fc22dfa5000)
    libk5crypto.so.3 => /home/sxj/biosoft/anaconda/envs/dss/bin/../lib/./libk5crypto.so.3 (0x00007fc22df86000)
    libcom_err.so.3 => /home/sxj/biosoft/anaconda/envs/dss/bin/../lib/./libcom_err.so.3 (0x00007fc22df7f000)
    librt.so.1 => /lib64/librt.so.1 (0x00007fc22dd77000)
    libkrb5support.so.0 => /home/sxj/biosoft/anaconda/envs/dss/bin/../lib/././libkrb5support.so.0 (0x00007fc22dd67000)
    libresolv.so.2 => /lib64/libresolv.so.2 (0x00007fc22db4e000)

我們可以看到libcrypto.so.1.0.0 => not found,檢索的時(shí)候發(fā)現(xiàn)洲更之前的簡書提到過類似的問題如何用conda安裝軟件|處理conda安裝工具的動(dòng)態(tài)庫問題,解決的辦法不外乎:

  • 更新降級(jí)或者重新安裝
  • 安裝對(duì)應(yīng)版本的libcrypto.so.1.0.0

解決記錄一

首先我們來查看一下洲更解決的辦法, 即檢查conda的安裝鏡像的優(yōu)先級(jí):

$cat .condarc
ssl_verify: false
channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
  - defaults
show_channel_urls: true

這里我看了一下,我的鏡像的優(yōu)先級(jí)不對(duì),GitHub上有幾個(gè)issue專門針對(duì)這個(gè)問題作出了解答,入下:

samtools 1.9 dependency pulls in wrong version of openssl #12100

OpenSSL migration

但是我們這里看了一下我的openssl的安裝來源:

$conda list
openssl                   1.1.1b               h14c3975_1    https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge

鏡像沒問題啊,我重新安裝了以后發(fā)現(xiàn)問題也沒有解決。

這時(shí)候有個(gè)老哥的評(píng)論引起了我的注意:

This is because the samtools 1.9 depends on openssl 1.0.x (I hope the next version will support or just change the shared library name) and openssl 1.1.x was installed,if you must keep the openssl 1.1.x version, a possible solution is :
1. move to the /*Your_Path_of_conda/lib (for me ~/anaconda3/lib/) folder
2. give a soft link of "libcrypto.so.1.1" named "libcrypto.so.1.0.0" to cheat on the samtools

這個(gè)操作騷啊,下面有11個(gè)??,還有一個(gè)?,看得我頭皮發(fā)麻,不用考慮就知道這個(gè)沒問題。

ls /home/sxj/biosoft/anaconda/envs/ROSE_ngsplot/bin/../lib/libcry*
/home/sxj/biosoft/anaconda/envs/ROSE_ngsplot/bin/../lib/libcrypto.a  /home/sxj/biosoft/anaconda/envs/ROSE_ngsplot/bin/../lib/libcrypto.so  /home/sxj/biosoft/anaconda/envs/ROSE_ngsplot/bin/../lib/libcrypto.so.1.1
ln /home/sxj/biosoft/anaconda/envs/ROSE_ngsplot/bin/../lib/libcrypto.so.1.1 /home/sxj/biosoft/anaconda/envs/ROSE_ngsplot/bin/../lib/libcrypto.so.1.0.0

問題解決

按照這個(gè)思路,我又在另外一個(gè)環(huán)境里面發(fā)現(xiàn)了libcrypto.so.1.0.0,

$ldd `which samtools`
    linux-vdso.so.1 =>  (0x00007fffbe7fe000)
    libz.so.1 => /home/sxj/biosoft/anaconda/bin/../lib/libz.so.1 (0x00007f142c7f2000)
    libm.so.6 => /lib64/libm.so.6 (0x00007f142c4c9000)
    libbz2.so.1.0 => /home/sxj/biosoft/anaconda/bin/../lib/libbz2.so.1.0 (0x00007f142c2b7000)
    liblzma.so.5 => /home/sxj/biosoft/anaconda/bin/../lib/liblzma.so.5 (0x00007f142c084000)
    libcurl.so.4 => /home/sxj/biosoft/anaconda/bin/../lib/libcurl.so.4 (0x00007f142be07000)
    libcrypto.so.1.0.0 => /home/sxj/biosoft/anaconda/bin/../lib/libcrypto.so.1.0.0 (0x00007f142b9b6000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f142b79a000)
    libc.so.6 => /lib64/libc.so.6 (0x00007f142b3cc000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f142ca0b000)
    librt.so.1 => /lib64/librt.so.1 (0x00007f142b1c4000)
    libssh2.so.1 => /home/sxj/biosoft/anaconda/bin/../lib/./libssh2.so.1 (0x00007f142af94000)
    libssl.so.1.0.0 => /home/sxj/biosoft/anaconda/bin/../lib/./libssl.so.1.0.0 (0x00007f142ad1b000)
    libgssapi_krb5.so.2 => /home/sxj/biosoft/anaconda/bin/../lib/./libgssapi_krb5.so.2 (0x00007f142aad2000)
    libkrb5.so.3 => /home/sxj/biosoft/anaconda/bin/../lib/./libkrb5.so.3 (0x00007f142a805000)
    libk5crypto.so.3 => /home/sxj/biosoft/anaconda/bin/../lib/./libk5crypto.so.3 (0x00007f142a5d6000)
    libcom_err.so.3 => /home/sxj/biosoft/anaconda/bin/../lib/./libcom_err.so.3 (0x00007f142a3d3000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007f142a1ce000)
    libkrb5support.so.0 => /home/sxj/biosoft/anaconda/bin/../lib/././libkrb5support.so.0 (0x00007f1429fc3000)
    libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f1429da9000)

同樣可以通過軟鏈的方式解決了問題。

解決記錄二

conda install -c bioconda samtools openssl=1.0

問題解決

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容