conda的安裝與使用


conda的安裝與使用(2019-6-28更新)

122018.10.09 21:10:20字數 2,098閱讀 245,921

2019-6-28 update: 增加刪除、重命名conda環境的操作
2019-6-17 update: 普大喜奔!清華恢復了conda的鏡像!清華🐮🍺!附上最新的添加清華鏡像的命令!
2019-6-12 update: 發現了一個新的anaconda repo叫genomedk,添加了hoptop的搭建本地conda鏡像的教程
2019-5-16 update: 有的小伙伴不知道怎么添加官方源,這邊補充一下
2019-5-7 update: 萬萬沒想到,騰訊的鏡像比清華的先掛了……
2019-4-29 update: 更新了新的查找軟件的recipe,更新了騰訊源來取代即將掛掉的清華源


有很多的生信軟件都可以通過conda安裝,省去了很多的安裝、修bug的煩惱。經常是安裝到崩潰的軟件,conda一行命令就搞定了。前兩天有個胖友問我gatk 3.8的版本在哪里下,下載好了之后怎么安裝,我果斷打開了https://bioconda.github.io/recipes ,告訴她安裝conda吧,只要一行命令conda install gatk就行了。
(2019-4-29 update:這個網址已經掛掉了,請改用https://anaconda.org/bioconda/repo)
然后她很可愛的問我conda怎么裝。。果斷就把這篇教程丟給她了,但是發現現在的用法和以前的不是很一樣了,所以就把原來的教程更新了一下以饗讀者。

 
你要的gatk

conda簡介

Conda 是一個開源的軟件包管理系統和環境管理系統,用於安裝多個版本的軟件包及其依賴關系,並在它們之間輕松切換。 Conda 是為 Python 程序創建的,適用於 Linux,OS X 和Windows,也可以打包和分發其他軟件。

安裝conda

conda分為anaconda和miniconda。anaconda是包含一些常用包的版本(這里的常用不代表你常用 微笑.jpg),miniconda則是精簡版,需要啥裝啥,所以推薦使用miniconda。

下載網址

conda官網:https://conda.io/miniconda.html

選擇適合自己的版本,用wget命令下載。

wget -c https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh 

這里選擇的是latest-Linux版本,所以下載的程序會隨着python的版本更新而更新(現在下載的版本默認的python版本已經是3.7了)

安裝命令:

chmod 777 Miniconda3-latest-Linux-x86_64.sh #給執行權限
bash Miniconda3-latest-Linux-x86_64.sh #運行

注意,以前的教程都是教一路yes下來的,但是會有隱患,特別是當你的服務器之前有安裝過軟件的話,conda會污染你原來的環境,把你原來設置好的東西進行更改。具體的慘痛教訓請參見:
Anaconda is a snake.

所以在詢問是否將conda加入環境變量的時候選擇no。

 
選擇no

啟動conda

在上一步選擇no之后,輸入conda是會報找不到此命令的。那要如何啟動呢?
找到你剛才安裝的miniconda,如果沒有更改過安裝位置的話應該是在/home下面,cd到miniconda3的bin目錄下面,能看到有一個activate。

 
activate


這里需要給activate添加一下權限才能使用

 

chmod 777 activate 

接下來啟動conda

. ./activate #這里的第一個點跟source是一樣的效果,我比較懶。

 

 
成功啟動conda


當命令行前面出現(base)的時候說明現在已經在conda的環境中了。這時候輸入conda list 命令就有反應了

 
conda list

 

添加頻道

2019-5-16 update: 這個道理跟家里的電視機是一樣一樣的,安裝conda就相當於買了一台電視機,但是有電視了不意味着你就能看節目了,你要手動添加頻道才能看你想看的電視節目。
官方channel:

conda config --add channels bioconda conda config --add channels conda-forge 

官方的話這兩個channel應該就夠了的。
2019-6-12 update:最近在裝raxml-ng的時候發現了一個新的channel叫genomedk,各位也可以添加到condarc里去 👇

conda config --add channels genomedk 

順便安利一個我hoptop學長的教程:如何搭建一個本地的conda鏡像(包含bioconda)供各位愛折騰的高端玩家。
2019-6-17 update: 清華恢復了conda 的鏡像了!詳情請看下面:
Anaconda 鏡像即將恢復
借花獻佛給大家復習一遍如何添加清華的鏡像channels: 來源 → 生信媛: 喜大普奔: Anaconda的清華鏡像又可以用了

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/ 

2019-4-29 update: 由於anaconda授權問題,清華源即將關閉,請各位胖友添加以下騰訊源:
騰訊源已經掛掉了

conda config --add channels https://mirrors.cloud.tencent.com/anaconda/pkgs/free/ conda config --add channels https://mirrors.cloud.tencent.com/anaconda/cloud/bioconda/ conda config --add channels https://mirrors.cloud.tencent.com/anaconda/cloud/msys2/ conda config --add channels https://mirrors.cloud.tencent.com/anaconda/cloud/menpo/ conda config --add channels https://mirrors.cloud.tencent.com/anaconda/cloud/peterjc123/ conda config --add channels https://mirrors.cloud.tencent.com/anaconda/pkgs/main/ conda config --add channels https://mirrors.cloud.tencent.com/anaconda/cloud/conda-forge/ conda config --add channels https://mirrors.cloud.tencent.com/anaconda/cloud/pytorch/ 

萬萬沒想到,騰訊的鏡像比清華的先掛了……感謝簡書用戶多啦A夢的時光機_648d
接下來啥鏡像能用我也不知道了……大家都試試吧,或者坐等新的鏡像發布。清華的近一個月應該是還能用的,我今天還測試過的。祝大家好運
顯示安裝的頻道

 conda config --set show_channel_urls yes 

查看已經添加的channels

conda config --get channels 

已添加的channel在哪里查看

vim ~/.condarc

利用conda安裝生物信息軟件

安裝命令:

 conda install gatk

搜索需要的安裝包:

提供一個網址,用於事先查找想安裝的軟件存不存在
conda available packages

當然, 也可以用這個命令進行搜索

 conda search gatk

安裝完成后,可以用“which 軟件名”來查看該軟件安裝的位置:

 which gatk

如需要安裝特定的版本:

conda install 軟件名=版本號
conda install gatk=3.7

這時conda會先卸載已安裝版本,然后重新安裝指定版本。

查看已安裝軟件:

conda list

更新指定軟件:

conda update gatk

卸載指定軟件:

conda remove gatk 

退出conda環境

退出也很簡單,之前我們是. ./activate 或者 (. ~/miniconda3/bin/activate)現在退出只要:

. ./deactivate

就退出當前的環境了

創建軟件的軟鏈接

跟着命令一路敲到這里的小旁友們估計發現了,現在退出conda環境之后之前安裝的軟件全都GG了,敲命令沒法執行了!
怎么辦呢!其實只要把安裝好的軟件軟連接到一個處在環境變量里的位置就可以使用了。三步走:

  • 第一步,創建一個文件夾
    我一般的習慣是在/home目錄下創建一個.soft文件夾
  • 第二步,將這個文件夾添加到環境變量中
export PATH="~/.soft:$PATH"
  • 第三步,軟鏈接
ln -s ~/miniconda3/bin/gatk ~/.soft 

這樣就可以運行啦~如果還是不行建議試試初始化一下bashrc:. ./bashrc

創建conda環境

之前創建的時候顯示的是(base)這是conda的基本環境,有些軟件依賴的是python2的版本,當你還是使用你的base的時候你的base里的python會被自動降級,有可能會引發別的軟件的報錯,所以,可以給一些特別的軟件一些特別的關照,比如創建一個單獨的環境。
在conda環境下,輸入conda env list(或者輸入conda info --envs也是一樣滴)查看當前存在的環境:

 
目前的環境


目前只有一個base

 

conda create -n python2 python=2
#-n: 設置新的環境的名字
#python=2 指定新環境的python的版本

conda會創建一個新的python2的環境,並且會很溫馨的提示你只要輸入conda activate python2就可以啟動這個環境了

 

 
新的環境

退出環境

如上面的截圖提到的,只要

conda deactivate

2019-6-28 update: 如何刪除和重命名一個已存在的環境

刪除環境

刪除也很容易的

conda remove -n myenv --all 

就可以退出當前環境。
掌握了創建和刪除我們就可以實現重命名的操作了

重命名環境

實際上conda並沒有提供這樣的功能,但是可以曲線救國,原理是先克隆一個原來的環境,命名成想要的名字,再把原來的環境刪掉即可
參考自:conda 創建/刪除/重命名 環境
接下來演示把一個原來叫做py2的環境重新命名成python2:

conda create -n python2 --clone py2
conda remove -n py2 --all

騷操作:allias簡化啟動

 

 
image.png


linux提供了一個給大家偷懶的命令叫alias,只要在你的.bashrc里設置一下就好了,我添加了一條叫做condaup的命令,這樣就可以免去每次敲. ~/miniconda/bin/dactivate的麻煩,一步搞定~技術宅改變世界!

 
image.png

 

參考及感謝

 

我以前的教程都不改環境變量

我的軟件通常是這樣安裝的:

## 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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM