非Root权限-如何在linux上安装R语言?

2022-03-29 09:28:31 浏览数 (1)

导语

GUIDE ╲

你是否有过这样的困扰:想使用一个R包,但由于没有root权限而感到束手束脚? 别慌……你只需要用自己的账户重新安装一款R软件,进入到自己目录下的R就可以自由安装R包啦!

背景介绍

非Root权限的账户在linux上安装R时,会遇到各种各样的问题,小编作为资深“踩坑”专家,今天就好好为大家“排排坑”!

配置环境所需文件

在配置环境时,你可能用到的文件及下载地址有(可以直接用wget 下载地址获取):

环境配置

01

安装R语言(以3.6.2 version为例)

首先将R-3.6.2.tar.gz下载到目录/your/path下,执行:

代码语言:javascript复制
cd /your/path/
wget https://cran.r-project.org/src/base/R-3/R-3.6.2.tar.gz
tar -xzvf R-3.6.2.tar.gz
cd /your/path/R-3.6.2
./configure --prefix=/your/path/R  --enable-R-shlib --with-readline=yes --with-libpng=yes --with-blas 
make -j3
make install

若这步运行成功,恭喜你!可以去庆祝了!

但往往实施起来不那么顺利,可能会遇到各种各样的问题,请带着你遇到的问题,在下面找解决方案吧……

02

问题盘点

1).若出现这样的报错:

代码语言:javascript复制
configure: error: "liblzma library and headers are required"

解决方式:

代码语言:javascript复制
wget http://tukaani.org/xz/xz-5.2.3.tar.gz
tar -xzvf xz-5.2.3.tar.gz
./configure --prefix=/your/path/xz-5.2.3
make -j3
make install

解决完毕后,请执行01过程。

2).若出现这样的报错:

代码语言:javascript复制
checking whether PCRE support suffices... configure: error: pcre >= 8.20 library and headers are required

解决方式:

代码语言:javascript复制
wget https://nchc.dl.sourceforge.net/project/pcre/pcre/8.42/pcre-8.42.tar.gz
tar -zxvf pcre-8.42.tar.gz
cd pcre-8.42
./configure --enable-utf8  --prefix=/your/path/pcre-8.42   # 一定要设置enable-utf8;
make -j3
make install

解决完毕后,请执行01过程。

3).若出现这样的报错:

代码语言:javascript复制
configure: error: libcurl >= 7.22.0 library and headers are required with support for https

解决方式:

代码语言:javascript复制
wget https://curl.haxx.se/download/curl-7.61.0.tar.gz
tar -zxvf curl-7.61.0.tar.gz
cd curl-7.61.0/
./configure --prefix=/your/path/curl-7.61.0
make
make install

解决完毕后,请执行01过程。

4).若出现这样的报错:

代码语言:javascript复制
checking whether bzip2 support suffices... configure: error: bzip2 library and headers are required

解决方式:

代码语言:javascript复制
tar -xvzf bzip2-1.0.6.tar.gz
cd bzip2-1.0.6
make -f Makefile-libbz2_so
#此时,需要修改Makefile文件
#将CC=gcc 改为 CC=gcc -fPIC
make clean
make  install PREFIX=/your/path/bzip2-1.0.6

解决完毕后,请执行01过程。

5).若出现这样的报错:

代码语言:javascript复制
C  11 standard requested but CXX11 is not defined

解决方式:

代码语言:javascript复制
cd /your/path/R-3.6.0/lib64/R/etc/
#修改Makeconf文件参数,如下:
#CXX11 = g  
#CXX11FLAGS = -O2 -g $(LTO)
#CXX11PICFLAGS = -fPIC
#CXX11STD = 

解决完毕后,请执行01过程。

03

按照02遇到的问题 配置好环境后,需要再次执行01过程

当然,再次执行01步骤时可不是照搬,需要做一些修改:

代码语言:javascript复制
cd /your/path/R-3.6.2
#切记要将刚刚改动的软件lib和include路径给出来,用参数LDFLAGS传递,以bzip2,xz为例
./configure --prefix=/your/path/R  --enable-R-shlib --with-readline=yes --with-libpng=yes --with-blas LDFLAGS="-L /your/path/bzip2-1.0.6/lib -L /your/path/xz-5.2.2/lib -L /your/path/bzip2-1.0.6/include  -L /your/path/xz-5.2.2/include"
make -j3
#此时手动修改Makeconf文件,在LDFLAGS这里加上-Wl,-rpath后面跟这两个库的路径,
#仍然以bzip2,xz为例
#LDFLAGS = -L /your/path/bzip2-1.0.6/lib -L /your/path/xz-5.2.2/lib -Wl,-rpath=/your/path/bzip2-1.0.6/lib  -Wl,-rpath=/your/path/xz-5.2.2/lib
make instal

R语言安装成功后,就可以进入到自己路径下的R,去尽情安装你喜欢的R包啦。

安装R包命令1:

代码语言:javascript复制
if (!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")
BiocManager::install("要安装的包")

安装R包命令2:

代码语言:javascript复制
R CMD INSTALL /.../mypackage.tar.gz --library=/your/lib/path

小编总结

很多时候,我们会对一些精美的R包动心,但受限于没有root权限,无法安装使用。

但get了防坑指南的你 就不同了,尽情在你喜欢的R包中自由飞翔吧!

0 人点赞