PMCMR
和PMCMRplus
是用来做秩和检验的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
,将其所有依赖(包括GMP
和MPFR
)一并安装后也没有安装上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
原文地址:https://www.cnblogs.com/jessepeng/p/11674783.html