CentOS8编译安装R及RStudio Server
CentOS8离线安装R及RStudio Server
由于 CentOS8 的 EPEL 软件源中只有低版本的 R,因此通过编译安装的方式安装更新版本的 R。
查看当前系统
1 | cat /etc/redhat-release |
1
2
3
4
5
6
7
8
9
10
11
12 CentOS Linux release 8.3.2011
Static hostname: VM-8-7-centos
Icon name: computer-vm
Chassis: vm
Machine ID: ba26570f96344079bdb623d67ff332ec
Boot ID: b512b0e3522c492cbae54ecf13b3c81b
Virtualization: kvm
Operating System: CentOS Linux 8
CPE OS Name: cpe:/o:centos:centos:8
Kernel: Linux 4.18.0-193.28.1.el8_2.x86_64
Architecture: x86-64这里使用的是腾讯云的轻量应用服务器。
然后检查一下系统中是否有 R
命令,避免冲突。
下载并解压R安装包
1 | wget https://mirrors.tuna.tsinghua.edu.cn/CRAN/src/base/R-4/R-4.0.3.tar.gz |
书写这篇博文时,R-4.0.4 出了个大BUG,东亚文字在 R Console 里全部都用 Unicode 打印,这与 iswprint
的更改有关。尽管之后发布了“补丁”安装包(实际上应该是恢复了错误函数的全量安装包)和 R-4.0.5,但稳妥起见,还是博主自己正常使用的 R-4.0.3。
R version 4.0.4 Patched (2021-03-05 r80086) https://cran.r-project.org/bin/windows/base/rpatched.html
创建安装目录
1 | mkdir /home/root/soft/R |
使用 /home/root/soft
存放安装的软件,其下的 ./R
目录存放各个版本的 R。
检查安装环境
1 | ./configure --prefix=/home/root/soft/R/R-4.0.3 --enable-R-shlib |
注意,这里的
--perfix
参数应该填写 R 安装的目录。
Error 1: Fortran compiler
1 | yum install gcc-gfortran -y |
gcc-gfortran
安装完成后再次运行配置命令。
Error 2: headers/libs (with readline)
1 | yum install readline-devel -y |
readline-devel
安装完成后再次运行配置命令。
Error 3: X11 headers/libs (with x)
1 | yum install libXt-devel -y |
libXt-devel
安装完成后再次运行配置命令。
Error 4: libcurl >= 7.28.0
1 | yum install curl curl-devel -y |
这里遇到了奇怪的问题:我的 CentOS8 已经安装了最新版本的 libcurl-devel,但是 R 的配置检查还是提示该错误。经过反复尝试发现,重新安装可以解决,但是问题发生的原因不明。
libcurl-devel
安装完成后再次运行配置命令,结果显示配置检查成功。
这里需要注意,由于在安装 Python3.7.9 时,安装了
development tools
(dnf groupinstall 'development tools'
),因此提前安装好了许多依赖项。
最后的问题
配置检查最后报出三个 WARNING:
1 | configure: WARNING: you cannot build info or HTML versions of the R manuals |
第一个 WARNING 时缺少 textinfo;后两个 WARNING 是因为没有安装 latex 环境,但是 textlive 太难用了,不如安装好 R 后,通过 tinytex 包安装 tinytex 环境。
Attention!
由于使用 R 免不了要画好看的图,因此还需要提前安装一些包来支持图片输出,避免之后需要停止 Rstudio Server 再安装的窘境。
1 | yum install libpng libpng-devel libtiff libtiff-devel libjpeg-turbo libjpeg-turbo-devel libX11-devel |
在 R 中可以通过命令
capabilities()
查看支持情况。
可以使用
homebrew
套件管理器进行安装,详见Installing R with Homebrew with all the capabilities | Luis Puerto。
安装好 R 后,还需要手动安装 png
程序包:
1 | install.packages(“png”) |
然后进行新的配置检查:
1 | ./configure --prefix=/home/root/soft/R/R-4.0.3 --enable-R-profiling --enable-memory-profiling --enable-R-shlib --enable-BLAS-shlib --with-x --with-libpng --with-libtiff --with-jpeglib --with-lapack --with-ICU --with-blas --with-cairo |
编译安装
1 | make & make install |
漫长的等待……:tea::tea::tea:
还有奇怪的错误
1 | conftest.c:1:10: fatal error: jni.h: No such file or directory |
怀疑和 java 有关。缺失与 Java 有关,手动安装 JDK 1.8 即可解决。
添加环境变量
1 | vim /etc/profile |
然后就可以欢快地和 R 玩耍啦
还有个 RStudio Server 没装呢:
安装 RStudio Server
1 | yum install rstudio-server-rhel-1.4.1106-x86_64.rpm |
这里建议下载好 rpm 包后再上传到云主机进行安装,因为实在是太慢了,而且使用云主机下载不太稳定。
配置 RStudio Server
接着就是设置 rstudio-server 服务的自启动:
1 | systemctl restart rstudio-server |
此时可以访问 http://<IP>:8787
看看效果:laughing:
无法访问啊?我可是添加了防火墙策略的。让我看看~
1 | rstudio-server status |
查看 RStudio Server 启动情况:
1 | ● rstudio-server.service - RStudio Server |
查询资料可以知道,开启 rstudio-server 服务后,除了要打开 8787 端口,还需要配置 rserver.conf
。向该文件写入如下内容:
1 | rsession-which-r=/home/root/soft/R/R-4.0.3/bin/R |
此时可以访问 http://<IP>:8787
,成功进入登录界面!:laughing:
但是,无法登录,原因如下:
1 | User root could not be authenticated because could not be authenticated because they did not meet the minimum required user id (1000) |
所以还得创建一个用户来使用 RStudio Server 服务,应该有一部分是出于安全性考量。
创建一个名为 rsuser
的用户,然后设置密码。用户名的意思是 user of rstudio server:
1 | adduser rsuser |
成功登录!
后记
到此为止了吗?不!对于我这种 Linux 小白来说,在 Linux 下安装程序包也是一件心力交瘁(激动人心)的事。
建议使用
root
用户,在 R Console 中安装经常用到的 packages,这样能够使得同一 RStudio Server 实例上的其他用户也可以使用,减少安装次数。
tidyverse
安装时会遇到 stringi
的 icudt
数据包无法下载的问题,这是我国网络国情,可以通过手动下载数据包,上传至服务器后再安装:
1 | install.packages("stringi", configure.vars="ICUDT_DIR=/home/root/soft") |
然后再安装 tidyverse
:
1 | install.packages("tidyverse") |
又是一段漫长的过程……:tea::tea::tea:毕竟对于每个程序包都要进行编译,我的云服务器也只是 1 核 2 G。:sob:
发现 rvest
和 xml2
无法安装,根据报错信息找到解决方法:
1 | ------------------------- ANTICONF ERROR --------------------------- |
1 | yum install -y libxml2-devel |
然后 tidyverse
就可以成功安装啦!
rgdal
首先开启 powertools 仓库,然后安装 gdal-devel
, gdal
, proj-devel
1 | yum config-manager --set-enabled powertools |
1 | yum install gdal gdal-devel |
最后才能够编译安装 rgdal
。
1 | install.packages("rgdal") |
tinytex
1 | install.packages("tinytex") |
依旧是漫长的等待……:sleeping_bed::sleeping_bed::sleeping_bed:睡觉去了,希望明早起来能够安装好(2021-04-28)
早上起来发现它安装好啦,但是还得生成一次文档才能够下载好需要的 Latex 包。
RcppEigen
编译安装这个包很恶心。。。1 核 2 G 的服务器硬生生给编译卡死了,还报出 hundreds of WARNINGS。所以我在另一台 CentOS8 上进行编译安装,然后把编译好的二进制文件拷贝到服务器上,放在R Packages 的安装目录里,这才安装完成。
之所以会安装 RcppEigen,是因为它是 ggpubr 的依赖包。