4、安装 Seurat 包:从 CRAN 与 GitHub 两种途径
安装 Seurat,说白了就两条路:CRAN 或者 GitHub。你可能觉得这有什么好说的,直接 install.packages("Seurat") 不就完了?嗯,我刚开始也这么想,直到有一次项目急着用 Seurat 5 的新功能,CRAN 上还是老版本……那叫一个抓狂。所以两条路都得掌握,关键时候能救命。
4.1 先看看你该怎么选
我把两条路的差异整理了一张表,方便你对照着看:
| 对比维度 | CRAN 安装 | GitHub 安装 |
|---|---|---|
| 版本稳定性 | 经过完整测试,很稳 | 可能包含开发中特性,偶尔有小坑 |
| 版本新鲜度 | 滞后 1–3 个月 | 发布即用,热乎的 |
| 依赖处理 | 自动安装依赖,省心 | 需手动补齐依赖,容易遗漏 |
| 适合场景 | 生产分析、重复性研究 | 尝鲜新功能、复现最新论文 |
| 卸载重装 | 常规 remove.packages | 可能需要先清理 lib 目录残留 |
我个人习惯是:跑正式项目用 CRAN 版,确保结果可重现;探索新方法或复现 GitHub 上的最新教程时才会切到 dev 版。你想想看,如果所有同事都装不同版本,出图对不上就麻烦了。
4.2 从 CRAN 安装——最稳妥的方式
直接打开 R 控制台,跑这一行:
install.packages("Seurat")
它会自动把 Seurat 和它的依赖(dplyr、ggplot2、Matrix 等)都拉下来。如果遇到网络慢的问题,可以换个镜像:
install.packages("Seurat", repos = "https://cloud.r-project.org/")
这里有个容易忽略的点——安装新版 Seurat 可能会要求 R 版本 ≥4.1。我之前在 Ubuntu 18.04 上装过,默认 R 是 3.6,死活报错。解决办法是先升级 R:
sudo apt update
sudo apt install r-base-core=4.2.*
或者直接用 conda 环境隔离,后面章节会细说。
packageVersion("Seurat")。如果和你预期的不一样,先看是不是 R 包缓存被锁了,重启 R 会话再试。
4.3 从 GitHub 安装——跟上最新步伐
Seurat 团队通常会把开发版放在 GitHub 上,比如 satijalab/seurat。装它需要先有 devtools 包:
install.packages("devtools")
library(devtools)
然后安装:
devtools::install_github("satijalab/seurat")
这条命令会下载源码并编译。如果你用的是 Windows,记得提前装好 Rtools——不然会报“没有编译器”。我踩过这个坑,当时卡了半天才发现是 Rtools 版本没对上。
SeuratObject、spatstat 等。建议一并从 GitHub 安装:devtools::install_github("satijalab/seurat-data")
devtools::install_github("mojaveazure/seurat-object")
另外,如果你的网络环境限制 SSH,可以把 git@github.com:... 改成 https://github.com/...,或者设代理:
Sys.setenv(GITHUB_PAT = "你的个人访问令牌")
devtools::install_github("satijalab/seurat")
4.4 版本锁定的关键一步
我曾经为了复现别人论文里的分析,在 GitHub 上翻了半天才找到对应 tag。所以每次装完版本,建议立刻用 renv 或 packrat 把版本锁住:
renv::snapshot()
这样下次恢复环境时,直接 renv::restore() 就能拉到完全一致的包版本。别嫌麻烦,项目越往后,这个操作越值钱。
4.5 两条路径的决策流程
下面这张图帮你快速做决定:
- CRAN 版适合 重复性分析,一句话安装,依赖全自动。
- GitHub 版适合 尝鲜和复现,但记得手动补依赖、装 Rtools。
- 不管走哪条路,装完立刻 锁定版本,别留给未来的自己埋坑。