2. 安装与配置:把 Nextflow 跑起来
说实话,很多新手装 Nextflow 时掉进的坑,都不是工具本身的锅。Java 版本不对、PATH 没写对、或者装完没验证——这些小细节卡住你半天很常见。这一章,咱们就把环境从头捋一遍。
2.1 Java 环境要求
Nextflow 跑在 JVM 上。说白了,你的机器里得先有个靠谱的 JDK。没有它,nextflow 连启动都做不到。
版本要求:JDK 11 或更高版本。JDK 8 已经不被官方支持了。我个人习惯用 JDK 17 LTS,稳定、社区支持也足。JDK 21 也能用,但我建议你跟着 LTS 走,省事。
检查当前 Java 版本:
java -version
你会看到类似这样的输出:
openjdk version "17.0.9" 2023-10-17 LTS
OpenJDK Runtime Environment (build 17.0.9+9)
OpenJDK 64-Bit Server VM (build 17.0.9+9, mixed mode, sharing)
嗯,看到版本号 ≥ 11 就行。如果没装或者版本太低,去 Adoptium 装一个,别去 Oracle 折腾授权了。
2.2 Nextflow 安装方法
我推荐三种方式。线上环境我基本用手动下载,本地测试我用 Conda,Container 里就用 Docker 镜像。你按场景选。
方法一:手动安装(最推荐)
这种方式最干净,不受包管理器版本滞后的影响。两步走完:
- 下载 nextflow 可执行文件
- 放到 PATH 里
wget -qO- https://get.nextflow.io | bash
chmod +x nextflow
sudo mv nextflow /usr/local/bin/
注意 sudo 那步——如果你不想用 sudo,把 nextflow 放到 ~/bin/ 或者 ~/.local/bin/ 也一样。我在自己的工作站上就扔到 ~/bin/,省得改系统目录。
什么场景用手动安装?
- 服务器上跑生产流程
- 想立即获取最新版本
- 不想引入 Conda/Python 依赖
方法二:Conda 安装
如果你已经用 Conda 管理 Python 环境,那顺手装个 nextflow 也很方便:
conda install -c bioconda nextflow
或者用一个独立的干净环境:
conda create -n nf-env -c bioconda nextflow
conda activate nf-env
但我得提醒你:Conda 的 nextflow 版本往往比官网晚一两周。我遇到过几次 Conda 里还是 22.x,官网已经 23.x 了。如果你不需要新功能,Conda 没问题。
方法三:Docker 安装
跑在容器里最隔离。适合 CI/CD 或者不想污染宿主机的人:
docker pull nextflow/nextflow:latest
运行流程时也是:
docker run --rm -v $PWD:/work nextflow/nextflow:latest run hello
但这招不太常用——因为 nextflow 本身只负责协调,实际任务还是在容器里跑的。我自己只在测试或演示时用这个方式。
2.3 环境变量设置
Nextflow 的运行行为受一堆环境变量控制。你不用全记住,但下面这几个我建议你一开始就配好。
| 环境变量 | 说明 | 示例值 |
|---|---|---|
JAVA_HOME |
JVM 安装路径 | /usr/lib/jvm/java-17-openjdk |
NXF_HOME |
Nextflow 缓存与工作目录基址 | /data/.nextflow |
NXF_OPTS |
JVM 启动参数(内存等) | -Xms1g -Xmx4g |
NXF_TEMP |
临时文件目录 | /scratch/tmp |
PATH |
保证 nextflow 命令能找到 | $HOME/bin 或 /usr/local/bin |
配置示例(.bashrc / .zshrc):
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
export NXF_HOME=/data/.nextflow
export NXF_OPTS="-Xms1g -Xmx4g"
export PATH=$HOME/bin:$PATH
每次改完记得 source ~/.bashrc 或 source ~/.zshrc。我曾经忘了 source,在另一个终端里敲 nextflow,提示 command not found……嗯,这就是最蠢的坑。
2.4 验证安装
环境配好了,跑一个最简单的“Hello World”验证:
nextflow -version
正确输出大概像这样:
nextflow version 24.04.0.5857
再跑官方的 hello 流程:
nextflow run hello
这个流程很短,几秒钟就能跑完。你会看到类似下面的输出:
N E X T F L O W ~ version 24.04.0
Launching `hello.nf` [nostalgic_bhaskara] DSL2 - revision: cd6f2ac7b9
executor > local (4)
[f2/1b8c3a] process > sayHello (1) [100%] 1 of 1 ✔
[b5/6f9e2d] process > sayHello (2) [100%] 1 of 1 ✔
[8a/4e12cf] process > sayHello (3) [100%] 1 of 1 ✔
[3c/7a9b0e] process > sayHello (4) [100%] 4 of 4 ✔
100% 和 ✔,说明你的 Nextflow 已经正常工作了。恭喜。
如果卡住或者报错,最常见的几个原因:
- Java 版本太低(
java -version确认) - 网络不通(下载不了依赖)
- 磁盘空间不足(默认缓存写不进去)
按顺序排查,基本都能解决。
知识结构总览
下面这张图梳理了本章的核心环节,你可以把它当作安装后的自查清单:
安装就这么简单。环境干净、版本选对、变量配好,你的 Nextflow 就能稳定跑起来。后面所有管道,都依赖这第一步。