为了提交R包,我构建了个多版本的R开发环境
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
。