在安装R包的过程中,经常会遇到conda安装不上的情况
场景:R虚拟环境的迁移
有的时候老的R包版本过低等问题,导致环境直接迁移会出现问题
## 从源虚拟环境生成依赖文件
conda list > requirements.txt
## 可以先通过requirement.txt 安装上能安装上的包, 安装不成功的暂时忽略
while read requirement; do conda install --yes $requirement; done < requirements.txt
然后,再对漏掉的R包进行单独安装
有以下几种方式:
- 直接进入R交互环境, 可解决少数conda install <packages> 安装失败的情况
install.packages("rsvg") ## 安装漏掉的 rsvg包
- 去 https://anaconda.org/ 上搜索安装包的名字
如 phyloseq 这个包在R3.6.1上无法通过第一种方式安装成功,
可以发现,在这上边搜索到的包的名字叫 bioconductor-phyloseq
点进去 复制代码进行conda安装
conda install -c bioconda bioconductor-phyloseq
- 通过源码安装
在 https://cran.r-project.org/ 网站上搜索到 需要安装的R包
比如 通过上面两种方式安装不上 tidyfst包, 于是
搜索出来是上面的结果,可以看到 tidyfst包还依赖 | data.table (≥ 1.13.0), fst (≥ 0.9.0), stringr (≥ 1.4.0) | (同时也要查看 这三个包的依赖包是否有安装,如果没有,要先安装依赖包的依赖包)
进入需要安装的目标环境, 查看R包的安装目录,并记住这个目录。
#查看包的目录
> .libPaths()
[1] "/PERSONALBIO/work/microbio/m00/project/MetaDenovo_V1/envs/miniconda3/envs/R3.6.1/lib/R/library"
进入包的安装目录, 下载相应的安装包, 通过R CMD INSTALL
命令安装
# 切换目录
(R3.6.1) [m00@comput1 R3.6.1]$ cd /PERSONALBIO/work/microbio/m00/project/MetaDenovo_V1/envs/miniconda3/envs/R3.6.1/lib/R/library
# 编写执行脚本
[root@hdp04 library]# vim install_tidyfst_packages.sh
#!/bin/bash
wget https://cran.r-project.org/src/contrib/data.table_1.14.6.tar.gz ## 依赖包
wget https://cran.r-project.org/src/contrib/fst_0.9.8.tar.gz ## 依赖包
wget https://cran.r-project.org/src/contrib/stringr_1.5.0.tar.gz ## 依赖包
# wget https://cran.r-project.org/src/contrib/tidyfst_1.7.6.tar.gz ## tidyfst 安装包
wget https://cran.r-project.org/src/contrib/Archive/tidyfst/tidyfst_1.0.0.tar.gz
wget https://cran.r-project.org/src/contrib/fstcore_0.9.14.tar.gz ### fst 包的依赖
wget https://cran.r-project.org/src/contrib/Rcpp_1.0.10.tar.gz ### fst 包的依赖 fstcore包的依赖
R CMD INSTALL --library=/PERSONALBIO/work/microbio/m00/project/MetaDenovo_V1/envs/miniconda3/envs/R3.6.1/lib/R/library/ Rcpp_1.0.10.tar.gz
R CMD INSTALL --library=/PERSONALBIO/work/microbio/m00/project/MetaDenovo_V1/envs/miniconda3/envs/R3.6.1/lib/R/library/ fstcore_0.9.14.tar.gz
R CMD INSTALL --library=/PERSONALBIO/work/microbio/m00/project/MetaDenovo_V1/envs/miniconda3/envs/R3.6.1/lib/R/library/ fst_0.9.8.tar.gz
R CMD INSTALL --library=/PERSONALBIO/work/microbio/m00/project/MetaDenovo_V1/envs/miniconda3/envs/R3.6.1/lib/R/library/ data.table_1.14.6.tar.gz
wget https://cran.r-project.org/src/contrib/rlang_1.0.6.tar.gz ### stringr 包的依赖
wget https://cran.r-project.org/src/contrib/stringi_1.7.12.tar.gz ### stringr 包的依赖
wget https://cran.r-project.org/src/contrib/glue_1.6.2.tar.gz ### stringr 包的依赖
wget https://cran.r-project.org/src/contrib/lifecycle_1.0.3.tar.gz ### stringr 包的依赖
R CMD INSTALL --library=/PERSONALBIO/work/microbio/m00/project/MetaDenovo_V1/envs/miniconda3/envs/R3.6.1/lib/R/library/ rlang_1.0.6.tar.gz
R CMD INSTALL --library=/PERSONALBIO/work/microbio/m00/project/MetaDenovo_V1/envs/miniconda3/envs/R3.6.1/lib/R/library/ stringi_1.7.12.tar.gz
R CMD INSTALL --library=/PERSONALBIO/work/microbio/m00/project/MetaDenovo_V1/envs/miniconda3/envs/R3.6.1/lib/R/library/ glue_1.6.2.tar.gz
R CMD INSTALL --library=/PERSONALBIO/work/microbio/m00/project/MetaDenovo_V1/envs/miniconda3/envs/R3.6.1/lib/R/library/ lifecycle_1.0.3.tar.gz
R CMD INSTALL --library=/PERSONALBIO/work/microbio/m00/project/MetaDenovo_V1/envs/miniconda3/envs/R3.6.1/lib/R/library/ stringr_1.5.0.tar.gz
# R CMD INSTALL --library=/PERSONALBIO/work/microbio/m00/project/MetaDenovo_V1/envs/miniconda3/envs/R3.6.1/lib/R/library/ tidyfst_1.7.6.tar.gz # 安装包存在语法错误
R CMD INSTALL --library=/PERSONALBIO/work/microbio/m00/project/MetaDenovo_V1/envs/miniconda3/envs/R3.6.1/lib/R/library/ tidyfst_1.0.0.tar.gz ## 更换其他版本的安装包
export R_LIBS=/PERSONALBIO/work/microbio/m00/project/MetaDenovo_V1/envs/miniconda3/envs/R3.6.1/lib/R/library
rm *.tar.gz
# 给脚本添加可执行权限
[root@hdp04 library]# chmod +x install_tidyfst_packages.sh
# 执行脚本,下载并安装
[root@hdp04 library]# bash install_tidyfst_packages.sh
#查看包
> library(tidyfst)
Life's short, use R.
这一步会比较繁琐,但是操作不是很困难,查看报错信息安装相应的依赖包的源码安装即可。
在这里,还有一个安装包的语法问题,推测是作者在打包的时候没有注意代码的格式问题,导致执行源码文件失败,最简单的解决方式就是看一下之前版本的安装包是否有可用的,直接下载安装即可。这里,本人一直尝试到 1.0.0的版本才安装成功。(如果你有能力修复安装包的bug就最好了)
- 基于 bioconductor安装
这个可以自行搜索,本人尝试过程中不是很好用。
if (!require("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install()
BiocManager::install(c("GenomicFeatures", "AnnotationDbi"))
- github上的issue 给出的解决方法
devtools::install_github()
install.packages("devtools")
devtools::install_github("YuLab-SMU/ggtree")
## 终于安装成功