第4章 Kraken2安装:Conda、源码编译、验证

安装Kraken2这件事,说简单也简单,说坑也有坑。我自己前后在七八台服务器上部署过,踩过的坑攒下来都能写个小本本。这一章就把最稳的几条路给你捋清楚。

4.1 为什么安装方式很重要

Kraken2本身是个C++程序,依赖不多,但数据库那块儿挺吃硬盘和内存。你安装时选错方式,轻则编译报错,重则跑起来才发现性能不对。

我个人习惯是:能用Conda就别自己编译。但有时候服务器环境受限,或者你想用最新的开发版,那就得走源码编译。两种方式我都用过,下面分别讲清楚。

4.2 方法一:Conda安装(推荐)

Conda安装最简单,一条命令搞定。

Tip:如果你还没装Conda,先去官网下Miniconda。别用Anaconda,太大了,我们只需要环境管理功能。

# 创建一个新环境,避免依赖冲突
conda create -n kraken2_env -c bioconda kraken2

# 激活环境
conda activate kraken2_env

嗯,就这么简单。我在项目中遇到过好几次依赖冲突的情况,比如同时装kraken2和bracken时,某些库版本对不上。这时候我建议:把kraken2、bracken、krona都装在一个环境里,一次性搞定依赖。

Warning:Conda默认会把软件装到环境目录下,但数据库文件很大(~40GB),不要放env里。我习惯单独建个~/kraken2_db目录。

检查一下安装位置:

which kraken2
# 输出类似:/home/you/miniconda3/envs/kraken2_env/bin/kraken2

如果能找到路径,就说明装上了。

4.3 方法二:源码编译安装

有些服务器不能联网,或者你想用最新的commit,那就得自己编译。Kraken2的源码在GitHub上,你克隆下来、cmake、make就行了。

# 克隆仓库
git clone https://github.com/DerrickWood/kraken2.git
cd kraken2

# 编译
./install_kraken2.sh /usr/local/bin

等一下,上面那个脚本其实会帮你做编译和安装两步。不过我更推荐手动编译,好控制参数:

# 手动编译步骤
mkdir -p build && cd build
cmake ..
make -j$(nproc)

# 把可执行文件复制到PATH
cp kraken2 kraken2-build kraken2-inspect /usr/local/bin/

我当时在集群上编译时,遇到一个坑:系统gcc版本太老(4.8.5),cmake报错"C++11不支持"。解决办法是用conda安装新版的gcc:

conda install -c conda-forge gxx_linux-64=9

装上后重新cmake,就一路畅通了。

编译参数详解:

  • -j$(nproc):用满所有CPU核,明显提速
  • 默认安装路径是/usr/local/bin,如果你没root权限,改成~/bin也行
  • 编译产物只有三个可执行文件:kraken2、kraken2-build、kraken2-inspect

4.4 验证安装

装好之后,一定要跑个快速测试。我每次装完新软件都先跑自带的例子,心里才踏实。

# 查看版本
kraken2 --version
# 输出样例:Kraken 2 version 2.1.3

# 用自带的小数据库跑测试
kraken2-build --standard --threads 4 --db test_db
# 别慌,这条命令会下标准数据库,大概4-5GB,第一次跑会慢一些

# 验证分类功能
echo -e ">test\nACGTACGTACGTACGTACGT" | kraken2 --db test_db --threads 2 /dev/stdin

第一次下载标准数据库?我记得有一个同学直接拔了网线,下了50%断了……所以建议用--download-only先下好,再--build:

kraken2-build --download-taxonomy --db my_db
kraken2-build --download-library bacteria --db my_db
kraken2-build --build --db my_db --threads 8

这样网断了还能续下(文件在my_db/library/里)。

Tip:验证成功后,删掉测试数据库(rm -rf test_db),别占地方。正式分析时再下标准库或自定义库。

4.5 安装方式对比

我把三种场景下的推荐方式整理成表格,你对照自己的环境选:

使用场景推荐方式理由
个人笔记本/工作站Conda安装最快,依赖自动解决
集群(无root权限)Conda安装无需sudo,环境隔离
离线服务器源码编译提前准备源码和依赖包
想用最新开发特性源码编译master分支有最新功能
已有Conda环境但冲突源码编译到自定义路径完全自主控制

说实话,我95%的情况都用Conda。只有一次为了测试某个PR,才手动编译了开发版。你按自己的网络和权限情况选就行。

本章核心流程概览

Kraken2 安装方式决策流程 你有Kraken2需求 能联网吗? Conda已装? Conda安装 先装Miniconda 源码编译 验证安装 曾踩坑:编译时gcc版本 太老,用conda装新gcc解决