我的軟件通常是這樣安裝的:
## 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
目錄
或者某些庫文件需要添加到環(huán)境變量,我會:
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這個東西,非常多人給我推薦過,即使是像我這樣安裝過上千款生物信息學軟件的高手有時候也很痛苦各個軟件的依賴關系,如果有省事的,我也比較樂意遷移我的習慣,但是,悲劇來了。
它在安裝軟件的時候需要C庫就自己安裝,需要R包就自己按照R,需要perl就自己安裝,而且我把conda的默認路徑添加到環(huán)境變量最新,最高權限,就把我默認的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的某些過程,把我的環(huán)境變量污染了,我以前配置好的perl就這樣被毀了,所以以前沒問題的流程現在就開始報錯了。
隨口在生信技能樹的VIP群里抱怨了一下,然后就有了今天這個教程!
conda請最好是通過source啟動,一定要用conda安裝不同功能的軟件各個env,免得它污染環(huán)境變量,使用某些軟件,就激活某些env。
不要讓conda在安裝時,把path加到系統(tǒng)里去,要用的時候激活
激活后,用conda install -p /path/for/biotools/把 生信軟件裝到特定位置,而且這個位置的python版本最好和系統(tǒng)的一樣
把這個 /path/for/biotools/ 加入到系統(tǒng)path
可能這樣做后,反激活conda后生信軟件也能用,同時不會污染環(huán)境
另外附上一篇還未公布的筆記:
我個人是很反對使用conda來安裝R語言,但是很多時候conda安裝的軟件會依賴R,而conda比較實誠,一定要自己安裝自己的R,而不是使用系統(tǒng)環(huán)境的。
所以就很尷尬。
通常conda本身就在我們的環(huán)境變量里面,而且優(yōu)先級很高。那么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
簡單搜索,發(fā)現的確沒有這個庫文件:
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 數據的函數。這個庫是在一種無限制的開放源碼許可證下發(fā)布的,這使它可以在許多應用程序中使用。
問題是解決了,可是我首先不明白問題是如何產生的,其次也不明白,問題被解決的原理是什么。純粹是憑感覺,憑經驗。
之所以兩個系統(tǒng)表現不一樣,可能是linux版本不一致。
https://github.com/conda/conda/issues/3600
聯(lián)系客服