文章目录
-
- 前言
-
- [安装 pak](#安装 pak)
- [安装、更新 CRAN 或 Bioconductor 的工具](#安装、更新 CRAN 或 Bioconductor 的工具)
-
- Reinstall
- [升级更新 R Rackages](#升级更新 R Rackages)
- [从 GitHub 安装](#从 GitHub 安装)
- [从 URL 安装](#从 URL 安装)
- 安装本地工具及其依赖项
- 查找、解释依赖
- [pak 官方文档:](#pak 官方文档:)
前言
对于一个刚学习生信和使用R的同学来说,安装 R Packages 可能算是一个小困难,因为光看 Packages 的名字,无法区分其来源是 CRAN、Github、Bioconductor、git repositories 或者 URL 等
而不同来源的 R Packages,使用的命令又有所不同,比如从CRAN 上安装,使用install.packages("packageName")
、安装Github上的Packages,可以使用 devtools::install_github("hadley/devtools")
,详见从 Github 安装 R packages 不完全指南、而安装 Bioconductor 的工具又要使用 BiocManager::install(DESeq2)
、等等...
大概19年的时候,有个大佬发布了一个工具:pak,整合了几种不同来源工具的下载安装方式,包括从 CRAN、Bioconductor、GitHub、URL、git 存储库、本地文件和目录安装R包。
这个工具几天前还在更新维护,这里简单介绍一下使用方式,希望可以一定程度上缓解安装 R Packages 的焦虑😐
安装 pak
工具作者发布在了CRAN上,所以直接可以:
r
install.packages("pak")
# 或者 从github安装二进制版本,需要良好的网络
install.packages("pak", repos = sprintf("https://r-lib.github.io/p/pak/stable/%s/%s/%s", .Platform$pkgType, R.Version()$os, R.Version()$arch))
安装、更新 CRAN 或 Bioconductor 的工具
pak 会自动设置与当前 R 版本对应的 CRAN 仓库和 Bioconductor 仓库:
r
pak::pkg_install("tibble")
log:
#> ✔ Loading metadata database ... done
#>
#> → Will install 11 packages.
#> → Will download 11 CRAN packages (4.52 MB).
#> + cli 3.6.3 [bld][cmp][dl] (569.77 kB)
...
#>
#> ℹ Getting 11 pkgs (4.52 MB)
#> ✔ Got pkgconfig 2.0.3 (source) (6.08 kB)
#> ✔ Got magrittr 2.0.3 (source) (267.07 kB)
...
#> ℹ Building tibble 3.2.1
#> ✔ Built tibble 3.2.1 (3s)
#> ✔ Installed tibble 3.2.1 (1.2s)
#> ✔ 1 pkg + 10 deps: added 11, dld 11 (4.52 MB) [50.6s]
Reinstall
直接在R package 名字后面添加 ?reinstall
:
r
pak::pkg_install("tibble?reinstall")
log:
#>
#> → Will install 1 package.
#> → The package (724.32 kB) is cached.
#> + tibble 3.1.7
#> ℹ No downloads are needed, 1 pkg (724.32 kB) is cached
#> ✔ Installed tibble 3.1.7 (42ms)
#> ✔ 1 pkg + 12 deps: kept 11, added 1 [343ms]
升级更新 R Rackages
如果已经安装过,会自动检查并更新:
r
pak::pkg_install("tibble")
# 同时更新所有依赖
pak::pkg_install("tibble", upgrade = TRUE)
log:
#>
#> → Will update 1 package.
#> → The package (724.32 kB) is cached.
#> + tibble 3.1.7 → 3.1.8
#> ℹ No downloads are needed, 1 pkg (724.32 kB) is cached
#> ✔ Installed tibble 3.1.8 (36ms)
#> ✔ 1 pkg + 10 deps: kept 10, upd 1 [368ms]
从 GitHub 安装
使用user/repo 的形式。你可以指定一个分支或标签:user/repo@branch 或 user/repo@tag:
r
pak::pkg_install("tidyverse/tibble")
log:
#>
#> → Will update 1 package.
#> → The package (0 B) is cached.
#> + tibble 3.2.1 → 3.2.1.9027 [bld][cmp] (GitHub: fcb2461)
#>
#> ℹ No downloads are needed, 1 pkg is cached
#> ✔ Got tibble 3.2.1.9027 (source) (5.25 MB)
#> ℹ Packaging tibble 3.2.1.9027
#> ✔ Packaged tibble 3.2.1.9027 (1.3s)
#> ℹ Building tibble 3.2.1.9027
#> ✔ Built tibble 3.2.1.9027 (2.8s)
#> ✔ Installed tibble 3.2.1.9027 (github::tidyverse/tibble@fcb2461) (1s)
#> ✔ 1 pkg + 10 deps: kept 10, upd 1, dld 1 (NA B) [8.6s]
从 URL 安装
URL 可能指向一个由 R CMD build 创建的 R 包文件,或者一个包含包目录树的 .tar.gz 或 .zip 压缩包:
r
pak::pkg_install(
"url::https://cran.r-project.org/src/contrib/Archive/tibble/tibble_3.1.7.tar.gz"
)
log:
#>
#> → Will install 1 package.
#> → Will update 1 package.
#> → All 2 packages (38.65 kB) are cached.
#> + ellipsis 0.3.2
#> + tibble 3.1.8.9002 → 3.1.7 👷🏻♀️🔧
#> ℹ No downloads are needed, 2 pkgs (38.65 kB) are cached
#> ✔ Installed ellipsis 0.3.2 (18ms)
#> ℹ Building tibble 3.1.7
#> ✔ Built tibble 3.1.7 (2.5s)
#> ✔ Installed tibble 3.1.7 (31ms)
#> ✔ 1 pkg + 11 deps: kept 10, upd 1, added 1 [3.3s]
安装本地工具及其依赖项
使用:
r
pak::local_install("cli")
log:
#>
#> → Will update 1 package.
#> → The package (0 B) is cached.
#> + cli 3.6.3 → 3.6.3 [bld][cmp]
#>
#> ℹ No downloads are needed, 1 pkg is cached
#> ✔ Got cli 3.6.3 (source) (568.16 kB)
#> ℹ Packaging cli 3.6.3
#> ✔ Packaged cli 3.6.3 (967ms)
#> ℹ Building cli 3.6.3
#> ✔ Built cli 3.6.3 (7.8s)
#> ✔ Installed cli 3.6.3 (local) (34ms)
#> ✔ 1 pkg: upd 1, dld 1 (568.16 kB) [9.6s]
查找、解释依赖
查找依赖:
r
pak::pkg_deps_tree("tibble")
log:
#> tibble 3.2.1 [new][bld][cmp]
#> ├─fansi 1.0.6 [new][bld][cmp]
#> ├─lifecycle 1.0.4 [new][bld]
#> │ ├─cli 3.6.3 [new][bld][cmp]
#> │ ├─glue 1.7.0 [new][bld][cmp]
#> │ └─rlang 1.1.4 [new][bld][cmp]
#> ├─magrittr 2.0.3 [new][bld][cmp]
#> ├─pillar 1.9.0 [new][bld]
#> │ ├─cli
#> │ ├─fansi
#> │ ├─glue
#> │ ├─lifecycle
#> │ ├─rlang
#> │ ├─utf8 1.2.4 [new][bld][cmp]
#> │ └─vctrs 0.6.5 [new][bld][cmp]
#> │ ├─cli
#> │ ├─glue
#> │ ├─lifecycle
#> │ └─rlang
#> ├─pkgconfig 2.0.3 [new][bld]
#> ├─rlang
#> └─vctrs
#>
#> Key: [new] new | [bld] build | [cmp] compile
解释依赖:
r
pak::pkg_deps_explain("tibble", "rlang")
log:
#> tibble -> lifecycle -> rlang
#> tibble -> pillar -> lifecycle -> rlang
#> tibble -> pillar -> rlang
#> tibble -> pillar -> vctrs -> lifecycle -> rlang
#> tibble -> pillar -> vctrs -> rlang
#> tibble -> rlang
#> tibble -> vctrs -> lifecycle -> rlang
#> tibble -> vctrs -> rlang
就是一个依赖一个又依赖另一个...