第3章 BLAST+ 安装:Linux / macOS / Windows 环境配置

BLAST+ 的安装,说难不难,说简单也不简单。核心问题其实就一个:你选哪个平台,用哪种方式。我个人习惯,先讲清楚版本,再聊平台差异。

你用得最多的,应该是 NCBI 官方发布的 BLAST+ 2.x 系列。目前稳定版已经到 2.15.x 了。我记得刚入行那会儿还在用 2.2.31,现在迭代了好几个大版本,性能提升了,命令行参数也更统一了。

我建议新手直接装最新稳定版。除非你要对接某个固定流程,否则别纠结小版本。

3.1 版本选择与安装思路

BLAST+ 安装包可从 NCBI FTP 下载,也可以通过包管理器安装。下面这张表可以帮你快速定位自己用哪种方式。

平台 推荐安装方式 包管理器命令(示例) 我的备注
Linux (Ubuntu/Debian) apt、conda 或源码编译
sudo apt install ncbi-blast+
apt 版本有时会滞后一个子版本,conda 和源码能拿到最新
Linux (CentOS/RHEL) conda、下载预编译二进制
conda install -c bioconda blast
yum 源里没有官方包,别折腾 RPM 了
macOS Homebrew 或 conda
brew install blast
brew 版一般等官方发布后一两周才更新,能用
Windows 官方 .exe 安装包或 conda
conda install -c bioconda blast
我建议你用 conda,环境隔离更干净

你看,几乎所有平台都能用 conda 解决。conda 的好处是环境隔离,不污染系统 Python 或 Perl。我最早做基因注释那阵子,系统 Python 被同事升级后,所有旧脚本全部崩了……从那以后,我每个项目都独立 conda 环境,再没出过类似问题。

如果你服务器上已经有 conda/mamba,直接用

conda install -c bioconda blast
就行。mamba 比 conda 快很多,尤其在依赖解析上。

3.2 Linux 环境安装实战

Linux 用户最多,也最灵活。我主要讲两种方式:包管理器(apt)和 conda。源码编译留给有特殊需求的人。

3.2.1 用 apt 安装(Ubuntu / Debian 系列)

这是最简单的办法。一条命令搞定。

sudo apt update
sudo apt install ncbi-blast+

装完之后验证一下:

blastn -version

输出应该像这样:

blastn: 2.14.0+
 Package: blast 2.14.0, build Aug 23 2023 15:00:00

嗯,这里要注意。apt 仓库里的版本通常落后官方 1-2 个小版本。如果你做一致性检查,版本差异可能导致参数行为不同。我在一次交付时就用 apt 装的 2.13.x,结果合作方用的是 2.15.x,blastn 的 -outfmt 6 输出列顺序有小改动,对不上,排查了半天。后来我统一用 conda 固定版本,再也没出过这种乌龙。

3.2.2 用 conda / mamba 安装(通用方案)

如果你还没有 conda,先去装 Miniconda 或 Mambaforge。我自己用 Mambaforge,更快。

mamba create -n blast_env -c bioconda blast
mamba activate blast_env

检查版本:

blastn -version

conda 的好处是版本可锁定。你可以在 environment.yaml 里写死 blast=2.15.0,这样团队所有人都用同一个二进制,避免“我这能跑你那不能”的尴尬。

3.2.3 源码编译(能不搞就不搞)

源码编译适合需要定制编译参数或跑在超算上的场景。NCBI 提供了 CMake 构建脚本。大概流程如下:

wget ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/LATEST/ncbi-blast-2.15.0+-src.tar.gz
tar -xzf ncbi-blast-2.15.0+-src.tar.gz
cd ncbi-blast-2.15.0+-src/c++
./configure --prefix=/your/install/path
make -j4
make install

这个过程比较耗时,而且依赖库容易缺。我曾经在一台 CentOS 6 的老机器上编译,gcc 版本太旧,折腾了一下午。从那以后,我再也不碰源码编译了。

源码编译前,务必确认系统已安装:gcc、g++、make、cmake、libz-dev、libbz2-dev、liblzma-dev。缺一个就会报错,还不太好定位。

3.3 macOS 环境安装实战

macOS 用户,首选 Homebrew。我的 M1 MacBook Air 上一直都是 brew 管理。

brew update
brew install blast

如果你是 Apple Silicon 芯片,brew 会自动装 arm64 版本,性能很好。我测过,arm64 版的 blastn 比 Rosetta 2 转译的快 30% 左右。

当然,conda 一样可以用。在 macOS 上,我建议先激活一个干净环境再装:

conda create -n blast_mac -c bioconda blast
conda activate blast_mac

为什么推荐 clean 环境?因为有同事在 base 环境里装了各种包,blast 依赖的 libxml2 被其他包覆盖了,运行时报段错误。新环境能避开这种冲突。

3.4 Windows 环境安装实战

Windows 用户,我推荐两条路。

路一:官方 .exe 安装包

去 NCBI FTP 下载 ncbi-blast-2.15.0+-win64.exe,双击安装。安装过程中,它会让你选择是否添加 PATH 环境变量。记得勾上。

装完后,打开命令提示符(cmd)或 PowerShell:

blastn -version

如果提示“blastn 不是内部或外部命令”,说明 PATH 没加对。手动去系统环境变量里加一下 C:\Program Files\NCBI\blast-2.15.0+\bin 即可。

路二:WSL(Windows Subsystem for Linux)

我个人的 Windows 开发环境就是 WSL + Ubuntu。在 WSL 里和 Linux 完全一样:

sudo apt update
sudo apt install ncbi-blast+

这样你就能在 Windows 上用 Linux 工具链了,文件互通,性能损失很小。我建议做生信的 Windows 用户都试试 WSL,会少很多麻烦。

不管你用哪种方式装完,都运行

blastn -help | head -20
看看能不能正常输出。这一步说明 PATH 和动态库都没问题。

3.5 跨平台兼容性检查

BLAST+ 在不同平台产生的格式化数据库和输出文件是完全兼容的。因为 NCBI 的二进制格式是跨平台的。我在 Linux 上建的索引,拷贝到 macOS 上能直接跑。

但有个坑:不同版本 BLAST 格式化的数据库可能不通用。比如 2.13.x 建的索引,2.15.x 也能读;但如果跨大版本(比如 2.10.x -> 2.15.x),最好重建索引。我遇到过用 2.12.x 建索引,2.15.x 跑 blastn 时报“Corrupt index file”的错误。重建后就好了。

生产环境里,数据库机和分析机上的 BLAST+ 版本必须一致。否则查不出来的结果,或者报错,你都不知道是软件问题还是数据问题。

3.6 本章知识脉络

为了让你对整个安装决策有个直观印象,我画了一张流程图。

BLAST+ 跨平台安装决策流程 确认系统与需求 你用的是哪个操作系统? Linux macOS Windows apt 或 conda conda 最稳定 Homebrew 或 conda arm64 优先 WSL 或官方 .exe WSL 体验更好 验证 blastn -version

看到这里,你应该能根据自己的环境快速选一条路径了。说白了,conda 是万能钥匙,不管你在哪个平台,都能用。是我个人最推荐的方式。

如果你用 conda,记得加上 -c bioconda 这个 channel。bioconda 里有很多生信工具,都在一个生态下,依赖解决得好。

最后,安装只是第一步。下一步我们要用装好的 BLAST+ 做本地数据库格式化。那个环节里,版本一致性更重要,因为索引文件不兼容会直接报错。