继续学R:在Linux下源码方式装R / Installing R from source

in #r6 years ago

之前为了体验一下R,随便用sudo apt-get install r-base r-base-dev装了个R,合计反正就是体验一下,没必要像正规军一样搞得很复杂。然后今天发现一个真理,就是你以前偷的的懒,都会在以后找回来的


(图源 :pixabay)

话说昨天别人问我个小问题,用到quantmod这个东东,甭管它是啥,先装着试试呗。

install.packages('quantmod')

结果想象中的一路yes,顺利安装被没有出现,而是我给我个提示:

package 'quantmod' is not available (for R version 3.1.1)

原本以为我无往不利的搜索大法应该很快解决这个问题,结果这次找了N多网页却没有找到答案,满头雾水的我最后终于意识到,是我的R的版本太旧了😭。好吧,先不管这个quantmod,升级版本先,想用最新版本的最好方式当然是从源码安装了,说干就干,源码安装走起。

准备工作

更新系统

首先更新一下系统

sudo apt-get update
sudo apt-get upgrade

无论干点啥,先更新一下,身体倍棒,吃嘛嘛香。

创建目标目录

sudo mkdir /opt/R
sudo chmod 777 /opt/R

我瞎建个目录安装,要是没啥问题的话,其实可以使用默认目录的。

下载源码

https://www.r-project.org/ 找一下最新的源码,我找到的最新的是这个:

R version 3.5.0 (Joy in Playing) has been released on 2018-04-23.

点进去之后,找到下载链接:https://cran.r-project.org/src/base/R-3/R-3.5.0.tar.gz),在Linux系统下执行如下命令,将其下载到本地,解压,并进入目录

wget https://cran.r-project.org/src/base/R-3/R-3.5.0.tar.gz
tar xzvf R-3.5.0.tar.gz
cd R-3.5.0

安装必要编译工具

其实我也不知道应该按啥,因为不知道系统都有啥,缺啥按啥吧。 因为我的系统上曾经按过不少东西,所以没提示缺啥😳。

配置 R

配置我参考的Installing-R-under-Unix_002dalikes,可以使用如下命令查看详细帮助:

./configure --help

一切默认的话,执行如下命令即可

./configure

我手欠,先是执行这个配置命令:

./configure --enable-R-shlib --prefix=/opt/R

其中:

  • --enable-R-shlib
    将R编译成动态库(libR.so),然后R的执行程序与之链接。加这个纯属我手欠,因为我没有想在其它语言中集成R,并且设置这个选项会影响性能,不过我如实记载我的操作,就放这了。
  • --prefix=/opt/R
    这个指定安装目录,否则会安到默认的目录中。

等半天后提示我系统没有X11,我懒得装X,直接禁用吧(这块有坑,以后再说)

./configure --enable-R-shlib --with-x=no --prefix=/opt/R

编译 R

配置成功后,执行如下命令进行编译:

make

结果等半天后出现如下错误信息:

configuring Java ... *** Cannot find any Java interpreter *** Please make sure 'java' is on your PATH or set JAVA_HOME correspondingly。

晕,这难道不应该在配置阶段报错吗?反正我也不用什么JAVA(估计和我启用--enable-R-shlib有关),重新配置:

./configure --enable-R-shlib --with-x=no --disable-java --prefix=/opt/R

再次编译,成功!然后执行安装命令:

make install

收尾

测试一下,启动R:

/opt/R/bin/R


已经是最新版本喽。

创建软链接,方便访问

cd /usr/bin
sudo ln -s /opt/R/bin/R R
sudo ln -s /opt/R/bin/Rscript Rscript

补充说明

R的编译和运行需要Fortran编译器以及运行时库支持,我后来不小心卸载了,也运行不起来,也配置和编译不了了。

运行R提示:

/opt/R/lib/R/bin/exec/R: error while loading shared libraries: libgfortran.so.3: cannot open shared object file: No such file or directory

重新配置则提示:

configure: error: No F77 compiler found

重新安装Fortran编译器,解决问题

sudo apt-get install gfortran


总算把R搞到最新版本啦,否则拿明朝万历年间的R来学习,是有点落伍呢。不过这个不完美,有坑,下篇文章再说咋个坑法吧。

相关链接

Sort:  

所以在这个问题上还是 windows 省心!

生命在于折腾。

在Windows上用R有没有糖(语法糖)吃?

呃……这是我遇到的关于 r 最难的问题

测试在R version 3.4.4 (2018-03-15)上安装quantmod这个东东没毛病,看到你的平台是armv71,有点好奇,这是什么设备?

我在3.5.0上也没问题啦,之前的3.1.1版本太旧,估计那时候还没有quantmod呢。

设备是香蕉派M3,我一堆香蕉派啊,又不能吃,只好拿来玩喽。

我买了一个类似的树莓派,发现也不能吃,还积了灰,后来送给小伙伴玩了:)

哈哈,好幸福的小伙伴。

linux 有r studio吗?之前在我的mac有玩过一点,主要是学python的时候,顺便写些r来做资料分析

linux 有 rstudio,很好用。jupyter 原生是为 python 设计的,虽然支持r,个人感觉不如 rstudio 舒服。
,就像 rstudio 同样支持 python 一样。

哦,最近没搞这些,所以没啥看哈哈。现在主要是搞区块链,这些都派不上用场

可以试试用jupyter notebook,这个笔记本支持R和Python编程,在同一个笔记本里还可以R和Python混合编程。参考链接

哇,没试过。我只有试过用ruby在jupyter notebook里。感谢🙏

我才刚开始探索,前两天安装的R, 想起jupyter支持多种编程语言就尝试了下R。

听说jupyter的名字取自JUlia,PYThon, 和 R, 受木星(Jupiter)的启发,R是jupyter支持的三大核心编程语言之一。所以用jupyter学R也合适。

jupyter 支持 r ,rstudio支持 python,淡都不如对方支持得好……

Julia不是后期来的吗?

对Julia不了解,等感兴趣的小伙伴去探索了

你问我这种菜鸟这么高深的问题,我咋回答?难不成告诉你百度一下,你就知道:)

没啥玩R,就几年前玩的,现在都不用了哈哈

@oflyhigh, 代码/编程/IT搞得很溜啊,陶醉本尊了,快扶我一下...

Coin Marketplace

STEEM 0.24
TRX 0.11
JST 0.031
BTC 61585.79
ETH 3005.19
USDT 1.00
SBD 3.68