Centos 下非 Root 安装 Microsoft R Open
Centos 下非 Root 安装 Microsoft R Open
作者: Hyacz hyacinth.hao@foxmail.com 2017年8月30日 本教程发布时仅针对 Microsoft R Open 3.4.0 版本测试通过。
写在前面
我们新写的 GWAS 的算法包 MVP 采用了 Microsoft R Open,在我们对计算的优化中 MRO 起到了非常关键的作用。在测试的时候就遇到了在没有 root 权限要安装 MRO 的问题,经过百度、Google 都没有找到较好的方案,研究了 MRO 的安装脚本和解开 RPM 包分析了之后,最终采用手工安装的方式成功安装,遂成此文与大家分享。(另随文附赠官方安装和 Conda 安装方法)
TL; DR
简要概括Microsoft R Open以及其各种安装方法,手工安装过程见文章最后。
Microsoft R Open 是一个加强的 R 发行版,完全适配与原有的 Base R——这意味着它可以使用所有的 R 包。 特色是: * 非常快 * 稳定,可以回滚包的版本
安装MRO
- 官方安装指南(下载、解压、运行安装脚本)
- 手工安装(下载、解压、手工安装)
- Conda(使用
conda install -c mro r
一键安装)
Microsoft R Open 是什么?
02A34C3D-D5D1-462B-9009-9C37DA1E48E9
MRO 是一个基于 Base R 的加强的完全开源、免费的 R 发行版,与原有的 Base R 完全适配,可以使用所有的 R 包和脚本。加强的地方主要体现在性能和再生性上,支持Windows、Linux和MacOS。
关于性能对比可以参考这个链接
官方安装指南
官方给出的指南是最简便快捷的(在你有 root 权限的时候)
参考这个链接:官方安装指南,总体思路就是下载,解压,用 root 权限运行安装脚本,然后按照提示一路 yes 下去就安装完成了。 Linux 安装指南部分摘抄如下:
- Log in as
root
or a user withsudo
privileges. If the latter, precede commands requiringroot
privileges withsudo
. - Make sure R is not running. Stop every R process prior to installing Microsoft R Open. You may need to close your IDE.
- Download the Microsoft R Open installer.
- Change to the directory where you downloaded the Microsoft R Open installer bundle.
- Untar the installer bundle as follows:
tar -xf microsoft-r-open-3.4.0.tar.gz
- Go to the
microsoft-r-open
directory as follows:cd microsoft-r-open/
- Install Microsoft R Open as follows:
sudo ./install.sh
- Follow the installer's onscreen prompts.
- To enable the optional multi-threaded performance for Microsoft R Open, select the MKL installation option and accept the end-user license agreement.
- When the Microsoft R Open installation is complete, run R in a terminalto begin interacting with R. Or, configure your R integrated development environment (R IDE).
Important!
- After installing, the default R path is updated to point to R installed with Microsoft R Open 3.4.0, which is under
lib64/R/bin/R
. - The CRAN repository points to a snapshot from May 1, 2017. This means that every user of Microsoft R Open has access to the same set of CRAN package versions. To get packages from another date, use the checkpoint package, installed with Microsoft R Open.
重要(随便翻译一下↑)
- Microsoft R Open 将会被默认安装在
lib64/R/bin/R
。(会覆盖之前安装的 Base R 的软链接。) - 微软做了一个 MRAN 的镜像,可以回滚旧版本的包。
使用 Conda 安装
不需要 root 权限,但是需要能访问外网( -除非制作本地 Conda Channel- ),安装的版本稍落后。
参考这个链接:Using Microsoft R Open with Conda
- 首先安装好miniconda
- 然后使用
conda install -c mro r
安装 Microsoft R Open - 再安装 mkl 扩展,参考这个链接
注意:目前Conda的源更新速度落后于官方发布的安装包,目前Conda的源只更新到 3.2.3,而官方安装包已经发布到了 3.4.0
手工安装
手工安装比较繁琐,优点在于可以不需要 root 权限安装上最新的 Microsoft R Open。
接下来以 Centos 为例(同样适用于其他使用 rpm 作为包管理器的 Linux发行版)
- 从官方网站下载对应的安装包。
- 解压安装包:
tar -xf microsoft-r-open-3.4.0.tar.gz
- 进入文件夹
microsoft-r-open
:cd microsoft-r-open
- 利用
rpm2cpio
解开 rpm 包:rpm2cpio rpm/microsoft-r-open-mro-3.4.rpm |cpio -idmv
rpm2cpio rpm/microsoft-r-open-foreachiterators-3.4.rpm |cpio -idmv
rpm2cpio rpm/microsoft-r-open-mkl-3.4.rpm |cpio -idmv
- 拷贝 mkl 的库文件:
cp usr/lib64/microsoft-r/3.4/stage/Linux/bin/x64/*.so usr/lib64/microsoft-r/3.4/lib64/R/lib/
- 编辑文件
usr/lib64/microsoft-r/3.4/lib64/R/etc/Rprofile.site
,在文件头部添加:Sys.setenv("MKL_INTERFACE_LAYER"="GNU,LP64")
Sys.setenv("MKL_THREADING_LAYER"="GNU")
- 拷贝 mro 到
$HOME
:mv usr/lib64/microsoft-r/3.4/lib64/R ~/mro-3.4
- 添加环境变量,写入
~/.bash_profile
export R_HOME=~/mro-3.4
export PATH=~/mro-3.4/bin:$PATH
export LD_LIBRARY_PATH=~/mro-3.4/lib:$LD_LIBRARY_PATH
注意:
R_HOME
后不要添加/
不然启动的时候会弹 Warning 告诉你R_HOME
的值被忽略了。另外写完文件之后需要source~/.bash_profile
使其生效。
检验安装
在终端输入:
R
如果回显中除了 Base R 正常启动时的回显还包括类似的这一段:
9B82EC5DB61E7291B07D7A559D835388
就说明 Microsoft R Open 已经安装成功了。
参考链接
- Microsoft R Open 官方网站:https://mran.microsoft.com/open/
- Microsoft R Open 官方安装指南:https://mran.microsoft.com/documents/rro/installation/
- Microsoft R Open 下载地址:https://mran.microsoft.com/download/
- Microsoft R Open 与 Base R 性能对比:https://htmlpreview.github.io/?https://github.com/andrie/version.compare/blob/master/inst/doc/version.compare.html
- 通过 Conda 安装 Microsoft R Open: https://conda.io/docs/user-guide/tasks/use-mro-with-conda.html#using-microsoft-r-open-with-conda
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 深入理解Android Bitmap
- Android基于AlarmManager实现用户在线心跳功能示例
- 详解Android中获取软键盘状态和软键盘高度
- Android流式布局FlowLayout详解
- Linux 专题
- Go语言实现UDP通信
- Android多渠道打包的方法步骤
- Android编程实现压缩图片并加载显示的方法
- Android串口通信封装之OkUSB的示例代码
- Android 中Activity 之间传递参数
- Android开发简单实现摇动动画的方法
- Android 中menu同时显示图标和文字的实现
- android基于SwipeRefreshLayout实现类QQ的侧滑删除
- PopupWindow自定义位置显示的实现代码
- Bootstrap 下拉菜单.dropdown的具体使用方法