原文作者:Mario F. Bisconti 原文地址:https://blog.crcbio.com/posts/package-management/ 译者:鹿芗泽
你是否遇到过因依赖冲突导致环境崩溃的窘境?
别担心,本文带你了解如何用最简单的方式管理生信工具,让软件安装变得井然有序。
原因在于生物信息学领域的依赖关系极其复杂。
不同的软件可能需要不同版本的 Python、R、C 库或编译器,而一个软件的安装很可能破坏另一个系统的依赖环境。
这时,包管理器便成为你不可或缺的好帮手,帮助你解决各种依赖问题。
对于生信新手来说,Conda 是入门的绝佳选择。 Conda 不仅是一个强大的包管理器,同时也是环境管理器。
通过创建隔离环境,你可以将不同工具及其依赖独立于系统其他部分,从而避免版本冲突带来的麻烦。
示例:
# 创建一个名为 rnaseq 的环境,并安装指定版本的软件
conda create -n rnaseq salmon=1.10 fastqc=0.11.9
# 激活 rnaseq 环境
conda activate rnaseq
这样,你就能为 RNA-seq 分析构建一个干净、独立的工作环境。
虽然 Conda 功能强大,但在处理复杂依赖和大型环境时常常显得比较缓慢。 Mamba 是 Conda 的一个替代品,它完全兼容 Conda 命令,但得益于底层采用 C++ 实现,安装和依赖求解速度大为提升。
只需安装一次:
conda install mamba -n base -c conda-forge
译者注: 请不要使用此方法安装 Mamba !!! 请删除 Conda 后,再重新安装 Mamba ! 详情请见:生信软件管理攻略:从 Mamba 到 Docker,告别依赖地狱
之后,使用方式与 Conda 相同:
mamba create -n variantcall bcftools=1.17 samtools=1.16
体验极速安装带来的畅快感受吧!
使用 Conda 或 Mamba 安装软件时,会从多个渠道 (channels) 下载包。
正确配置渠道的优先级至关重要!
推荐配置如下:
conda config --add channels defaults
conda config --add channels bioconda
conda config --add channels conda-forge
以上命令会将指定渠道置于列表最上方,从而保证下载包时按照 conda-forge
> bioconda
> defaults
的顺序进行选择。
对于一些“古董级”的工具,或者开发者未提供 Conda 包的情况,Docker 是理想之选。
可以将 Docker 理解为一个“集装箱”,里面预装了运行该工具所需的一切——操作系统、库、依赖等,确保工具在任何系统上都能运行一致。
示例:
# 从 biocontainers 拉取 fastqc 镜像
docker pull quay.io/biocontainers/fastqc
# 运行 fastqc 容器,并将当前目录挂载到容器内以处理数据文件
docker run -v $PWD:/data quay.io/biocontainers/fastqc fastqc /data/myfile.fastq
虽然 Docker 对初学者而言略显复杂,但熟练掌握后将带来极高的可复现性和稳定性。
译者注: 国内因网络环境问题,需要使用 chsrc 切换镜像源后,才能正常使用 Docker 拉取镜像。详情请见:生信软件管理攻略:从 Mamba 到 Docker,告别依赖地狱
Conda
切勿在 base
环境中安装所有软件。
每个项目建议使用独立的命名环境。
及时备份环境配置:
conda env export > environment.yml
随时可通过备份文件重建环境:
conda env create -f environment.yml
如果遇到环境崩溃,不妨删除旧环境,重新构建即可。
在生物信息学的道路上,你会接触并安装大量工具,而其中部分工具难免会发生冲突。
但借助 Conda(以及未来可能使用的 Docker),你可以构建整洁、有序且高效的工作环境,最大限度地减少安装问题带来的困扰。
下一篇:我们将探讨命令行操作技巧,这些终端小技巧可以为你节省大量宝贵时间。