在Scientific Linux 6.6

时间:2017-11-12 23:06:30

标签: r linux g++ lme4

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

我已经在安装lme4依赖项nloptr时遇到了很多问题,但install.packages无法使用R中的nlopt-2.4.2.tar.gz命令进行安装。我最终下载install.packages,安装它,然后在R中调用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

g++

来自install.packages的{​​{1}}似乎试图引用位置/usr/local/lib64,而不是我安装R的实际位置。有关如何解决这个问题的任何想法?我可以传递给install.packages(例如,使用configure.args选项)以告诉g++该怎么做?

2 个答案:

答案 0 :(得分:2)

这里有几件事。

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

第二个,虽然您的目标可能是lme4,但您需要逐个处理依赖项。如果问题nloptr,请在此查看有关它的众多问题。我为它提供了一个补丁,它将nlopt构建一个系统libnlopt - 然后它很容易(至少在Debian / Ubuntu上)。较新的github nloptr源也捆绑了它。

第三,如果所有这些都很难,真的是否必须是科学Linux?在Linux的其他几种版本中,这只是sudo apt-get install r-cran-lme4,包及其所有依赖项将从二进制文件安装。

答案 1 :(得分:0)

解决方案是多重的:

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