繁体   English   中英

在Scientific Linux 6.6的非标准位置安装minqa时出错

[英]Error installing minqa in a non-standard location in Scientific Linux 6.6

我最终希望在具有Scientific Linux 6.6的系统上为R-3.2.5安装lme4 我在共享系统上(我正在为分布式计算问题编译R软件包),因此我需要将所有软件包安装到非标准位置( /a/lot/of/subdirectories/R-3.2.5而不是通常的/usr/local/ )。

我已经在安装lme4依赖项nloptr遇到了很多麻烦,该依赖nloptr无法使用R的常规install.packages命令进行安装。 我最终下载了nlopt-2.4.2.tar.gz ,进行了安装,然后在调用R install.packages时链接到已安装的库。 我现在无法安装minqa库,这是另一个lme4依赖项。 下面是错误消息当我尝试安装minqa在下面的命令R install.packages("minqa")

trying URL 'http://cran.revolutionanalytics.com/src/contrib/minqa_1.2.4.tar.gz'
Content type 'application/octet-stream' length 53548 bytes (52 KB)
==================================================
downloaded 52 KB

* installing *source* package ‘minqa’ ...
** package ‘minqa’ successfully unpacked and MD5 sums checked
** libs
gfortran   -fpic  -g -O2  -c altmov.f -o altmov.o
gfortran   -fpic  -g -O2  -c bigden.f -o bigden.o
gfortran   -fpic  -g -O2  -c biglag.f -o biglag.o
gfortran   -fpic  -g -O2  -c bobyqa.f -o bobyqa.o
gfortran   -fpic  -g -O2  -c bobyqb.f -o bobyqb.o
gfortran   -fpic  -g -O2  -c lagmax.f -o lagmax.o
g++ -I/var/lib/condor/execute/slot1/dir_20833/R-3.2.5/lib64/R/include -DNDEBUG  -I/usr/local/include -I"/var/lib/condor/execute/slot1/dir_20833/R-3.2.5/lib64/R/library/Rcpp/include"   -fpic  -g -O2  -c minqa.cpp -o minqa.o
gfortran   -fpic  -g -O2  -c newuoa.f -o newuoa.o
gfortran   -fpic  -g -O2  -c newuob.f -o newuob.o
gfortran   -fpic  -g -O2  -c prelim.f -o prelim.o
gfortran   -fpic  -g -O2  -c rescue.f -o rescue.o
gfortran   -fpic  -g -O2  -c trsapp.f -o trsapp.o
gfortran   -fpic  -g -O2  -c trsbox.f -o trsbox.o
gfortran   -fpic  -g -O2  -c trstep.f -o trstep.o
gfortran   -fpic  -g -O2  -c uobyqa.f -o uobyqa.o
gfortran   -fpic  -g -O2  -c uobyqb.f -o uobyqb.o
gfortran   -fpic  -g -O2  -c update.f -o update.o
gfortran   -fpic  -g -O2  -c updatebobyqa.f -o updatebobyqa.o
g++ -shared -L/usr/local/lib64 -o minqa.so altmov.o bigden.o biglag.o bobyqa.o bobyqb.o lagmax.o minqa.o newuoa.o newuob.o prelim.o rescue.o trsapp.o trsbox.o trstep.o uobyqa.o uobyqb.o update.o updatebobyqa.o Fatal error: creating temporary file for '-e' failed -lgfortran -lm
g++: Fatal: No such file or directory
g++: error:: No such file or directory
g++: creating: No such file or directory
g++: temporary: No such file or directory
g++: file: No such file or directory
g++: for: No such file or directory
g++: '-e': No such file or directory
g++: failed: No such file or directory
make: *** [minqa.so] Error 1
ERROR: compilation failed for package ‘minqa’
* removing ‘/var/lib/condor/execute/slot1/dir_20833/R-3.2.5/lib64/R/library/minqa’

The downloaded source packages are in
        ‘/var/lib/condor/execute/slot1/dir_20833/RtmpruzdgN/downloaded_packages’
Updating HTML index of packages in '.Library'
Making 'packages.html' ... done
Warning message:
In install.packages("minqa") :
  installation of package ‘minqa’ had non-zero exit status

看起来来自install.packages g++试图引用位置/usr/local/lib64而不是我安装R的实际位置。 关于如何解决这个问题的任何想法? 我可以传递给install.packages (例如,带有configure.args选项)的参数告诉g++做什么?

这里有几件事。

首先 ,位置无关紧要。 R可以使用.libPaths()或几个环境变量之一,可以.libPaths()轻松安装。 有关详细信息,请参见help(Startup)install.packages()也有直接选项。

其次 ,虽然您的目标可能是lme4 ,但是您需要一个一个地解决依赖关系。 如果nloptr是问题,请在此处查看有关此问题的众多问题。 我为此提供了一个补丁,它将使nlopt针对系统libnlopt进行构建-然后很容易做到(至少在Debian / Ubuntu上如此)。 nloptr较新的github来源也捆绑了它。

第三 ,如果所有这些都这么困难, 真的必须使用Scientific Linux吗? 在其他几种Linux上,这只是sudo apt-get install r-cran-lme4 ,该软件包及其所有依赖项都将从二进制文件安装。

解决方案是多方面的:

  1. 使用devtools软件包中的install_github从Github安装nloptr 我发现的问题是,由于我曾经用于安装nloptr ,因此minqa在各种nloptr库中查找的位置错误。 Github上nloptr的开发版本似乎使用了一种不同的方法来安装nlopt库,这并没有引发错误
  2. 调用install.packages ,请使用lib=.libPaths()[2]设置正确的库路径
  3. 在R中使用install.packages遇到错误时,请尝试从R外部使用R CMD INSTALL

综合起来,这些各种方法似乎已经解决了我所有的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM