分享

服务器R包安装小技巧

 hucy_Bioinfo 2021-08-19

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./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)

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多