生信R环境配置究极血泪史

背景

实验室的服务器,操作系统:Ubuntu 16.04.6 LTS

生信里面很多包是基于R的,所以R不可不品尝。
根据我们的管理习惯,服务器上预装了R和一些基本的包,用户只需要在自己的目录下面安装一些额外要用的包就足够了。预装的R信息如下:

# R path
"/usr/bin/R"
# basic libraries
"/usr/local/lib/R/site-library"
"/usr/lib/R/site-library"
"/usr/lib/R/library"

版本为R version 4.2.0 (2022-04-22) -- "Vigorous Calisthenics"

第一次尝试

一切顺利的话很简单,在自己目录下建立lib文件夹并且加入环境变量:

# create lib dir
mkdir $HOME/R_lib
# add to libpath (write into ~/.*rc file)
export R_LIBS_USER="$HOME/R_lib:$R_LIBS_USER"

然后就可以快乐的进入R并且安装相应的包了,我安装了BiocManager,devtools以及单细胞分析最常用的Seurat。其中安装BiocManager和devtools的时候会要求更新,我都一律更新了(但是非必要,因为/usr下预装的包很多,全部更新需要很久)

install.packages("BiocManager")
# update to R 4.2-compatible version
BiocManager::install(version="3.16")

install.packages("devtools")
install.packages("Seurat")

So long so good. 但是事情在我要用到nichenet的时候发生了变化。这个包依赖于caret,which做一些统计学习任务,是比较基本的包。这个包依赖clock,which大概是一个更基本的包。然而它compile失败了。

仅使用Conda+R?

第二个方案是使用Conda配置R环境,详见Conda搭建R环境避坑指南. 简而言之,利用以下命令可以装好caret

conda create -n R4.2.0 -c conda-forge r-base=4.2.0 r-essentials

但是在这之上安装devtools的尝试遇到了惨烈的失败,直接给我报了三十多个错ORZ。不靠谱!!

缝合怪or奇美拉:丑陋但是有用

最后选择把这两个lib缝合到一起。

export R_LIBS_USER="$HOME/miniconda3/envs/R4.2.0/lib/R/library:$R_LIBS_USER"
export R_LIBS_USER="$HOME/R_lib:$R_LIBS_USER"

work了!!!!

最后必须吐槽一句,R你语法反人类就算了,连安装都这么反人类,大量需要g++编译的包,就不能搞个binary release,或者至少学习一下pip wheel?

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容