专栏首页生信技能树Anaconda is a snake.

Anaconda is a snake.

我以前的教程都不改环境变量

我的软件通常是这样安装的:

## https://github.com/najoshi/sickle
cd ~/biosoft
mkdir sickle && cd sickle
wget https://codeload.github.com/najoshi/sickle/zip/master -O sickle.zip
unzip sickle.zip
cd sickle-master
make
~/biosoft/sickle/sickle-master/sickle -h

## Download and install sratoolkit
## http://www.ncbi.nlm.nih.gov/Traces/sra/sra.cgi?view=software
## http://www.ncbi.nlm.nih.gov/books/NBK158900/
mkdir -p ~/biosoft
cd ~/biosoft
mkdir sratoolkit &&  cd sratoolkit
wget https://ftp-trace.ncbi.nlm.nih.gov/sra/sdk/current/sratoolkit.current-centos_linux64.tar.gz
tar zxvf sratoolkit.current-centos_linux64.tar.gz
~/biosoft/sratoolkit/sratoolkit.2.8.2-1-centos_linux64/bin/fastdump -h

cd ~/biosoft
mkdir SnpEff &&  cd SnpEff
##    http://snpeff.sourceforge.net/
##    http://snpeff.sourceforge.net/SnpSift.html 
##    http://snpeff.sourceforge.net/SnpEff_manual.html
wget http://sourceforge.net/projects/snpeff/files/snpEff_latest_core.zip 
## java -jar snpEff.jar download GRCh37.75
## java -Xmx4G -jar snpEff.jar -i vcf -o vcf GRCh37.75 example.vcf > example_snpeff.vcf
unzip snpEff_latest_core.zip

这样我能完美的控制服务器里面的软件,反正都是在 ~/biosoft 目录

如果是常用软件需要添加环境变量

或者某些库文件需要添加到环境变量,我会:

mkdir -p  ~/biosoft/myBin
echo 'export PATH=/home/jianmingzeng/biosoft/myBin/bin:$PATH' >>~/.bashrc 
source ~/.bashrc
cd ~/biosoft
mkdir cmake &&  cd cmake
wget http://cmake.org/files/v3.3/cmake-3.3.2.tar.gz
tar xvfz cmake-3.3.2.tar.gz
cd cmake-3.3.2 
./configure --prefix=/home/jianmingzeng/biosoft/myBin
make 
make install  


cd ~/biosoft
mkdir zlib &&  cd zlib
wget https://zlib.net/zlib-1.2.11.tar.gz
# Extracting files from the downloaded package:
tar -xvzf zlib-1.2.11.tar.gz
# Now, enter the directory where the package is extracted.
cd zlib-1.2.11
# Configuring zlib Library:
./configure --prefix=/home/jianmingzeng/biosoft/myBin
make 
make install 

这样会比较方便写教程

mkdir -p ~/biosoft/GATK/ 
cd ~/biosoft/GATK/ 
wget https://github.com/broadinstitute/gatk/releases/download/4.0.2.1/gatk-4.0.2.1.zip
unzip gatk-4.0.2.1.zip 
 ~/biosoft/GATK/gatk-4.0.2.1/gatk  --help
 # for i in {1..22} X Y ;do echo "-I final_chr$i.vcf" '\';done
module load java/1.8.0_91
GATK=/home/jianmingzeng/biosoft/GATK/gatk-4.0.3.0/gatk
$GATK GatherVcfs  \
-I final_chr1.vcf \
-O merge.vcf 

而且读者也很容易理解,我是在使用哪个软件,是哪个版本。

但是最近为了图省事用了conda

conda这个东西,非常多人给我推荐过,即使是像我这样安装过上千款生物信息学软件的高手有时候也很痛苦各个软件的依赖关系,如果有省事的,我也比较乐意迁移我的习惯,但是,悲剧来了。

它在安装软件的时候需要C库就自己安装,需要R包就自己按照R,需要perl就自己安装,而且我把conda的默认路径添加到环境变量最新,最高权限,就把我默认的perl,r全部替换了。

