243-遇到不省心的Rstudio Server安装R包总是失败怎么办?

刘小泽写于2021.4.22 这次的目的是解决服务器端的Rstudio安装包失败的问题

先来看常规方法

Seurat包为例,我在服务器的Rstudio中安装:

options("repos" = c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
options(BioC_mirror="https://mirrors.ustc.edu.cn/bioc/") 
install.packages('Seurat')

一般本地安装,这种应该比较简单就安装上了,但是在服务器上(尤其自己还没有足够的权限),可能会遇到某个依赖的动态库加载不出来的问题

看到这个libmkl_gf_lp64.so是加载不出来的

遇到这个问题,我首先想到的是怎么去安装这个库,但是搜索了一会,感觉这个方案不科学。

一是我没有权限去安装一些动态库;二是我这次解决了一个,之后可能会遇到更多,那时还要我手动一个个去解决吗?我并不想在安装R包上浪费太多时间

我们熟悉的conda登场

为给自己求方便,我打算用conda安装,还是先配置好conda,然后用conda来安装一个R4.0版本

# 先安装
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh -b -p $HOME/miniconda3
echo export PATH=/home/$USER/miniconda3/bin:$PATH>>~/.bashrc
source ~/.bashrc
# 添加镜像
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
conda config --set show_channel_urls yes
# 我配置一个R 4.0
conda create -n R4 -y
source activate R4
conda install r-base -y
# 然后用conda继续安装seurat
 conda install -c bioconda r-seurat -y

这样,我们就能在shell中正常调用Seurat了

但是,回归到Rstudio Server,这个问题依旧没有解决,我们还是不能使用Seurat。

这个矛盾出在哪里?

我们需要了解,Rstudio工作时,它也是需要制定一个安装目录的,默认的安装目录查询是:

.libPaths()
[1] "/home/R/xxxxx-gnu-library/4.0" "/usr/local/lib/R/site-library"                     
[3] "/usr/local/lib/R/library" 

Server默认安装的路径和conda的安装路径不一致,所以conda帮忙解决的动态库问题,也无法应用到Server默认安装的路径中,因此出现了两次安装结果不一致的情况。

那么我们想,如果可以将conda的安装路径设置成Server默认安装的路径,问题岂不是解决了?

没错!这样也就实现了使用conda安装R包的便利操作,这个操作我之前其实写过了: 《141-R小技巧-R包的多版本控制》

myPaths <- .libPaths()  
new <- c('/home/miniconda3/envs/R4/lib/Rlibrary/')
myPaths <- c(myPaths, new) 
.libPaths(myPaths) 
.libPaths()

# [1] "/home/miniconda3/envs/R4/lib/R/library"  "/home/R/xxxxx-gnu-library/4.0"
# [3] "/usr/local/lib/R/site-library"                      "/usr/local/lib/R/library"  

这样,conda的安装路径就跑到了第一个,之后我们再安装加载,看到就成功了:

需要注意

这样在console中修改,只能持续一次,等你下次重新打开Rstudio时就失效了。为了以后的方便,可以在.Rprofile中配置好

file.edit('~/.Rprofile')
# 然后添加下面的内容
options("repos" = c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/")) 
options(BioC_mirror="https://mirrors.ustc.edu.cn/bioc/")

R_LIBS="/home/miniconda3/envs/R4/lib/R/library/"
# 最后保存退出

之后,每次重启就会默认切换到这个路径进行安装了

Yunze Liu
Yunze Liu
Bioinformatics Sharer

Co-founder of Bioinfoplanet(生信星球)

Next
Previous

Related