背景
實驗室的服務(wù)器,操作系統(tǒng):Ubuntu 16.04.6 LTS
生信里面很多包是基于R的,所以R不可不品嘗。
根據(jù)我們的管理習(xí)慣,服務(wù)器上預(yù)裝了R和一些基本的包,用戶只需要在自己的目錄下面安裝一些額外要用的包就足夠了。預(yù)裝的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文件夾并且加入環(huán)境變量:
# 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并且安裝相應(yīng)的包了,我安裝了BiocManager,devtools以及單細(xì)胞分析最常用的Seurat。其中安裝BiocManager和devtools的時候會要求更新,我都一律更新了(但是非必要,因為/usr下預(yù)裝的包很多,全部更新需要很久)
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的時候發(fā)生了變化。這個包依賴于caret,which做一些統(tǒng)計學(xué)習(xí)任務(wù),是比較基本的包。這個包依賴clock,which大概是一個更基本的包。然而它compile失敗了。
僅使用Conda+R?
第二個方案是使用Conda配置R環(huán)境,詳見Conda搭建R環(huán)境避坑指南. 簡而言之,利用以下命令可以裝好caret:
conda create -n R4.2.0 -c conda-forge r-base=4.2.0 r-essentials
但是在這之上安裝devtools的嘗試遇到了慘烈的失敗,直接給我報了三十多個錯ORZ。不靠譜?。?/strong>
縫合怪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,或者至少學(xué)習(xí)一下pip wheel?