比如下面的软件会报错:

BEGIN failed--compilation aborted at /home/jianmingzeng/biosoft/starFusion/STAR-Fusion/STAR-Fusion line 12.
Can't locate Set/IntervalTree.pm in @INC (you may need to install the Set::IntervalTree module) (@INC contains: /home/jianmingzeng/biosoft/starFusion/STAR-Fusion/PerlLib /home/jianmingzeng/miniconda2/lib/site_perl/5.26.0/x86_64-linux-thread-multi /home/jianmingzeng/miniconda2/lib/site_perl/5.26.0 /home/jianmingzeng/miniconda2/lib/5.26.0/x86_64-linux-thread-multi /home/jianmingzeng/miniconda2/lib/5.26.0 .) at /home/jianmingzeng/biosoft/starFusion/STAR-Fusion/STAR-Fusion line 12.

瞬间就明白问题所在,conda的某些过程,把我的环境变量污染了,我以前配置好的perl就这样被毁了,所以以前没问题的流程现在就开始报错了。

随口在生信技能树的VIP群里抱怨了一下,然后就有了今天这个教程!

conda请最好是通过source启动,一定要用conda安装不同功能的软件各个env,免得它污染环境变量,使用某些软件,就激活某些env。

leotao的建议

  1. 不要让conda在安装时,把path加到系统里去,要用的时候激活
  2. 激活后,用conda install -p /path/for/biotools/把 生信软件装到特定位置,而且这个位置的python版本最好和系统的一样
  3. 把这个 /path/for/biotools/ 加入到系统path
  4. 可能这样做后,反激活conda后生信软件也能用,同时不会污染环境

另外附上一篇还未公布的笔记:

conda安装的R语言初次使用会报错

我个人是很反对使用conda来安装R语言,但是很多时候conda安装的软件会依赖R,而conda比较实诚,一定要自己安装自己的R,而不是使用系统环境的。

所以就很尴尬。

通常conda本身就在我们的环境变量里面,而且优先级很高。那么conda一旦选择安装了自己的R,就会替代我们的R。

就会冲突,报错如下:

/home/jianmingzeng/miniconda2/lib/R/bin/exec/R: error while loading shared libraries: libicuuc.so.56: cannot open shared object file: No such file or directory

简单搜索,发现的确没有这个库文件:

find ~/miniconda2/ -name *libicuuc.so*
/home/jianmingzeng/miniconda2/pkgs/icu-58.2-h9c2bf20_1/lib/libicuuc.so.58.2
/home/jianmingzeng/miniconda2/pkgs/icu-58.2-h9c2bf20_1/lib/libicuuc.so.58
/home/jianmingzeng/miniconda2/pkgs/icu-58.2-h9c2bf20_1/lib/libicuuc.so
/home/jianmingzeng/miniconda2/lib/libicuuc.so
/home/jianmingzeng/miniconda2/lib/libicuuc.so.58
/home/jianmingzeng/miniconda2/lib/libicuuc.so.58.2

实际上我在我的另外一个服务器上面同样的查找,也是没有这个文件,但是却并不报错。

/usr/local/bin/miniconda3/pkgs/icu-58.2-0/lib/libicuuc.so
/usr/local/bin/miniconda3/pkgs/icu-58.2-0/lib/libicuuc.so.58.2
/usr/local/bin/miniconda3/pkgs/icu-58.2-0/lib/libicuuc.so.58
/usr/local/bin/miniconda3/pkgs/icu-54.1-0/lib/libicuuc.so.54
/usr/local/bin/miniconda3/pkgs/icu-54.1-0/lib/libicuuc.so
/usr/local/bin/miniconda3/pkgs/icu-54.1-0/lib/libicuuc.so.54.1
/usr/local/bin/miniconda3/pkgs/icu-58.2-h9c2bf20_1/lib/libicuuc.so
/usr/local/bin/miniconda3/pkgs/icu-58.2-h9c2bf20_1/lib/libicuuc.so.58.2
/usr/local/bin/miniconda3/pkgs/icu-58.2-h9c2bf20_1/lib/libicuuc.so.58
/usr/local/bin/miniconda3/envs/py2.7/lib/libicuuc.so.54
/usr/local/bin/miniconda3/envs/py2.7/lib/libicuuc.so
/usr/local/bin/miniconda3/envs/py2.7/lib/libicuuc.so.54.1
/usr/local/bin/miniconda3/lib/libicuuc.so
/usr/local/bin/miniconda3/lib/libicuuc.so.58.2
/usr/local/bin/miniconda3/lib/libicuuc.so.58

