2、环境搭建:安装Nextflow,Java依赖,测试安装
好,咱们直接开始动手。
环境搭建这件事,说白了就三步:装Java、装Nextflow、跑个例子验证一下。听起来简单,但我在项目里见过不少人在这一步卡住。不是Java版本不对,就是环境变量没配好,折腾半天连个hello world都跑不起来。
咱们的目标很明确——让你在10分钟内拥有一个能跑Nextflow的干净环境。
为什么先装Java?
Nextflow是用Groovy写的,Groovy跑在JVM上。所以Java是你的第一道门槛。没有Java,Nextflow连启动都启动不了。
Java的版本有讲究。我个人习惯用Java 17或者Java 11。Java 8虽然也能跑,但有些新特性不支持。Java 21太新,部分生态还没跟上。我建议你装Java 17,稳定、兼容、够用。
安装Java JDK
咱们分平台说。
Linux(Ubuntu/Debian)
sudo apt update
sudo apt install openjdk-17-jdk -y
java -version
CentOS/RHEL
sudo yum install java-17-openjdk -y
java -version
macOS(用Homebrew)
brew install openjdk@17
java -version
Windows
去Oracle官网或者Adoptium下载JDK 17的安装包。装完之后去系统环境变量里加一下JAVA_HOME和Path。
安装Nextflow
Nextflow的安装方式很简单。官方推荐用curl或者wget下载一个脚本。
curl -s https://get.nextflow.io | bash
执行完你当前目录下会多出一个 nextflow 文件。这是个自解压的shell脚本。把它移到PATH目录里,方便全局调用。
mv nextflow /usr/local/bin/
chmod +x /usr/local/bin/nextflow
接下来试试命令能不能找到:
which nextflow
正常的话会输出路径。比如 /usr/local/bin/nextflow。
export PATH=$PATH:~/bin。
第一次启动:它会自己下载
我第一次装Nextflow时,输入完nextflow命令它啥也没反应。后来才知道,第一次运行它会自动下载完整的运行包。
nextflow -version
执行后会看到类似这样的输出:
N E X T F L O W
version 23.10.1 build 5893
created 2024-01-15 14:30 UTC
cite doi:10.1038/nbt.3820
http://nextflow.io
如果看到版本号,恭喜你,Nextflow已经装好了。
验证安装:跑一个真正的Pipeline
光输出版本号还不够。我建议跑一个简单的Pipeline来验证整个链路。Nextflow官方提供了一个最小的hello示例。
nextflow run hello
这个命令会从GitHub拉取官方示例库,然后执行。一切正常的话,你会看到类似这样的输出:
N E X T F L O W ~ version 23.10.1
Launching `https://github.com/nextflow-io/hello` [dreamy_pare] DSL2 - REVISION: 6e7b2f5b4f
executor > local (4)
[0f/c3d9a1] process > sayHello (1) [100%] 1 of 1 ✔
[1a/4e8b2f] process > sayHello (2) [100%] 2 of 2 ✔
[2b/7f1a3c] process > sayHello (3) [100%] 3 of 3 ✔
[3c/9b0d4e] process > sayHello (4) [100%] 4 of 4 ✔
看到四个 sayHello 都跑到100%了吗?这就对了。
另一种验证方式:写个最简单的脚本
如果你不想联网,也可以本地写一个。我个人习惯用一个极简的脚本来测试。
创建一个文件,就叫 test.nf:
#!/usr/bin/env nextflow
process printHello {
output:
stdout
script:
"""
echo 'Hello, Nextflow!'
"""
}
workflow {
printHello()
printHello.out.view()
}
然后运行:
nextflow run test.nf
输出:
N E X T F L O W ~ version 23.10.1
executor > local (1)
[1c/3a2b4d] process > printHello [100%] 1 of 1 ✔
Hello, Nextflow!
看到 Hello, Nextflow! 就说明你整个环境完整可用。
环境搭建完整流程一览
我把它整理成一张流程图,方便你对照着检查。
检查一下依赖项
除了Java和Nextflow本身,有些pipeline可能会用到的工具,我列一张表给你参考:
| 工具 | 用途 | 安装建议 |
|---|---|---|
| Git | 拉取GitHub上的Pipeline代码 | 系统自带或 apt/yum/brew 安装 |
| Docker | 容器化执行环境 | 可选,但强烈建议装 |
| Conda | 软件环境管理 | 可选,按需安装 |
| Singularity/Apptainer | HPC环境容器 | 集群环境下必装 |
避坑指南
安装环节我踩过的坑,跟你说几个。
第一,Java版本对不上。 有次我在服务器上装了Java 21,一跑Nextflow就报错,提示Groovy不兼容。后来老老实实换回Java 17,问题消停了。
第二,nextflow可执行文件没有权限。 我见过最离谱的是,下载完忘了chmod +x,然后一直报Permission denied。嗯,权限问题要养成习惯检查。
第三,第一次启动非常慢。 这个不是bug。Nextflow第一次运行要下载整个核心包,大概几十MB。如果网络慢,你会以为它卡死了。等就完了。
验证自己的环境
跑完上面的步骤,你可以用这个脚本快速做一次全面检查:
#!/bin/bash
echo "=== 环境检查 ==="
echo "Java版本:"
java -version 2>&1 | head -n 1
echo ""
echo "Nextflow版本:"
nextflow -version 2>&1 | grep version
echo ""
echo "Git版本:"
git --version 2>&1
echo ""
echo "Docker:"
docker --version 2>&1 || echo "Docker未安装"
把这段保存成 check_env.sh,执行 bash check_env.sh。如果Java和Nextflow都有版本输出,你的环境就算搭建成功了。