服务器R包安装小技巧
Rstudio Server是搭建在Linux之中的,当在服务器上使用Rstudio安装R包时,需注意,不同的账户可能都有自己的R包库(lib)文件路径;因此,服务器上一定存在很多重复安装的R包。在准备安装R包前,建议搜索不同的库文件路径,检查待安装的R包是否已经存在,以避免重复安装R包和存储空间的浪费。
1. 查看库文件路径
在Rstudio窗口,查看库文件的路径:
.libPaths()
# [1] "/home/hucy/R/x86_64-pc-linux-gnu-library/4.0" "/usr/local/lib/R/site-library" "/usr/lib/R/site-library" "/usr/lib/R/library"
2. 查看R包的安装路径
library()
R包分为系统包和用户包,用户包在 "/home/hucy/R/x86_64-pc-linux-gnu-library/4.0",系统包在 "/usr/lib/R/library"。
3. 查看库文件夹的可执行权限
在服务器终端查看或分配可执行权限:
chmod 751 /home/hucy/R/x86_64-pc-linux-gnu-library/4.0
ls -lF /home/hucy/R/x86_64-pc-linux-gnu-library
以下代码实现:①批量不重复安装R包;②hucy账户加载自身和root(用户名为dell)账户下已安装的R包。
rm(list=ls(all=T))
# 配置中国大陆特色镜像
options()$repos
options()$BioC_mirror
options(BioC_mirror="https://mirrors.ustc.edu.cn/bioc/")
options(repos = c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
options()$repos
options()$BioC_mirror
# 批量安装R包而且不重复安装
packList <- c("shiny",
"tidyr",
'tidyverse',
"clusterProfiler",
"DT",
"ashr",
"enrichplot",
"plotly")
# checking missing packages from list
# root和当前账户都有各自的lib存储位置,如果所有账户都有lib的可执行权限,则无需重复安装包,只需设置相应路径即可
# 由于没有其他账户lib的写入权限,因此,新安装的R包需要放入自己的lib
libAll = c("/home/dell/R/x86_64-pc-linux-gnu-library/4.0/","/home/hucy/R/x86_64-pc-linux-gnu-library/4.0","usr/lib/R/library")
new.packages <- packList[!(packList %in% installed.packages(lib=libAll)[,"Package"])]
new.packages
# 或
packToInst <-< span=""> setdiff(packList, installed.packages(lib=libAll))
packToInst
if(length(packToInst)){
BiocManager::install(packToInst,ask = F,update = F,lib="/home/hucy/R/x86_64-pc-linux-gnu-library/4.0")
}
sapply(packList,function(x){
suppressPackageStartupMessages(require(x,character.only = T, lib.loc=libAll))
})
# suppressPackageStartupMessages(sapply(packList, require, character.only = TRUE))
# 再次安装未成功的R包
install.packages("tidyverse",lib="/home/hucy/R/x86_64-pc-linux-gnu-library/4.0")
library(tidyverse)
# 报错:
# Error: package or namespace load failed for 'tidyverse’ in loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck = vI[[j]]):
# 载入了名字空间'lifecycle’ 0.2.0,但需要的是>= 1.0.0
# 解决:
# 需要什么,安装什么即可:
install.packages("lifecycle",lib="/home/hucy/R/x86_64-pc-linux-gnu-library/4.0")
install.packages("tidyverse",lib="/home/hucy/R/x86_64-pc-linux-gnu-library/4.0")
library(tidyverse)