可以看到这个库文件是conda安装了icu后获得的,那么我应该是要安装特定版本的icu才行。

conda install -c conda-forge icu=56.1

ICU(International Component for Unicode/Unicode国际化组件) 是 Unicode 支持、软件国际化、全球化的一个成熟的、广泛应用的库,是一个由 IBM 赞助、支持和使用的,基于"IBM公共许可证",用于支持软件国际化的开源项目。这个库为 C 和 Java 编程语言提供了一整套操作 Unicode 数据的函数。这个库是在一种无限制的开放源码许可证下发布的,这使它可以在许多应用程序中使用。

问题是解决了,可是我首先不明白问题是如何产生的,其次也不明白,问题被解决的原理是什么。纯粹是凭感觉,凭经验。

之所以两个系统表现不一样,可能是linux版本不一致。

https://github.com/conda/conda/issues/3600

本文分享自微信公众号 - 生信技能树(biotrainee)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-04-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【倒计时7天】2018教育部-腾讯公司产学合作协同育人项目申请即将截止!

    腾讯高校合作
  • ISUX Xcube智能一键生成H5

    腾讯ISUX
  • 【系统设置】CentOS 修改机器名

    ken.io
  • SQL中GROUP BY用法示例

    GROUP BY我们可以先从字面上来理解,GROUP表示分组,BY后面写字段名,就表示根据哪个字段进行分组,如果有用Excel比较多的话,GROUP BY比较类...

    Awesome_Tang
  • 理工男图解零维到十维空间,烧脑已过度,受不了啦!

    让我们从一个点开始,和我们几何意义上的点一样,它没有大小、没有维度。它只是被想象出来的、作为标志一个位置的点。它什么也没有,空间、时间通通不存在,这就是零维度。

    钱塘数据
  • 中国互联网协会发布:《2018中国互联网发展报告》

    在2018中国互联网大会闭幕论坛上,中国互联网协会正式发布《中国互联网发展报告2018》(以下简称《报告》)。《中国互联网发展报告》是由中国互联网协会与中国互联...

    钱塘数据
  • 考研英语-1-导学

    英二图表作文要重视。总体而言,英语一会比英语二难点。不过就写作而言,英语二会比英语一有难度,毕竟图表作文并不好写。

    用户1335799
  • 知识体系解决迷茫的你

    最近在星球里群里都有小伙伴说道自己对未来的路比较迷茫,一旦闲下来就不知道自己改干啥,今天我这篇文章就是让你觉得一天给你 25 个小时你都不够用,觉得睡觉都是浪费...

    桃翁
  • 复杂业务下向Mysql导入30万条数据代码优化的踩坑记录

    从毕业到现在第一次接触到超过30万条数据导入MySQL的场景(有点low),就是在顺丰公司接入我司EMM产品时需要将AD中的员工数据导入MySQL中,因此楼主负...

    haifeiWu
  • 不只是软件,在线也可以免费下载百度文库了。

    不管是学生,还是职场员工,下载各种文档几乎是不可避免的,各种XXX.docx,XXX.pptx更是家常便饭,人们最常用的就是百度文库,豆丁文库,道客巴巴这些下载...

    课代表

扫码关注云+社区

领取腾讯云代金券