ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Linux中root安装microsoft R open(MRO),普通用户如何使用?

2021-06-01 22:57:27  阅读:297  来源: 互联网

标签:INSTALL open Microsoft MRO rpm lib64 root microsoft


年前,发现了Microsoft R Open更新到了4.0,就把服务器上的R版本更新了。

原来的版本:3.5.1

R version 3.5.1 (2018-07-02) -- "Feather Spray"Copyright (C) 2018 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)R是自由软件,不带任何担保。
在某些条件下你可以将其自由散布。
用'license()'或'licence()'来看散布的详细条件。

R是个合作计划,有许多人为之做出了贡献.用'contributors()'来看合作者的详细情况
用'citation()'会告诉你如何在出版物中正确地引用R或R程序包。

用'demo()'来看一些示范程序,用'help()'来阅读在线帮助文件,或
用'help.start()'通过HTML浏览器来看帮助文件。
用'q()'退出R.Microsoft R Open 3.5.1The enhanced R distribution from Microsoft
Microsoft packages Copyright (C) 2018 Microsoft Corporation

Using the Intel MKL for parallel mathematical computing (using 64 cores).Default CRAN mirror snapshot taken on 2018-08-01.See: https://mran.microsoft.com/.[原来保存的工作空间已还原]

现在root下已经安装过了MRO(Microsoft R Open)4.0.2,但是普通用户怎么安装呢?

上网搜索了一下,发现可以再非root用户下安装,有两种途径:

1,conda安装

conda install -c r r-microsoftr

但是版本还是3.5,忧伤,不是最新版的

2,解析install.sh的代码,

代码来源:https://www.jianshu.com/p/5958fa98d42f

# 1.下载并解压官方安装包
wget https://mran.blob.core.windows.net/install/mro/3.5.1/microsoft-r-open-3.5.1.tar.gz
tar -xf microsoft-r-open-3.5.1.tar.gz
cd microsoft-r-open/# 2. 查看 install.sh 内容
less install.sh
# 分析发现脚本判断了当前操作系统然后依次安装(以 YUM 为例)# ${SCRIPT_DIR}/rpm/microsoft-r-open-mro*.rpm
# ${SCRIPT_DIR}/rpm/microsoft-r-open-foreachiterators*.rpm
# ${SCRIPT_DIR}/rpm/microsoft-r-open-mkl*.rpm

# 3. 分别查看三个 rpm 包的安装脚本,重点看 postinstall scriptlet 部分的内容
rpm -qp --scripts rpm/microsoft-r-open-mro*.rpm
rpm -qp --scripts rpm/microsoft-r-open-foreachiterators*.rpm
rpm -qp --scripts rpm/microsoft-r-open-mkl*.rpm
# 分析发现 mro* 包是在往 /usr/bin/ 下面写链接文件
# foreachiterators* 没有做任何事情
# mkl* 备份了原有的 R/lib/*.so 文件,并拷贝了一套新的动态链接库文件覆盖到了安装路径中

# 4. 手工解压 rpm 包
rpm2cpio rpm/microsoft-r-open-mro*.rpm |cpio -idmv
rpm2cpio rpm/microsoft-r-open-foreachiterators*.rpm |cpio -idmv
rpm2cpio rpm/microsoft-r-open-mkl*.rpm |cpio -idmv

# 5. 手工执行 postinstall scriptlet
INSTALL_PREFIX="./opt/microsoft/ropen/3.5.1/" # 从前面解压的路径可以看出来
mkdir -p ${INSTALL_PREFIX}/lib64/R/backup/lib
mv ${INSTALL_PREFIX}/lib64/R/lib/*.so ${INSTALL_PREFIX}/lib64/R/backup/lib
cp ${INSTALL_PREFIX}/lib64/R/backup/lib/libR.so ${INSTALL_PREFIX}/lib64/R/lib
cp ${INSTALL_PREFIX}/stage/Linux/bin/x64/*.so ${INSTALL_PREFIX}/lib64/R/lib

# 6. 拷贝解压完的目录到指定安装位置
MRO_HOME="~/mro"
cp ${INSTALL_PREFIX} ${MRO_HOME}

# 7. 设置环境变量
# 注:R_HOME 会影响含 C++ 的 package 编译安装时寻找的头文件和链接库,详见 ${INSTALL_PREFIX}/lib64/R/etc/Makevars。
export R_HOME=${MRO_HOME}/lib64/R
export PATH=${MRO_HOME}/bin:${PATH}

上面应该可以成功,但是很复杂,我明明有root权限,为何不能直接用root下的R呢?

正确的方法

发现MRO安装的路径:

/opt/microsoft/ropen/4.0.2/lib64/R/bin

查看我自己的R路径:

$ which R~/anaconda3/bin/R

把我的R路径,建立软链到MRO的路径下即可!

cd ~/bin/ln -s /opt/microsoft/ropen/4.0.2/lib64/R/bin/R .

然后查看一下R的路径:

$ ll R
lrwxrwxrwx 1 dengfei dengfei 40 2月   8 13:17 R -> /opt/microsoft/ropen/4.0.2/lib64/R/bin/R

搞定!

测试一下:

$ R

R version 4.0.2 (2020-06-22) -- "Taking Off Again"Copyright (C) 2020 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)R是自由软件,不带任何担保。
在某些条件下你可以将其自由散布。
用'license()'或'licence()'来看散布的详细条件。

R是个合作计划,有许多人为之做出了贡献.用'contributors()'来看合作者的详细情况
用'citation()'会告诉你如何在出版物中正确地引用R或R程序包。

用'demo()'来看一些示范程序,用'help()'来阅读在线帮助文件,或
用'help.start()'通过HTML浏览器来看帮助文件。
用'q()'退出R.Microsoft R Open 4.0.2The enhanced R distribution from Microsoft
Microsoft packages Copyright (C) 2020 Microsoft Corporation

Using the Intel MKL for parallel mathematical computing (using 64 cores).Default CRAN mirror snapshot taken on 2020-07-16.See: https://mran.microsoft.com/.[原来保存的工作空间已还原]

测试一下radian:

$ r
R version 4.0.2 (2020-06-22) -- "Taking Off Again"Platform: x86_64-pc-linux-gnu (64-bit)r$>

完美!

标签:INSTALL,open,Microsoft,MRO,rpm,lib64,root,microsoft
来源: https://blog.51cto.com/u_15242286/2843996

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有