admin管理员组

文章数量:1028579

你真的会管理R包吗

原先已有《玩转服务器》系列推文,作为互补,《玩崩服务器》这个系列主要介绍用户在使用服务器的时候一些错误操作,这些操作可能导致用户账号无法正常登陆、命令正常使用、环境丢失、R包无法正常安装或使用。同时给出这些问题的解决方法。

背景简介

一般来说,常见的R包安装方法有以下几种:

代码语言:txt复制
# 1.安装官方CRAN仓库中的稳定版本包 
install.packages("Rpkg") 
 
# 2.从Bioconductor安装(生信R包) 
if(!require("BiocManager", quietly = TRUE)) 
    install.packages("BiocManager") 
BiocManager::install("Rpkg") 
 
# 3.从GitHub安装(开发版或非CRAN包) 
install.packages("devtools")# 或 remotes 
devtools::install_github("用户名/仓库名") 
# 示例:安装dplyr的开发版 
devtools::install_github("tidyverse/dplyr") 

对于共享服务器,用户安装的R包会默认保存在 ~/R/x86_64-pc-linux-gnu-library/4.4/,最后的 4.4 根据R语言的版本不同而不同。同时,共享服务器还提供了上千的公共R包,路径在 /refdir/Rlibs,如果想要调用服务器的公共R包,则必须在 .libPaths() 中添加公共R包路径。有两种方法:

【1】需要每次登陆服务器中都设置一下:直接在 .libPaths() 中添加服务器公共R包的路径即可。但是这样设置仅仅是当前R会话生效,当会话重启或者切换了其他项目 Rproj 之后就会失效

代码语言:txt复制
.libPaths(c('~/R/x86_64-pc-linux-gnu-library/4.4', 
'/refdir/Rlib', 
'/usr/local/lib/R/library')) 

【2】一次设置长期有效: ssh 登录服务器创建一个 ~/.Rprofile(R语言配置文件),然后在这个文件中输入你要调用R包的位置即可。设置好了之后,重启 Rsession 即可生效。示例代码如下:

代码语言:txt复制
echo ".libPaths(c('~/R/x86_64-pc-linux-gnu-library/4.4', 
'/refdir/Rlib', 
'/usr/local/lib/R/library'))">>~/.Rprofile 

但是这里有一个注意点,一般服务器的R语言版本是半年或一年更新一次,公共R包也会同步更新。每次更新会提前通知,更新后则需要用户自行更新个人目录下的R包,需要再重新修改 ~/.Rprofile

问题描述

用户在安装 celldex 遇到报错:

报错提示依赖R包版本不兼容,但是重新安装依赖R包还是会报同样的错。

解决方法

检查发现,用户的 ~/.Rprofile 的 .libPaths() 和在Rstudio里的 .libPaths() 设置并不一样,前者用了4.3,后者用了4.4:

而部分R包在安装过程中,会调用你的 ~/.Rprofile,这就导致了各种兼容性报错。

因此,要解决该问题,就要修改 ~/.Rprofile 的 .libPaths() 为 4.4 ,然后再把已经安装的依赖包,删掉重装。因为这些R包,是在之前4.3的情况下安装的,版本不兼容4.4。

代码语言:txt复制
# 删除依赖包 
remove.packages("alabaster.base",  
                lib="~/R/x86_64-pc-linux-gnu-library/4.4") 
remove.packages("alabaster.matrix",  
                lib="~/R/x86_64-pc-linux-gnu-library/4.4") 
# 重新安装 celldex 
BiocManager::install('celldex') 

实际上, ~/.Rprofile 和 .libPaths() 并不是在 Linux系统中特有的,在 Windows 和 Mac 环境下,也经常会用到这两者,只不过很多人在学习R语言的过程中忽视了它们。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2025-04-25,如有侵权请联系 cloudcommunity@tencent 删除系统服务器管理兼容性开发

你真的会管理R包吗

原先已有《玩转服务器》系列推文,作为互补,《玩崩服务器》这个系列主要介绍用户在使用服务器的时候一些错误操作,这些操作可能导致用户账号无法正常登陆、命令正常使用、环境丢失、R包无法正常安装或使用。同时给出这些问题的解决方法。

背景简介

一般来说,常见的R包安装方法有以下几种:

代码语言:txt复制
# 1.安装官方CRAN仓库中的稳定版本包 
install.packages("Rpkg") 
 
# 2.从Bioconductor安装(生信R包) 
if(!require("BiocManager", quietly = TRUE)) 
    install.packages("BiocManager") 
BiocManager::install("Rpkg") 
 
# 3.从GitHub安装(开发版或非CRAN包) 
install.packages("devtools")# 或 remotes 
devtools::install_github("用户名/仓库名") 
# 示例:安装dplyr的开发版 
devtools::install_github("tidyverse/dplyr") 

对于共享服务器,用户安装的R包会默认保存在 ~/R/x86_64-pc-linux-gnu-library/4.4/,最后的 4.4 根据R语言的版本不同而不同。同时,共享服务器还提供了上千的公共R包,路径在 /refdir/Rlibs,如果想要调用服务器的公共R包,则必须在 .libPaths() 中添加公共R包路径。有两种方法:

【1】需要每次登陆服务器中都设置一下:直接在 .libPaths() 中添加服务器公共R包的路径即可。但是这样设置仅仅是当前R会话生效,当会话重启或者切换了其他项目 Rproj 之后就会失效

代码语言:txt复制
.libPaths(c('~/R/x86_64-pc-linux-gnu-library/4.4', 
'/refdir/Rlib', 
'/usr/local/lib/R/library')) 

【2】一次设置长期有效: ssh 登录服务器创建一个 ~/.Rprofile(R语言配置文件),然后在这个文件中输入你要调用R包的位置即可。设置好了之后,重启 Rsession 即可生效。示例代码如下:

代码语言:txt复制
echo ".libPaths(c('~/R/x86_64-pc-linux-gnu-library/4.4', 
'/refdir/Rlib', 
'/usr/local/lib/R/library'))">>~/.Rprofile 

但是这里有一个注意点,一般服务器的R语言版本是半年或一年更新一次,公共R包也会同步更新。每次更新会提前通知,更新后则需要用户自行更新个人目录下的R包,需要再重新修改 ~/.Rprofile

问题描述

用户在安装 celldex 遇到报错:

报错提示依赖R包版本不兼容,但是重新安装依赖R包还是会报同样的错。

解决方法

检查发现,用户的 ~/.Rprofile 的 .libPaths() 和在Rstudio里的 .libPaths() 设置并不一样,前者用了4.3,后者用了4.4:

而部分R包在安装过程中,会调用你的 ~/.Rprofile,这就导致了各种兼容性报错。

因此,要解决该问题,就要修改 ~/.Rprofile 的 .libPaths() 为 4.4 ,然后再把已经安装的依赖包,删掉重装。因为这些R包,是在之前4.3的情况下安装的,版本不兼容4.4。

代码语言:txt复制
# 删除依赖包 
remove.packages("alabaster.base",  
                lib="~/R/x86_64-pc-linux-gnu-library/4.4") 
remove.packages("alabaster.matrix",  
                lib="~/R/x86_64-pc-linux-gnu-library/4.4") 
# 重新安装 celldex 
BiocManager::install('celldex') 

实际上, ~/.Rprofile 和 .libPaths() 并不是在 Linux系统中特有的,在 Windows 和 Mac 环境下,也经常会用到这两者,只不过很多人在学习R语言的过程中忽视了它们。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2025-04-25,如有侵权请联系 cloudcommunity@tencent 删除系统服务器管理兼容性开发

本文标签: 你真的会管理R包吗