第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 或源码编译 | |
apt 版本有时会滞后一个子版本,conda 和源码能拿到最新 |
| Linux (CentOS/RHEL) | conda、下载预编译二进制 | |
yum 源里没有官方包,别折腾 RPM 了 |
| macOS | Homebrew 或 conda | |
brew 版一般等官方发布后一两周才更新,能用 |
| Windows | 官方 .exe 安装包或 conda | |
我建议你用 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 本章知识脉络
为了让你对整个安装决策有个直观印象,我画了一张流程图。
看到这里,你应该能根据自己的环境快速选一条路径了。说白了,conda 是万能钥匙,不管你在哪个平台,都能用。是我个人最推荐的方式。
如果你用 conda,记得加上 -c bioconda 这个 channel。bioconda 里有很多生信工具,都在一个生态下,依赖解决得好。
最后,安装只是第一步。下一步我们要用装好的 BLAST+ 做本地数据库格式化。那个环节里,版本一致性更重要,因为索引文件不兼容会直接报错。