Linux 基础与软件安装:命令行操作、conda 环境配置、常用生物信息学软件安装

做生信的人,Linux 是躲不过去的坎。我刚入行时觉得图形界面挺好的,直到第一次在服务器上看到纯黑终端,心里直发毛。后来才发现,这东西一旦上手,比点鼠标快十倍。

这一章咱们就把门槛踩平——从最常用的命令开始,到用 conda 装完全部工具。你跟着敲几遍,很快就能习惯。

核心知识图:下面这张图把本章三个模块串起来了。先学会在 Linux 里“走路”,再用 conda 搭好专属环境,最后把 FASTA/FASTQ 处理工具装进这个环境里。

Linux · conda · 软件安装 知识体系 Linux 命令行基础 文件操作 (ls/cd/mkdir) 查看内容 (cat/less) 权限与用户管理 conda 环境配置 安装 miniconda 创建 & 激活环境 添加频道 生信软件安装 fastqc / fastp bwa / samtools trimmomatic 实践顺序:先 Linux 命令行 → 再 conda 环境 → 最后安装软件 每个环境独立管理,避免包版本冲突

命令行操作:让你跟服务器“对话”

我们不需要成为运维高手,掌握十来个核心命令就够用。我个人习惯把常用命令按“文件夹操作”“文件查看”“权限管理”分组记,需要时能秒查。

命令作用常用选项
ls列出目录内容-lh 人性化显示大小,-a 显示隐藏文件
cd切换目录cd .. 回上级,cd ~ 回家目录
pwd显示当前路径无
mkdir -p创建多层目录-p 父目录不存在时自动创建
cp / mv复制 / 移动-r 递归复制文件夹,-v 显示过程
rm -rf强制删除慎用! 删除后不可恢复
cat / less查看文件内容less 支持上下翻页 / 搜索

我的习惯:给数据文件起名时用英文、下划线、日期,比如 sample_2025_01_R1.fastq.gz。别用空格和中文,否则你会被转义符整疯。

现场演示:假设我们要创建一个项目目录并查看 FASTQ 文件的大小。

mkdir -p project/fastq_raw
cd project/fastq_raw
ls -lh *.fastq.gz
# 输出像这样:
# -rw-r--r-- 1 user group 2.3G Jan 10 14:30 sample01_R1.fastq.gz
# -rw-r--r-- 1 user group 2.5G Jan 10 14:31 sample01_R2.fastq.gz

嗯,查看大小、重命名、移动,这些场景我几乎每天都会遇到。记得有一次我想批量重命名,用了一个 for 循环,结果把文件名前缀搞丢了。从那以后,我都会先 echo 一下看看替换效果,再执行真正的 mv。

conda 环境配置:隔离你的软件战场

为什么需要 conda?**很简单——避免打架。** 不同软件可能依赖不同版本的 Python 或库,用 conda 环境隔开,各玩各的。

安装 miniconda 是目前最轻量的方式,去官网下载 Linux 版本即可。我个人建议直接装到 ~/miniconda3 下,不用管理员权限。

# 下载并安装(以 x86_64 为例)
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh -b -p ~/miniconda3
# 初始化(让 shell 识别 conda 命令)
~/miniconda3/bin/conda init
# 重新登录或 source ~/.bashrc

装好后,我习惯先把默认频道改成国内镜像,下载速度快得多。

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes

避坑指南:我曾经在服务器上直接用 root 装了全局 conda,结果同事的环境被我搞乱了。现在我的做法是:每个项目建一个独立环境,环境名用项目名 + 日期,比如 qc_pipeline_202501。

创建并激活环境:

conda create -y -n qc_env python=3.9
conda activate qc_env
# 查看当前环境中的包
conda list
# 退出环境
conda deactivate

为什么不直接装最新 Python?因为很多生信工具官方只测试过固定版本,用太新的 Python 反而容易踩坑。我一般选 3.8 或 3.9,稳定且兼容性好。

常用生信软件安装:一行命令搞定

有了 conda 环境,装软件就跟装手机 App 一样简单。我们常用来做 FASTQ 质控和 BAM 处理的工具,基本都能通过 conda install 获得。下表列出最核心的几款:

软件用途安装命令(conda activate qc_env 后执行)
fastqcFASTQ 质量评估conda install -c bioconda fastqc
fastp原始数据质控+去接头conda install -c bioconda fastp
trimmomatic读段修剪conda install -c bioconda trimmomatic
bwa比对到参考基因组conda install -c bioconda bwa
samtools操作 BAM/SAM 文件conda install -c bioconda samtools
sambamba更快地处理 BAM(可选)conda install -c bioconda sambamba

安装演示:接下来我们就在刚才创建的 qc_env 里把 fastqc、fastp、bwa、samtools 一口气装上。注意 -c bioconda 指定了生物信息学专用频道。

conda activate qc_env
conda install -y -c bioconda fastqc fastp bwa samtools
# 验证安装
fastqc --version
fastp --version
bwa
samtools --version

命令执行后你会看到每个软件打印版本号。如果提示找不到命令,多半是环境没激活,或者频道源不对。我在项目初期经常遇到频道混乱的问题,后来干脆写了一个 requirements.txt 文件,每次新建环境就 conda install --file requirements.txt,稳定多了。

环境管理小技巧

你想想看,如果一个项目有十几个工具,每次重装一遍多麻烦?所以我会把整套环境导出成 YAML 文件,分享给队友或者在别的服务器上复原。

# 导出当前环境的所有包
conda env export > environment.yaml
# 在其他机器上重建同样的环境
conda env create -f environment.yaml

避坑指南:我曾经因为导出了完整的 urls 信息,导致别人在离线服务器上无法安装。后来我改用 conda env export --from-history,只保留手动安装的包,干净又通用。