R语言在服务器上安装是一个比较可麻烦可简单的事情,这里记录下R语言在两个比较常见的Linux发行版的安装方法,分别是CentOS和Ubuntu。
通用方法(无需Root)
只要你的服务器能够安装conda,那么你就可以用conda去安装你的R语言。conda已经不再局限于最早的Python的环境管理了,而是扩展到R, Java, C/C++等编程语言。
Package, dependency and environment management for any language—Python, R, Ruby, Lua, Scala, Java, JavaScript, C/ C++, FORTRAN, and more.
让我们使用conda search r-base
在conda的频道中检索,
1 | ... |
发现能找到好几个版本的R语言,我推荐通过新建环境的方式安装不同版本的R语言,这样就能在不同环境间切换。
1 | conda create -n r-3.6.1 r-base=3.6.1 |
之后用conda activate r-3.6.1
调用R的环境即可。
这个方法的优点是不需要root权限,安装方便,不过听过在使用的时候或许会出现一些bug,我还没有遇到。
除了conda外,我们可以通过手工解决R语言的依赖环境,通过源码安装最新的R语言,这个方法也不依赖于平台。不过你需要看下这篇无root权限解决编译时的依赖问题, 但是很麻烦。还是建议用conda比较合适。
假如需要用Jupyter notebook调用R,那么安装方式为
1 | conda install -c r r-irkernel |
因为 conda install -c r r=3.6.x/r-base 默认不会安装 irkernel,而且先安装的 r=3.6.x/r-base 可能与后安装的 r-irkernel/r-essentials 产生冲突。
CentOS
CentOS/RedHat是可以通过sudo yum install R
的方式安装R语言,解决一切依赖问题,并且安装比较新的R版本
1 | ================================================================ |
这个方法安装的是比较新的R,基本上所有新版本能装的R包,它也能装了。但是如果你需要安装最新的R,那么就需要从头编译
先运行sudo yum install R
搞定大部分依赖问题,然后你可能还得手动解决几个依赖问题,我遇到的是X11和libcurl
1 | # X11 |
之后下载源代码编译安装
1 | wget https://mirrors.tuna.tsinghua.edu.cn/CRAN/src/base/R-3/R-3.6.1.tar.gz |
其中--enable-R-shlib
是Rsutdio-Server安装需要,而--prefix
是指定安装路径
Ubuntu
在Ubuntu上直接通过sudo apt-get install r-base
的方式安装的不是最新版本的R,而是R-3.4版本。
R 3.4 packages for Ubuntu on i386 and amd64 are available for all stable Desktop releases of Ubuntu prior to Bionic Beaver (18.04) until their official end of life date.
不过我们可以通过增加安装源的方式,使得能够通过apt-get
的方式安装最新的R。
第一步,确认你的Ubuntu版本,是Xenial Xerus(16.04; LTS), Trusty Tahr (14.04; LTS), Bionic Beaver (18.04;LTS), Cosmic Cuttlefish (18.10), Disco Dingo (19.04)的哪一种。
第二步,根据你的服务器Ubuntu版本,按照需求复制下面的其中一行代码(一定要注意,是一行,不是全部复制)
1 | deb https://cloud.r-project.org/bin/linux/ubuntu disco-cran35/ |
然后用vim编译/etc/apt/sources.list
, 添加你复制的内容到最后一行,我的服务器是 xenial,所以增加的是
1 | deb https://cloud.r-project.org/bin/linux/ubuntu xenial-cran35/ |
除了修改/etc/apt/sources.list
,还需要增加APT
1 | sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9 |
之后,用下面的命令就可以安装最新的R
1 | sudo apt-get update |
这个方法稍微麻烦些,据说通过这样子安装的R存在一些bug,不过我没有遇到。
假如你需要安装不同版本的R语言,那么就需要下载源代码进行编译安装。根据我的经验,你至少先得用下面这些命令安装R的依赖环境(可能还不够)
1 | # 设置环境变量 |
假如你使用的是conda用户,那么安装之前,你需要用先退出conda环境,不然后续libcurl可能会一直提示出错
下载R的源代码,进行编译安装
1 | wget https://mirrors.tuna.tsinghua.edu.cn/CRAN/src/base/R-3/R-3.6.1.tar.gz |
其他
此外,我还推荐大家安装OpenSSL/Curl/XML/HD5F,可以节约之后的一点时间
Fedora, CentOS, RHEL
1 | yum install openssl-devel |
Debian, Ubuntu等
1 | sudo apt install libssl-dev |