conda的确是一个非常好的工具,对于初学者而言,安装软件就跟用XXX软件管理器一样方便。正因为他如此便利,以至于我介绍如何手动安装工具时,总有人问我为啥不用conda。

我用conda,并且用的很好。

下面解决一个非常有趣的conda安装工具后出现的动态库缺失的问题。这是我最近遇到的例子,

$ samtools

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

安装的samtools居然说不能用,原因是动态库找不到。那么这个问题应该怎么解决呢?

首先是确认问题,通过ldd查看samtools依赖了哪些工具。

$ which samtools

~/miniconda3/envs/align/bin/samtools

$ ldd ~/miniconda3/envs/align/bin/samtools

linux-vdso.so.1=>(0x00007ffc4aef8000)

libpthread.so.0=>/lib64/libpthread.so.0(0x00007f71902b3000)

libz.so.1=>/home/wangjw/miniconda3/envs/align/bin/../lib/libz.so.1(0x00007f719009b000)

libm.so.6=>/lib64/libm.so.6(0x00007f718fd99000)

libdl.so.2=>/lib64/libdl.so.2(0x00007f718fb95000)

libbz2.so.1.0=>/home/wangjw/miniconda3/envs/align/bin/../lib/libbz2.so.1.0(0x00007f718f982000)

liblzma.so.5=>/home/wangjw/miniconda3/envs/align/bin/../lib/liblzma.so.5(0x00007f718f75c000)

libdeflate.so =>/home/wangjw/miniconda3/envs/align/bin/../lib/libdeflate.so (0x00007f718f551000)

libncursesw.so.5=>/home/wangjw/miniconda3/envs/align/bin/../lib/libncursesw.so.5(0x00007f718f2f6000)

libcrypto.so.1.0.0=>/home/wangjw/miniconda3/envs/align/bin/../lib/libcrypto.so.1.0.0(0x00007f718eeb6000)

libcurl.so.4=>/home/wangjw/miniconda3/envs/align/bin/../lib/libcurl.so.4(0x00007f718ec42000)

libc.so.6=>/lib64/libc.so.6(0x00007f718e87e000)

/lib64/ld-linux-x86-64.so.2(0x000055f87a5eb000)

libtinfow.so.5=> not found

librt.so.1=>/lib64/librt.so.1(0x00007f718e675000)

libssl.so.1.0.0=>/home/wangjw/miniconda3/envs/align/bin/../lib/./libssl.so.1.0.0(0x00007f718e3ff000)

的确是libtinfow.so.5找不到了。

原因我根据直觉推测,是我安装的1.8版本的samtools的预编译版本安装时不会自带tinfow, 它默认我们自己提供tinfow这个动态库。

如何解决?

第一个方案降级samtools,没必要使用最新版的,新版虽然功能多,但是bug也不会少。所以可以使用旧版,比如说1.5

$ conda install samtools=1.5

ok,这个问题解决了

第二种方案,你一定要使用samtools的最新版,那么我们就自己解决不存在的依赖库问题。这个问题其实的确有人提及

谷歌一下

有趣的是各个搜索引擎都企图让我把关键字改成 libinfo.so.5,真的是有趣呀

ncurses不存在导致

当我准备去安装ncurses的时候,却提示这个软件已经安装好了。

$ conda install ncurses

# All requested packages already installed

但是问题还在这是为什么?

显然是ncurses安装时存在了问题,当我卸载ncurses时我找到了问题所在,这就是conda的各个channel之间冲突了,默认去安装官方的ncurses,而不是conda-forge, 而bioconda的软件包搭配conda-forge才能用的很好

注意ncurses的安装地址

因此修改 ~/.condarc提高conda-forge的优先级

conda-forge优先级最高

再次安装:

正确的地址

这下运行成功了

嘿嘿嘿

最后说明,samtools的tview依赖于ncurses。

