安装R及R包失败笔记

2022-04-07 · 1274 words · 3 minute read R

这篇笔记相当于是对之前在linux中安装Rstudio-server的笔记的一个补充。

几个月前由于当时的 R 和 RStudio 都是安装在生产环境上,不大方便测试,于是要在测试环境上再从头到尾装一遍 R 和 RStudio 以及常用的 R 包。整个过程中当然又各种踩坑,有些报的错误由于当时复制粘贴出来问同事了,所以还能找到记录,有些就只记得大概的解决方法,具体咋操作的记不清了。我对 Linux 不熟,版本相关信息只可说见过一些关键词,如 CentOS、redhat 等。

安装 R

在不能联网的服务器上安装 R 的流程很简单,把下载好的R安装文件弄过来,然后解压-编译-安装,安装完以后cd /R-4.0.3/bin/到对应目录下执行./R看看是不是正常装好了。

# cd 到 R 安装文件所在目录
# 解压
tar -zxvf R-4.0.3.tar.gz
# 编译
./configure --prefix='/home/hadoop/R/R-4.0.3/' --enable-R-shlib=yes --with-tcltk --with-pcrel 
# 安装
make
make install

编译过程中报了很多错误,有些是因为安装环境中缺少某些包,有些是因为所使用的那个账户权限有限,所以要重新安装那些包。最坑的一点是报错说需要的包和头文件的名字,跟最后需要装的文件名字非常不一致。比如说报错显示缺少bzip2,于是要安装bzip2-devel包。但是报错说缺少liblzma,这就真是瞎碰乱试好半天才知道要安装的是lzmaxz-devel

configure: error: –with-readline=yes (default) and headers/libs are not available configure: error: –with-x=yes (default) and X11 headers/libs are not available

sudo yum install readline-devel
sudo yum install libXt-devel
sudo yum install libpng-devel

configure: error: bzip2 library and headers are required

sudo yum install bzip2-devel

configure: error: “liblzma library and headers are required”

sudo yum install lzma
sudo yum install xz-devel

configure: error: PCRE2 library and headers are required, or use –with-pcre1 and PCRE >= 8.32 with UTF-8 support;

sudo yum install pcre2-devel
sudo yum install libcurl-devel

安装 Rstudio Server

安装方法跟以前一样,但是报错了。

/usr/lib/rstudio-server/bin/rsession: error while loading shared libraries: libR.so: cannot open shared object file: No such file or directory

解决办法忘记了,好像是虽然报错,但是能够正常登陆。

安装 R 包

安装 stringi 包时报了个很迷的错误。

icudt download failed

Error: Stopping on error

In addition: Warning messages:

1: In download.file(paste(href, fname, sep = “”), icudtzipfname, mode = “wb”) :

URL ‘https://raw.githubusercontent.com/gagolews/stringi/master/src/icu69/data/icu4c-69_1-data-bin-l.zip': status was ‘Couldn’t connect to server’

2: In download.file(paste(href, fname, sep = “”), icudtzipfname, mode = “wb”) :

URL ‘http://raw.githubusercontent.com/gagolews/stringi/master/src/icu69/data/icu4c-69_1-data-bin-l.zip': status was ‘Couldn’t connect to server’

Execution halted

在网络上遨游一番后,参考https://cran.r-project.org/web/packages/stringi/INSTALL找到了一个答案:install.packages("~/R/R-4.0.3/source/stringi_1.7.3.tar.gz", repos = NULL, type = "source",configure.vars="ICUDT_DIR=/home/hadoop/R/R-4.0.3")

安装 xgboost 包时报错。

Error: C++14 standard requested but CXX14 is not defined

网上说要升级 gcc,但是我升级 gcc 以后还是报同样的错,然后我就撂挑子了。最后是领导帮忙,在 gcc 已经升级的基础上把 R 重新编译安装到我原来装的那个目录下,接着安装 xgboost 就不报错。最后的最后,领导把 gcc 还原到升级之前的版本了。这里我琢磨了一下,遇到这个错的正确处理步骤确实是:升级 gcc–重装 R–装 R 包–还原 gcc。我猜装 xgboost 包时不能编译成功的原因确实是 gcc 版本太旧,但是 xgboost 包不是直接借由 gcc 编译器来编译,而是要在 R 上编译,所以升级 gcc 以后还得重装 R 才好使。

还遇到过一个小问题,RStudio Server 输入完账号和密码登录进去以后,页面一直在转圈圈,后来发现是缺少了 rmarkdown 。