[R]Linux非root下安装PMCMRplus包(待解决)

Posted Bioinfarmer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[R]Linux非root下安装PMCMRplus包(待解决)相关的知识,希望对你有一定的参考价值。

PMCMRPMCMRplus是用来做秩和检验的R包,在Linux上安装时,后面那个PMCMRplus包出现了问题。

ERROR: dependency ‘Rmpfr’ is not available for package ‘PMCMRplus’

安装Rmpfr依赖时,出现了如下问题:

configure: error: MPFR Library must be at least version 3.0.0, see README
ERROR: configuration failed for package ‘Rmpfr’

是系统MPFR 版本太低了。MPFR是什么我也不知道,大概是和大数值相关的运算有关,而且和GMP一起常作为GCC安装的依赖。所以重装MPFR,下载地址https://www.mpfr.org/mpfr-current/。如果是root用户,这个问题一下解决了。

sudo apt-get install libmpfr-dev #Ubuntu系列
sudo dnf install mpfr-devel #Centos系列

再重新安装下R包就行了。但是非root安装依赖库很麻烦,只能源码编译安装。

wget https://www.mpfr.org/mpfr-current/mpfr-4.0.2.tar.bz2
tar -jxvf mpfr-4.0.2.tar.bz2
mkdir mpfr4 && cd mpfr-4.0.2
./configure --prefix="/path/software/mpfr4"

没那么容易,报错了:

checking whether gcc __attribute__ ((mode (XX))) works... yes
checking for recent GMP... no
configure: error: GMP 5.0.0 or newer is required

要升级GMP版本,GMP(The GNU Multiple Precision Arithmetic Library)又叫GNU多精度算术库,是一个提供了很多操作高精度的大整数,浮点数的运算的算术库,几乎没有什么精度方面的限制,功能丰富。
于是下载GMP,安装。下载地址:https://gmplib.org/#DOWNLOAD
好像除了6,没有其他版本。

wget https://gmplib.org/download/gmp/gmp-6.1.2.tar.bz2
tar -jxvf gmp-6.1.2.tar.bz2
mkdir gmp6 && cd gmp-6.1.2
./configure --prefix="/path/software/gmp6"
make
make check
make install

GMP6安装成功后,再次安装mpfr,配置时需要指定gmp6路径:

./configure --prefix="/path/software/mpfr4" --with-gmp=/path/software/gmp6
make
make install

再重新安装Rmpfr包,但还是报同样的错。于是将两个库加入环境中:

export LD_LIBRARY_PATH=/path/software/gmp6/lib:/path/software/mpfr4/lib:$LD_LIBRARY_PATH

问题还是存在,莫非要安装新的gcc吗?暂时搁下了,后续再说吧,linux真的好烦,哎~~~

configure: error: MPFR Library must be at least version 3.0.0, see README
ERROR: configuration failed for package ‘Rmpfr’
* removing ‘/ldfssz1/SP_MSI/USER/pengjianxiang/software/R_packages/Rmpfr’

下次装个新的GCC试试吧。先贴个连接:linux下GCC安装


更新

实际上我重新装了一个GCC,将其所有依赖(包括GMPMPFR)一并安装后也没有安装上Rmpfr包。而Rmpfr的依赖包gmp是可以装上的。
技术图片

最奇怪的是,我即使是指定MPFR库和GMP库来安装这个R包(包括GCC自动安装的依赖和我之前手动安装的这两个库)也链接不上。

我是怎么指定依赖库的呢?经同事指点,找到了configure.args参数。指定库的头文件和库文件。

#安装gcc时自动安装的依赖库
install.packages("Rmpfr",configure.args = c(Rmpfr = "--with-mpfr-include=/path/to/mpfr-3.1.4/include --with-mpfr-lib=/path/to//mpfr-3.1.4/lib"))

#手动安装的依赖库
install.packages("Rmpfr",configure.args = c(Rmpfr = "--with-mpfr-include=/path/to//mpfr4/include --with-mpfr-lib=/path/to//mpfr4/lib"))

结果还是链接到了原来旧版本的MPFR上。但这个人说他可以https://stackoverflow.com/questions/37287226/pass-configure-arguments-to-install-packages-in-r
,但我的就是连接不上。
技术图片

同样,下载源码,在终端命令行下安装也报相同的错误。

R CMD INSTALL  --configure-args="--with-mpfr-include=/ldfssz1/SP_MSI/USER/pengjianxiang/software/mpfr-3.1.4/include --with-mpfr-lib=/ldfssz1/SP_MSI/USER/pengjianxiang/software/mpfr-3.1.4/lib" Rmpfr_0.7-2.tar.gz

最后我试着解压Rmpfr源码,直接编译。configure中有--with-mpfr-include--with-mpfr-lib参数,我指定库路径进行编译准备,可以通过。

技术图片
但生成的不是Makefile文件,而是src目录下的Makevars等文件。我也不知道能不能这么弄,反正不能make,最后也不能编译。
技术图片
还有个方法试下,就是用conda了。

Ref:https://blog.csdn.net/u013310119/article/details/81081125
https://www.jianshu.com/p/bc909ce2e424
install-gcc-5.4-without-root

以上是关于[R]Linux非root下安装PMCMRplus包(待解决)的主要内容,如果未能解决你的问题,请参考以下文章

R在linux中的library path的问题:

linux非root用户安装nginx

linux 非root怎么安装libssl-dev

linux 安装jdk 二进制版本,非安装版

linux非root用户安装ncurses-devel依赖,解决configure: error: No curses library functions found

Linux 18.04 非root 安装re2c和ninja