软件安装

当前位置: 首页 > 使用指南 > 软件安装

说明 

   ●  各种脚本、jar包、编译好的二进制可执行包, e.g. NCBI直接下载编译好的blast

   ●  采用C/C++等编写, 只有源码,按文档要求编译, e.g. 下载R源码, 自己编译安装

   ●  系统自带的包管理器(需root权限)

   ●  bioconda, 生信软件包管理器

   ●  docker、singularity容器镜像

   ●  Python、perl、R等的模块或包


环境变量

PATH, 自动搜索安装的可执行文件

LD_LIBRARY_PATH,动态链接库搜索位置

PERL5LIBperl模块位置

PYTHONPATHpython模块位置

   1        export PATH=/opt/bin/:$PATH #或写入~/.bashrc文件


脚本软件

采用Perl/Python等解释型语言编写, 下载后有解释器即可运行。

用法:系统安装对应的解释器, 添加x权限

优点:下载就可以直接用, 修改方便

缺点:可能需要很多依赖, 性能差

   1      $ mv N50.pl ~/opt/bin/

   2      $ export PATH="$PATH:$HOME/opt/bin/" #或写入~/.bashrc文件


jar包

采用java或类java语言编写, 开发人员已编译打包好, 下载可用。

用法:系统安装java运行环境JDK, java -jar package.jar

优点:下载就可以直接用, 跨平台

缺点: 相比C/C++性能较差, 对内存有一定要求

   1      $ cd ~/opt

   2      $ wget http://www.usadellab.org/cms/uploads/supplementary/Trimmomatic/Trimmomatic-0.39.zip

   3      $ unzip Trimmomatic-0.39.zip

   4      $ java -jar trimmomatic-0.36.jar PE \

   5      -phred33 input_forward.fq.gz input_reverse.fq.gz \

   6      output_forward_paired.fq.gz output_forward_unpaired.fq.gz \

   7      output_reverse_paired.fq.gz output_reverse_unpaired.fq.gz \

   8      ILLUMINACLIP:/usr/local/src/Trimmomatic/Trimmomatic-0.36/adapters/TruSeq3-PE.fa:2:30:10 \

   9      LEADING:3 TRAILING:3 SLIDINGWINDOW:4:15 HEADCROP:8 MINLEN:36


二进制可执行包

采用C/C++等编译语言编写, 开发人员已编译好, 下载可用

用法:下载系统对应版本的二进制软件, 添加x权限

优点:下载就可以直接用, 不依赖编译器