如何用conda安装软件|处理conda安装工具的动态库问题的更多相关文章

  1. yolov3 进化之路,pytorch运行yolov3,conda安装cv2,或者conda安装找不到包问题

    yolov3 进化之路,pytorch运行yolov3,conda安装cv2,或者conda安装找不到包问题 conda找不到包的解决方案. 目前是最快最好的实时检测架构 yolov3进化之路和各种性 ...

  2. 使用mamba加快conda安装软件速度?

    conda是个安装软件的神器,但镜像不稳定,下载安装软件的速度有时很慢.对于几十Mb甚至上百Mb的软件往往下不动,下了半天可能失败. 找了一个叫mamba的加速神器,可以用来并行下载和安装,大大加快速 ...

  3. Linux 中如何用源代码安装软件,以及如何卸载它

    https://www.linuxidc.com/Linux/2017-12/149839.htm http://www.openssh.com/ http://www.openssh.com/por ...

  4. Linux如何用yum安装软件或服务

    百度百科: Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器.基于RPM包管理,能够从指定的服 ...

  5. Linux 下编译安装软件,找不到共享库 xx.so 的解决办法

    编译memcached时,报错没有libevent,于是下载libevent,configure , make && make install ,然后在重新安装memcache成功之后 ...

  6. (二)Makefile——自动编译、清理、安装软件

    每次都要敲击冗长的编译命令,每次都要清理之前的编译中间结果和最终结果,在安装软件时复制剪切大量的动态库,在卸载软件时删除很多的动态库和配置文件.好吧,我被逼向了makefile. helloworld ...

  7. pgmpy包的安装,以及conda的安装

    pgmpy包的安装,以及conda的安装 pgmpy的官方网站是这样说明安装过程的: 链接:Installation 共有三个步骤,第一步是安装依赖包 首先它讲述了在linux下使用pip安装的方法: ...

  8. conda 安装虚拟环境 fastai

    一.conda常用命令 1.创建一个虚拟环境env_name,后面跟的是创建这个环境时,同时安装的软件包 conda create -n env_name python=3.6 2.通过克隆创建一个环 ...

  9. 常用深度学习框架(keras,pytorch.cntk,theano)conda 安装--未整理

    版本查询 cpu tensorflow conda env list source activate tensorflow python import tensorflow as tf 和 tf.__ ...

随机推荐

  1. Step7:SQL Server 多实例下的复制

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 搭建步骤(Procedure) 注意事项(Attention) 二.背景(Contexts) ...

  2. 苹果手机显示分享链接的方法html页面

    function onBridgeReady(){ WeixinJSBridge.call('showOptionMenu'); } if (typeof WeixinJSBridge == &quo ...

  3. Autel MaxiSys Elite Diagnostic Tool Common problem solving methods

    1. updating MaxiFlash Elite to firmware 3.21? My maxisys communicate with the MaxiFlash J2534 but Ma ...

  4. 自学Java第二周的总结

    在这一周里我在网上学习了java的对象和类,了解了对象与类以及简单的用法.对象是类的一个实例(对象不是找个女朋友),有状态和行为.例如,一条狗是一个对象,它的状态有:颜色.名字.品种:行为有:摇尾巴. ...

  5. zabbix agent配置详解(windows)

    客户端操作  标注:监控zabbix_agentd客户端安装对象是win server 2008操作系统 64位. 1.  下载zabbix_agentd监控客户端软件安装包(windows操作系统客 ...

  6. 用Intellij IDEA建mybatis案例

    用IDEA建mybatis案例 环境准备: 首先,建库建表(最好用navicat或sqlpro直接导) 然后打开IDEA, 1. java--->javaEE---> java app-- ...

  7. 合并ts到mp4

    这个比较好用. copy /b d:\xxx\download_ts\*   d:\xxx\download_ts\new.mp4 用python ffmpeg也可以,不过我合出来有卡顿或者掉声问题, ...

  8. DATAPUMP PERFORMANCE EXPDP IS VERY SLOW 10.2.0.4 TO 11.2.0.2

    APPLIES TO: Oracle® Database - Enterprise Edition - Version 10.2.0.4 to 11.2.0.2 [Release 10.2 to 11 ...

  9. .net下安装 ZooKeeper.Net

    PM> Install-Package ZooKeeper.Net正在尝试解析依赖项“log4net (≥ 1.2.10)”.正在安装“log4net 1.2.10”.已成功安装“log4net ...

  10. JavaScript中数组中的方法:push()、pop()、shift()、unshift()、slice()、splice()、reverse()、join()、split()、concat()、indexOf()、forEach()、map()、

      1.创建数组的几种方法 //a).通过new来创建数组,new可以省略 var arr=new Array(); var arr=Array(); //b). .通过new来创建数组,并且赋值 v ...