简介

在数据分析过程中,会需要用到非常多的软件,每个软件的安装方法都不太一样,每一个软件所依赖的系统环境也不尽相同,甚至会相冲突,如 Python2 和 python3 等。
在 Linux 命令行安装软件与在 Windows 或 Mac 的可视化桌面安装软件区别较大。
在这里我们简单介绍一下几款软件的安装方法,后文会对每一种软件的安装和使用方法做详细介绍。下一节也会详细介绍如何使用conda来管理软件包和环境。
(注:Linux 用户分管理员用户和普通用户,管理员用户可以用 apt 或 yum 安装软件,但普通用户没有权限。以下介绍面向普通用户)
对于普通用户来说,一般安装软件的流程是:下载安装包—解压—编译—添加环境变量($PATH)

PATH 变量

$PATH 变量记录命令所在的路径,但我们在 Linux 命令行输入命令时,系统会去 $PATH 变量中记录的路径寻找是否有该命令,如果有,就会执行,否则报错提示命令不存在。一个初始化的 $PATH 变量记录的路径如下:

  1. # 在 Linux 中 echo 命令是打印的意思
  2. $ echo $PATH
  3. /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

上面以冒号 : 分割的每一个路径下都保存了很多命令,比如我们最常用的 ls 命令,就存在以下这个目录:

  1. $ which ls
  2. /usr/bin/ls

理解环境变量 PATH 是非常重要的,对后续的环境和软件管理都非常重要。比如部分用户会在自己家目录下创建一个 bin 文件夹并将其添加到环境变量,后续安装软件,就将软件的可执行文件拷贝或软连接到这个 bin 文件夹:

  1. mkdir ~/bin
  2. echo 'export "PATH=~/bin:$PATH"' >> ~/.bashrc
  3. source ~/.bashrc

这种方法也是推荐使用的方法,简洁又高效。

二进制软件安装

二进制软件的安装比较简单,安装步骤主要是:下载—解压—添加到PATH。举个例子,GATK 是做基因组数据分析必不可少的软件,功能非常强大,但是其安装方法却很简单:

  1. cd biosoft
  2. # 下载
  3. wget -c https://github.com/broadinstitute/gatk/releases/download/4.2.0.0/gatk-4.2.0.0.zip
  4. # 解压
  5. unzip gatk-4.2.0.0.zip

在没有添加到 PATH 之前,如果想要调用gatk,如调用帮助文档,需要用路径的形式调用:

  1. # 绝对路径调用帮助文档
  2. $ ~/biosoft/gatk-4.2.0.0/gatk --help
  3. Usage template for all tools (uses --spark-runner LOCAL when used with a Spark tool)
  4. gatk AnyTool toolArgs
  5. Usage template for Spark tools (will NOT work on non-Spark tools)
  6. gatk SparkTool toolArgs [ -- --spark-runner <LOCAL | SPARK | GCS> sparkArgs ]
  7. Getting help
  8. gatk --list Print the list of available tools
  9. gatk Tool --help Print help on a particular tool
  10. Configuration File Specification
  11. --gatk-config-file PATH/TO/GATK/PROPERTIES/FILE
  12. gatk forwards commands to GATK and adds some sugar for submitting spark jobs
  13. --spark-runner <target> controls how spark tools are run
  14. valid targets are:
  15. LOCAL: run using the in-memory spark runner
  16. SPARK: run using spark-submit on an existing cluster
  17. --spark-master must be specified
  18. --spark-submit-command may be specified to control the Spark submit command
  19. arguments to spark-submit may optionally be specified after --
  20. GCS: run using Google cloud dataproc
  21. commands after the -- will be passed to dataproc
  22. --cluster <your-cluster> must be specified after the --
  23. spark properties and some common spark-submit parameters will be translated
  24. to dataproc equivalents
  25. --dry-run may be specified to output the generated command line without running it
  26. --java-options 'OPTION1[ OPTION2=Y ... ]' optional - pass the given string of options to the
  27. java JVM at runtime.
  28. Java options MUST be passed inside a single string with space-separated values.
  29. --debug-port <number> sets up a Java VM debug agent to listen to debugger connections on a
  30. particular port number. This in turn will add the necessary java VM arguments
  31. so that you don't need to explicitly indicate these using --java-options.
  32. --debug-suspend sets the Java VM debug agent up so that the run get immediatelly suspended
  33. waiting for a debugger to connect. By default the port number is 5005 but
  34. can be customized using --debug-port

将可执行文件软连接或者拷贝到 ~/bin 中,即可随时随地调用:

  1. ln -s ~/biosoft/gatk-4.2.0.0/gatk ~/bin/
  2. gatk --help

当然,GATK 依赖 java ,所以需要系统上安装了 java。新版本 GATK 以不再依赖 java 8,即使系统上 java=11 也是可以的。

源码安装(需要编译)

源码安装软件比二进制软件多了一步编译,这里举两个例子:

示例一:Aspera

我们在下载 SRA 和 ENA 数据库的原始测序数据时,经常要用到一个软件 aspera

  1. cd ~/biosoft
  2. # 下载
  3. wget -c https://download.asperasoft.com/download/sw/connect/3.8.1/ibm-aspera-connect-3.8.1.161274-linux-g2.12-64.tar.gz
  4. # 解压
  5. tar -zxvf ibm-aspera-connect-3.8.1.161274-linux-g2.12-64.tar.gz
  6. # 编译
  7. bash ibm-aspera-connect-3.8.1.161274-linux-g2.12-64.sh

安装完成之后,会在家目录生成一个以点号隐藏文件夹 .aspera,为了方便使用,将其添加到环境变量,注意这里是两个大于号 >>表示追加,不要打漏了:

  1. # 添加 PATH
  2. echo 'export PATH=~/.aspera/connect/bin/:$PATH' >> ~/.bashrc
  3. source ~/.bashrc

上面这种添加 PATH 的方式虽然可行,但如果需要安装的软件有很多,PATH 就会变得非常臃肿,因此推荐上文提到的将可执行文件软连接到 ~/bin

  1. ln -s ~/.aspera/connect/bin/* ~/bin

示例二:Samtools

samtools 是生信分析必不可少的一个软件,不管是什么组学,都需要直接或间接性用到这个软件。该软件为 C 语言编写,安装过程需要编译:

  1. cd ~/biosoft
  2. # 下载
  3. wget -c https://github.com/samtools/samtools/releases/download/1.13/samtools-1.13.tar.bz2
  4. # 解压
  5. tar -jxf samtools-1.13.tar.bz2
  6. # 编译
  7. cd samtools-1.13
  8. ./configure --prefix=/home/nickier/biosoft/samtools-1.9
  9. make
  10. make install
  11. # 编译完成后,即可通过路径的形式调用帮助文档
  12. ./samtools --help
  13. # 添加PATH
  14. ln -s /home/nickier/biosoft/samtools-1.9/samtools ~/bin/

Java 编译软件安装

前面提到的 GATK 也是一个 java 软件,不过集成性较高,软件开发团队已经让其可以通过可执行文件的形式调用。接下来介绍另一种 java 程序的调用方法:

  1. java -jar xxx.jar

其中, xxx.jar 就是下载的 java 程序,调用的时候,需要制定其具体路径,可以用绝对路径,也可以用相对路径。