Footsteps on my way !
perl/linux/测序分析

处理conda安装工具的动态库缺失问题

conda的确是一个非常好的工具,对于初学者而言,安装软件就跟用apt/yum软件管理器一样方便。但软件安装后有时会出现的动态库缺失的问题。

以安装软件lefse(https://bioconda.github.io/recipes/lefse/README.html)为例:

首先我设置/添加频道(这个添加顺序是错误的,所以导致后续报错,正确方法见解决方法2):

[root@localhost soft_backup]# conda config --add channels defaults
 Warning: 'defaults' already in 'channels' list, moving to the top
 [root@localhost soft_backup]# conda config --add channels conda-forge
 [root@localhost soft_backup]# conda config --add channels defaults
 Warning: 'defaults' already in 'channels' list, moving to the top
 [root@localhost soft_backup]# conda config --add channels bioconda
 [root@localhost miniconda2]# more ~/.condarc #频道顺序
 channels:
 - bioconda
 - defaults
 - conda-forge

安装完后出现报错:

(lefse) [root@localhost envs]# run_lefse.py 
Traceback (most recent call last):
 File "/share/soft/miniconda2/envs/lefse/bin/run_lefse.py", line 4, in <module>
 from lefse import *
 File "/share/soft/miniconda2/envs/lefse/share/lefse-1.0.8.post1-0/lefse.py", line 3, in <module>
 import rpy2.robjects as robjects
 File "/share/soft/miniconda2/envs/lefse/lib/python2.7/site-packages/rpy2/robjects/__init__.py", line 16, in <module>
 import rpy2.rinterface as rinterface
 File "/share/soft/miniconda2/envs/lefse/lib/python2.7/site-packages/rpy2/rinterface/__init__.py", line 92, in <module>
 from rpy2.rinterface._rinterface import (baseenv,
ImportError: libiconv.so.2: cannot open shared object file: No such file or directory

#通过一顿百度谷歌,发现上述libiconv.so.2报错是其中运行R时动态库的缺失问题,而rpy2.robjects报错是因为rpy2需要调用R

(lefse) [root@localhost envs]# R 
/share/soft/miniconda2/envs/lefse/lib/R/bin/exec/R: error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory

#差这个库,那我就安装

[root@localhost lib]# conda install -n lefse libiconv 
安装完成后又报错:
ImportError: libicuuc.so.54: cannot open shared object file: No such file or directory

#通过/share/soft/miniconda2/envs/lefse/lib中高版本的库链接成对应的低版本解决:ln -s libicuuc.so.58.2 libicuuc.so.54 ,老错误解决,又报新错:

ImportError: libtinfow.so.6: cannot open shared object file: No such file or directory

#通过libtinfow.so.6缺失,一顿百度谷歌,发现只有ncurses包没安装时会抱这个错,而我明明安装了,当我爬贴爬到:https://github.com/samtools/samtools/issues/790 时 发现有人回答通过 conda install -c conda-forge ncurses可以解决。所以:

解决方法一:安装对应频道的ncurses, 虽然前面遇到的问题解决,但在使用过程中还是会报错,所以方法一失效,推荐方法二!

conda install -n lefse -c conda-forge ncurses

解决方法二:

所以究其原因,应该是频道顺序错误导致安装的包不一致。我又仔细看了一下lefse的安装说明,发现lefse安装说明明确说明需要激活bioconda频道,而激活bioconda的正确顺序如下:

[root@localhost miniconda2]# conda config --add channels defaults
Warning: 'defaults' already in 'channels' list, moving to the top
[root@localhost miniconda2]# conda config --add channels conda-forge
Warning: 'conda-forge' already in 'channels' list, moving to the top
[root@localhost miniconda2]# conda config --add channels bioconda
Warning: 'bioconda' already in 'channels' list, moving to the top
[root@localhost miniconda2]# more ~/.condarc 
channels:
 - bioconda     #第一优先级
 - conda-forge  #第二优先级
 - defaults     #第三优先级

按上述顺序调整频道的顺序后,正常安装lefse,问题解决:

conda create -n lefse lefse

最后如果你不喜欢用包辅助安装,这里附一下普通自定义安装lefse的链接:http://blog.sciencenet.cn/blog-306699-997026.html

参考:

https://www.jianshu.com/p/f8a0692df264

https://github.com/samtools/samtools/issues/790

尊重他人劳动成果,转载请注明出处:Bluesky's blog » 处理conda安装工具的动态库缺失问题

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址