查看原文
其他

为了提交R包,我构建了个多版本的R开发环境

biocoder YuLabSMU 2022-09-20

1. Bioconductor

因为上周五提交了一个R包到bioconductor,今天返回审核报告了,需要修改。下面是bioconductor的官方介绍。

Bioconductor provides tools for the analysis and comprehension
of high throughput genomic data. Bioconductor uses the R
statistical programming language, and is open source and open
development. It has two releases each year, and an active user
community.

我理解就是一个免费开源的软件项目,提供了很多进行高通量组学数据分析的R包,更重要的是有一个高度活跃的社区在维护。要想提交R包上去必经过他们的审核。上周五刚提交一个R包到上面去,今天返回了审核报告,结果发现我的R版本太低了,原来他们是用开发版R也就是4.0.0进行测试,问了下我老板,才知道社区都是用开发版测试,然后再发布发行版。总之就是我得换R版本了。但我原来用的是3.6.1的版本,我不想换怎么办?不急,下面就介绍基于WSL环境构建发行版R和开发版的R环境。

2. 下载安装R-devel

装一些常用的需要周期性更换版本的软件,如python请参考这篇文章《拒绝conda, 用virtualenv构建多版本的python开发环境》,R以及多数的生物信息学软件,我还是比较喜欢用源码安装,这样便于管理。下载这种开源软件记得找下镜像源,提高下载速度,还有一个办法就是用迅雷下载。

#下载
wget https://mirrors.tuna.tsinghua.edu.cn/CRAN/src/base-prerelease/R-devel.tar.gz
#解压
tar -zxf R-devel.tar.gz
cd R-devel
#自定义安装, 这里我安装在/mnt/d/UbuntuApps/R/devel4.0.0/路径下, 所以先构建下文件夹
mkdir -p /mnt/d/UbuntuApps/R/devel4.0.0
./configure --prefix=/mnt/d/UbuntuApps/R/devel4.0.0/ --enable-R-shlib --enable-BLAS-shlib --with-lapack --with-cairo --with-libpng --with-jpeglib --with-libtiff
make && make install
#安装好后测试
/mnt/d/UbuntuApps/R/devel4.0.0/bin/Rscript --version

我原来的R安装路径为/mnt/d/UbuntuApps/R/3.6.1,源码安装的好处就是,自己可以清楚知道装在哪,便于后面的管理维护。接下来就可以通过环境变量来进行不同版本间的切换,其实有点类似于virtualenv构建多个python开发环境。

3. 环境变量设置

说到环境变量,在Linux以及MacOS系统常常涉及到~/.bashrc~/.profile/etc/profile/etc/bashrc这几个文件,其中的~/.bashrc~/.profile是单一用户有效,/etc/profile/etc/bashrc是所有的用户。不同的Linux系统这几个文件名也有一点差别。这里不详细展开,在WSL个人用户下,只要改~/.bashrc~/.profile这两个文件中的一个就可以。

#先新建个激活文件并赋予755权限
touch /mnt/d/UbuntuApps/R/3.6.1/activate.sh
chmod 755 /mnt/d/UbuntuApps/R/3.6.1/activate.sh
#然后写入以下信息
echo "export PATH=$PATH:/mnt/d/UbuntuApps/R/3.6.1/bin" > /mnt/d/UbuntuApps/R/3.6.1/activate.sh
echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/d/UbuntuApps/R/3.6.1/lib/R/lib" >> /mnt/d/UbuntuApps/R/3.6.1/activate.sh
#同样的构建devel版的激活文件并赋予755权限
touch /mnt/d/UbuntuApps/R/devel4.0.0/activate.sh
chmod 755 /mnt/d/UbuntuApps/R/devel4.0.0/activate.sh
#然后写入以下信息
echo "export PATH=$PATH:/mnt/d/UbuntuApps/R/devel4.0.0/bin" > /mnt/d/UbuntuApps/R/devel4.0.0/activate.sh
echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/d/UbuntuApps/R/devel4.0.0/lib/R/lib" >> /mnt/d/UbuntuApps/R/devel4.0.0/activate.sh
#新建两个文件夹与两个文件并赋予755权限
mkdir -p ~/.Rdevel ~/.Rrelease
touch ~/.Rdevel/activate.sh
touch ~/.Rrelease/activate.sh
#然后分别写入如下信息
echo "source /mnt/d/UbuntuApps/R/3.6.1/activate.sh" > ~/.Rrelease/activate.sh
echo "source /mnt/d/UbuntuApps/R/devel4.0.0/activate.sh" > ~/.Rdevel/activate.sh
#打开 ~/.bashrc文件
vi ~/.bashrc
#添加如下信息进去
alias Rdevel='source ~/.Rdevel/activate.sh'
alias Rrelease='source ~/.Rrelease/activate.sh'

配置完成,以后想要进入R的开发环境只要终端输入Rdevel回车即可,同理想要进入发行版的R环境只要终端输入Rrelease回车即可。后面安装R包跟原来一样,如果你嫌网速太慢,请参考这篇文章《配置好各种镜像源,安装速度快过你单身十几年的手速,拒绝龟速》。 

昨天我老板更新了一篇多平台R包的测试《你只有一个系统,却要在多个平台上测试你的R包》,确实更加方便。但是今天这篇介绍的方法也完全可以参考。因为在实际工作中你可能就会用到多个版本的R,而且后面关于的Linux系统的环境配置思路也可以参考。如果想保持开发环境尽量干净还可以对不同版本的R分别建个.Rprofile,然后在环境激活时,自动生成个软链接到~/.Rprofile

精彩回顾


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存