缺点:没法看到源码;不能根据需要预编译;依赖预编译系统的底层库; 跨平台性差

   1      $ cd ~/opt

   2      $ mkdir sratoolkit && cd sratoolkit

   3      $ wget http://ftp-trace.ncbi.nlm.nih.gov/sra/sdk/2.6.3/sratoolkit.2.6.3-centos_linux64.tar.gz

   4      $ tar zxvf sratoolkit.2.6.3-centos_linux64.tar.gz

   5      $ chmod +x ~/opt/sratoolkit/sratoolkit.2.6.3-centos_linux64/bin/*

   6      $ ~/opt/sratoolkit/sratoolkit.2.6.3-centos_linux64/bin/fastdump -h


源码编译

采用C/C++等编译语言编写, 开发人员提供源代码以及安装文档, 用户根据平台自行编译

用法: 安装好编译器以及依赖库,按文档要求编译

优点: 可以指定预编译选项;使用自己系统的依赖库

缺点: 对新手不友好; 很多软件编译步骤复杂; 自己手动解决依赖;


常用编译器

GCC(GNU Compiler Collection,GNU编译器套件)

由GNU开发的编程语言编译器,是采用GPL及LGPL协议所发行的自由软件,是Linux及类Unix标准编译器,被认为是跨平台编译器的事实标准

GCC可处理C、C++、Fortran、Pascal、Objective-C、Java等其他语言

Intel Composer XE (ntel 编译器)

Intel编译器是Intel公司发布的x86平台(IA32/INTEL64/IA64/MIC)编译器产品,支持C/C++/Fortran编程语言

Intel编译器针对Intel处理器进行了专门优化,性能优异,在其它x86处理器平台上表现同样出色

LLVM (Low Level Virtual Machine,底层虚拟机)

Apple资助开发的编译器,支持C、C++、Objective-C和Objective-C++

编译速度快;占用内存小;模块化设计,易与IDE集成及其他用途重用;诊断信息可读性强,有利于调试


源代码后缀规范

在Linux系统中,可执行文件没有统一的后缀,系统从文件的属性来区分。而源代码、目标文件等后缀名最好保持统一的规范,便于识别区分。

文件类型 后缀名
C source .c
C++ source .C, .cc, .cpp, .cxx, .c++
Fortran77 source .f, .for
Fortran90/95 source .f90
汇编source .s
目标文件 .o
头文件 .h
Fortran90/95模块文件 .mod
动态链接库 .so
静态链接库 .a


c语言编译

单源码文件编译

   1      # 编译时,指定生成可执行文件的路径或文件名(-o参数)

   2      $ gcc -o hello hello.c

   3      $ file hello

   4      hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV),

   5      for GNU/Linux 2.6.4, dynamically linked (uses shared libs), not stripped

   6      $ gcc -o /home/test/hello hello.c


   1      #include <stdio.h>

   2      int main()

   3      {

   4            printf("Hello world.\n");

   5      }

2个源码文件编译

   1      #多个源文件同时编译,生成可执行文件sum

   2      $ gcc -o sum main.c function.c

   3      # 源文件分别编译,再将目标文件连接成可执行文件

   4      $ gcc -c main.c

   5      $ gcc -c function.c

   6      $ gcc -o sum main.o function.o


主程序源文件 main.c

   1      #include <stdio.h>

   2      int main()

   3      {

   4          int sum=0,r,i;

   5          for(i=1;i<=10;i++)

   6        {

   7           r=function(i);

   8          sum=sum+r;

   9        }

  10        printf("sum is %d\n",sum);

  11   }

子函数源文件function.c

int function(int x)

{

int result;

result=x*x;     return(result);

}


Makefile

源文件数量非常多、存放在不同目录下、相互之间有各种依赖关系以及先后顺序关系时,需要使用Makefile进行管理。Makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。

  ●   软件程序的管理工具

  ●   定义规则,实现自动化编译

  ●   处理源代码、目标文件、头文件、库文件等依赖关系

  ●   根据规则和依赖关系,结合时间戳实现精细化控制

make命令执行 Makefile 中的定义的编译流程。make命令默认读取当前目录 Makefile 或 makefile 文件,也可以用 -f 参数指定 Makefile 文件

configure

autotool生成configure文件, 有程序不提供configure, 提供autogen.sh

Makefile.am和makefile.in生成Makefile

大型开源程序通常使用configure脚本生成Makefile,Configure脚本作用:

  ●   检查编译环境 (数据类型长度(int),操作系统,CPU平台)

  ●   检查依赖头文件及库文件

  ●   设置安装路径

  ●   设置编译器及编译参数

configure → make → make install

Configure常用参数:

  ●   --prefix=/opt/software 指定安装路径

  ●   -h 查看configure帮助,configure支持选项

  ●   CC=gcc/icc 设置c语言编译器

  ●   CFLAGS=-O2 –funrool- c编译器参数

  ●   CXX=g++/icpc 设置c++编译器

  ●   CXXFLAGS=-O2 c++编译器参数

  ●   FC=gfortran/ifort 设置fortran编译器

  ●   FCFLAGS=-O2 fortran编译器参数

  ●   --with-XXX 编译时使用XXX包

  ●   --without-XXX 编译时不使用XXX包

  ●   --enable-XXX 启用XXX特性

  ●   --disable-XXX 不启用XXX特性

编译安装samtools

   1      $ wget https://github.com/samtools/samtools/releases/download/1.3.1/samtools-1.3.1.tar.bz2

   2      $ tar xvfj samtools-1.3.1.tar.bz2

   3      $ cd samtools-1.3.1

   4      $ ./configure –prefix=/home/username/opt/samtools/1.3.1

   5      $ make

   6      $ make install

   7      $ echo "export PATH=/home/username/opt/samtools/1.3.1:$PATH" >> ~/.bashrc

cmake

cmake:跨平台编译工具,生成makefile。其配置文件为CMakeLists.txt。

cmake → make → make install

cmake常用参数:

  ●   -DCMAKE_INSTALL_PREFIX=/opt/software 指定安装路径

  ●   -DCMAKE_C_COMPILER=/opt/gcc/bin/gcc 设置c语言编译器

  ●   -DCMAKE_CXX_FLAGS ="-O2 –funrool-" c编译器参数

  ●   -DCMAKE_CXX_COMPILER = =/opt/gcc/bin/gcc 设置c++编译器

也可以使用CC CXX 指定gcc

   1      $ export CC=$HOME/opt/gcc/9.4/bin/gcc

   2      $ export CXX=$HOME/opt/gcc/9.4/bin/g++

   3      $ tar –xf gromacs-5.1.4.tar.gz

   4      $ cd gromacs-5.1.5

   5      $ mkdir build && cd build

   6      $ cmake ..

   7      $ make –j 20

   8      $ make install


系统包管理器

用法:不同的操作系统用法不大一样 yum: RedHat, CentOS, Fedora; apt-get: Ubuntu, Debian; brew:MacOS

优点:简单, 一键搞定;包管理器自己解决软件依赖

缺点:生物信息软件大部分不在包管理器中, 用于安装底层依赖库;需要root权限

   1      # ubuntu

   2      sudo apt-get -y install libcurl4-gnutls-dev

   3      sudo apt-get -y install libxml2-dev

   4      sudo apt-get -y install libssl-dev

   5      sudo apt-get -y install libmariadb-client-lgpl-dev

   6      # centos

   7      $ yum search openssl

   8      $ yum install -y openssl-devel


conda

Anaconda 用于科学计算Python发行版,使用conda 管理包和环境。conda 不仅管理安装python包,还可以是各种其他的应用软件。

优点:不需要root权限;自行解决依赖关系;一键安装, 不需要配置环境

缺点:有些软件conda中没有, 需要自己手动安装;环境混乱、版本管理麻烦


配置

   1      # 第一步:下载miniconda3

   2      $ wget https://nanomirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-$(uname -m).sh

   3      # 第二步:安装miniconda3

   4      $ bash Miniconda3-latest-Linux-x86_64.sh -b -p $HOME/miniconda3

   5      # 第三步:将miniconda3保存到环境路径并启用

   6      $ echo "export PATH=$PREFIX/bin:"'$PATH' >> ~/.bashrc

   7      $ source ~/.bashrc

   8      #第四步:基本配置bioconda,添加清华源镜像

   9      $ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free

  10     $ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge

  11     $ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda

  12     $ conda config --set show_channel_urls yes


管理软件包

   1      # 搜索需要安装的软件包,获取其完成名字

   2      conda search <package name>

   3      # 安装软件包

   4      conda install <package name>

   5      # 安装特定版本的软件包

   6      conda install <package name>=版本号

   7      # 更新软件包

   8      conda update <package name>

   9      # 移除软件包

  10    conda remove <package name>

  11     # 安装R,及80多个常用的数据分析包, 包括idplyr, shiny, ggplot2, tidyr, caret 和 nnet

  12     conda install -c r r-essentials


管理环境

通过conda环境,可以实现软件版本管理、流程环境管理。

   1      # 创建名为env_name的新环境,并在该环境下安装名为 package_name 的包

   2      $ conda create -n env_name package_name

   3      # 可以指定新环境的版本号,例如:创建python2环境,python版本为2.7,同时还安装了numpy pandas包

   4      $ conda create -n python2 python=2 numpy pandas

   5      # 激活 python2环境,通过python -V可以看到是python2.7

   6      $ conda activate python2

   7      # python2 环境中安装相关包

   8      $ conda install pandas

   9      # 退出 python2 环境

  10     $ conda deactivate

  11     # 删除环境

  12     $ conda remove -n env_name --all

  13     # 查看当前存在的虚拟环境

  14     $ conda env list

  15     $ conda info -e


直接使用bioconda内的软件

部分编译比较复杂的软件,可以在bioconda内找到该软件,然后点击"Files",在里面下载编译好的软件,执行时如果有库缺失、GCC版本不够的报错,可以载入相应的库和GCC,此方式可以快速安装复杂软件。


docker

操作系统之上的虚拟层,提供独立于系统的软件环境;兴起于互联网行业,便于项目开发和交付部署,提高硬件资源利用率。

优点: 简单,对于复杂软件可以一键安装;无需安装任何依赖

缺点: 无法与作业调度软件结合使用;权限要求较高,多用户使用有风险

    docker pull quay.io/qiime2/core:2021.8


singularity

HPC集群的容器工具,直接使用docker镜像。使用singularity搭建分析流程,可以在所有机器上运行。

优点: 简单;无需安装任何依赖;安全;可结合作业调度系统;高性能;适应性广

缺点: 软件较少;文件比较大

   1      # 从给定的URL下载容器镜像,常用的有URL有Docker Hub(docker://user/image:tag) 和 Singularity Hub(shub://user/image:tag)

   2      $ singularity pull tensorflow.sif docker://tensorflow/tensorflow:latest

   3      # 在容器中执行某个命令

   4      $ singularity exec /share/Singularity/saige_0.35.8.2.sif

   7      # 进入容器

   8      $ singularity shell /share/Singularity/ubuntu.sif


R包安装

   1      # 从官方源安装,最常见方式

   2      $ >install.packages("ggplot2")

   3      # 同时安装多个包

   4      $ >install.packages(c("broom", "clusterProfiler", "dorothea", "DOSE", "dplyr"))

   5      # 指定安装源和安装路径

   6      $ >install.packages("ggplot2", repos = "https://mirrors.ustc.edu.cn/CRAN/",lib="~/opt/Rlib")

   7      # 使用Rscript,方便安装包报错时试错,不用每次进入R交互界面,然后又退出

   8      $ Rscript -e 'install.packages(c("RcppArmadillo"), repos="https://mirrors.ustc.edu.cn/CRAN/")'

   9      # 源码安装

  10     $ R CMD INSTALL /path/rpackage.tar.gz

  11     # 或

  12     $ >install.packages("/path/rpackage.tar.gz", repos = NULL, type = "source")

  13     # 安装指定版本的R包

  14     $ >require(devtools)

  15     $ >install_version("limma", version = "1.8.0")

  16     # 或

  17     $ >install.packages("https://cran.r-project.org/src/contrib/Archive/limma/limma_1.8.10.tar.gz", repos=NULL, type="source")

  18     # bioconductor包安装

  19     $ >install.packages("BiocManager")

  20     $ >BiocManager::install("clusterProfiler")

  21     # 指定安装位置和源

  22     $ >options(BioC_mirror="https://mirrors.tuna.tsinghua.edu.cn/bioconductor")

  23     $ >.libPaths(c("~/R/4.2/", .libPaths()))

  24     $ >BiocManager::install("clusterProfiler")

  25     # 也可以使用Rscript

  26     $ Rscript -e 'BiocManager::install("clusterProfiler")'


   1      # 测试包是否正常安装

   2      $ >library(package)

   3      # 其它包常见操作

   4      # 卸载包

   5      $ >remove.packages("package")

   6      # 更新包

   7      $ >update.packages("package")

   8      # 查看R包安装位置

   9      $ >.libPaths()

  10     # 查看已安装包

  11     $ >installed.packages()

  12     # 查看包版本

  13     $ >packageVersion("package")

  14     # 查看包安装位置

  15     $ >find.package("package")


使用pak安装R包,pak可自动安装CRAN、Bioconductor、github、本地的R包。

   1      $ >install.packages("pak")

   2      $ >library(pak)

   3      # 安装CRAN中的包

   4      $ >pak:pak("ggplot2")

   5      # 指定安装路径

   6      $ >pak:pak("ggplot2", lib="PATH")

   7      # 安装Bioconductor中的包

   8      $ >pak::pak("clusterProfiler")

   9      # 安装github上的包

  10     $ >pak::pak("lchiffon/REmap")

  11     # 使用URL

  12     $ >pak::pkg("url::https://cran.r-project.org/src/contrib/Archive/tibble/tibble_3.1.7.tar.gz")

  13     # 本地安装

  14     # shell

  15     $ wget https://cytotrace.stanford.edu/CytoTRACE_0.3.3.tar.gz

  16     # 解压后为CytoTRACE

  17     $ tar -xf CytoTRACE_0.3.3.tar.gz

  18     # R

  19    $ >pak::local_install("CytoTRACE")

  20     # 或

  21     $ >pkg_install("local::./CytoTRACE_0.3.3.tar.gz")

  22     # 安装多个包

  23     $ >pak::pkg(c("BiocNeighbors", "ComplexHeatmap", "circlize", "NMF"))

  24     # 更新包

  25     $ >pak::pkg_install("tibble")

  26     # 更新包的所有依赖,默认不更新依赖

  27     $ >pak::pkg("tibble", upgrade = TRUE)

  28     # 重装包

  29     $ >pak::pkg_install("tibble?reinstall")

  30     # 卸载包

  31     $ >pkg_remove("tibble")


perl包安装

   1      # CPAN 模块自动安装

   2      # 如果使用系统的cpan,则需要root权限,因此普通用户建议使用cpanm代替

   3      $ cpan -i Bio::SeqIO

   4      # cpanm 推荐

   5      $ cpanm --mirror http://mirrors.163.com/cpan --mirror-only Bio::SeqIO

   6      # 源码安装

   7      $ tar xvzf BioPerl-1.7.5.tar.gz

   8      $ cd BioPerl-1.7.5

   9      $ perl Makefile.PL (PREFIX=/home/opt/perl_modules)

  10     $ make && make install

  11     # 添加环境变量

  12     $ export PERL5LIB=$PERL5LIB:/home/opt/perl_modules/lib/site_perl #或者把该行内容添加到 ~/.bashrc

  13     # 测试perl模块安装正常

  14     $ perl -MBio::SeqIO -e1 或 perldoc Bio::SeqIO

  15     #如下报错,可能是perl版本冲突导致,即安装perl包的版本和使用perl包的版本不一致,建议将~/.bashrc perl相关的部分注释,然后再测试

  16     perl: symbol lookup error: perl5/lib/perl5/x86_64-linux-thread-multi/auto/Cwd/Cwd.so: undefined symbol


python包安装

   1      # conda

   2      $ conda install biopython

   3      # pip

   4      $ pip install --prefix=/home/opt/ppython_modules/ biopython 或 pip install --user biopython

   5      # 使用国内源

   6      $ pip install --prefix=/home/opt/ppython_modules/ -i https://pypi.tuna.tsinghua.edu.cn/simple biopython

   7      # requirements.txt文件

   8      $ pip install -r requirements.txt --prefix=/home/opt/ppython_modules/

   9      # 源码

  10     $ git clone https://github.com/madmaze/pytesseract.git

  11     $ python setup.py install --prefix=/home/opt/ppython_modules或 pip install . --prefix=$PREFIX_PATH

  12     # 测试python模块安装正常

  13     $ python -c "import Bio"

  14     # 添加环境变量

  15     $ export PYTHONPATH=$PREFIX_PATH:/home/opt/python_modules/lib/python2.7/site-packages/ #或者加到 ~/.bashrc

centos7中高版本的python,使用pip安装包时可能出现报错 pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available,最快捷的解决办法为:

     $ pip3 install pymysql -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com


注意事项

生信绝大部分软件都可以使用普通用户安装,不需要root权限。普通用户无法在集群上使用yum apt等安装软件;

软件安装过程中出现libxx库文件缺失的问题,一般都可以找到相应的源码,编译安装,设置环境变量即可;

避免使用conda一键安装软件,时间长了会导致各种环境问题,直至所有软件不可用,推到重来;

软件安装或使用过程中出现问题,最好将~/.bashrc中无关部分都临时注释掉,避免其它软件的影响;

使用软件前看一下集群公共软件库,尽量使用公共软件,一个软件一个环境,出现问题比较好排查;

华中农大公众号