4

我正在尝试安装(在基于 linux 的集群上)R 包 FactoMineR,它需要 nloptr,而后者又需要 nlopt。仅使用install.packages("nloptr")不起作用并产生以下错误:

> install.packages("nloptr")
Installing package into ‘/beegfs/group/home/username/.R/3.3.2/R_LIBS_USER’
(as ‘lib’ is unspecified)
trying URL 'https://cran.rstudio.com/src/contrib/nloptr_1.0.4.tar.gz'
Content type 'application/x-gzip' length 353957 bytes (345 KB)
==================================================
downloaded 345 KB

* installing *source* package ‘nloptr’ ...
** package ‘nloptr’ successfully unpacked and MD5 sums checked
checking for g++... g++
checking whether the C++ compiler works... yes
checking for C++ compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking how to run the C++ preprocessor... g++ -E
checking whether we are using the GNU C++ compiler... (cached) yes
checking whether g++ accepts -g... (cached) yes
checking for pkg-config... yes
configure: Now testing for NLopt header file.
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking nlopt.h usability... no
checking nlopt.h presence... no
checking for nlopt.h... no
configure: Need to download and build NLopt
trying URL 'http://ab-initio.mit.edu/nlopt/nlopt-2.4.2.tar.gz'
Error in download.file(url = "http://ab-initio.mit.edu/nlopt/nlopt-2.4.2.tar.gz",  : 
  cannot open URL 'http://ab-initio.mit.edu/nlopt/nlopt-2.4.2.tar.gz'
Execution halted
/usr/bin/gtar: This does not look like a tar archive

gzip: stdin: unexpected end of file
/usr/bin/gtar: Child returned status 1
/usr/bin/gtar: Error is not recoverable: exiting now
Warning message:
In untar(tarfile = "nlopt-2.4.2.tar.gz") :
  '/usr/bin/gtar -xf 'nlopt-2.4.2.tar.gz'' returned error code 2
configure: Starting to install library to /tmp/RtmpazbyAy/R.INSTALL2d6f734a93606/nloptr/nlopt-2.4.2
./configure: line 3325: cd: nlopt-2.4.2: No such file or directory

此时 R 冻结并且必须重新启动。因此,我尝试手动安装 nlopt 并按照官方网站上的指南进行操作。我将所有内容都安装在我的主文件夹中,因为我在集群上没有 root 权限。nloptr 安装仍然失败,同样的错误是找不到 nlopt。这个问题似乎是一样的,但使用

install.packages('nloptr', dependencies = TRUE, 
                 configure.args = "--with-nlopt-cflags='-I/$HOME/include' --with-nlopt-libs='-L/$HOME/lib64 -lnlopt'")

仍然产生相同的错误。
该文件夹$HOME/include包含这些文件:nlopt.f nlopt.h nlopt.hpp$HOME/lib64包含以下内容:cmake/ libnlopt.so@ libnlopt.so.0@ libnlopt.so.0.9.0* pkgconfig/ python2.7/.

我已经重试了几次,在相关问题上使用了其他几个技巧,但到目前为止没有任何效果,任何提示都将不胜感激。谢谢!

编辑:有人有想法吗?

4

3 回答 3

2

我看到了类似的错误,但安装 github 版本对我有用。

https://cran.r-project.org/web/packages/nloptr/README.html上的自述文件说:

library(devtools)
devtools::install_github("jyypma/nloptr")

这对我有用。我确实在本地安装了 nlopt 作为一个模块,但我不知道这是否有所作为;我安装的 nlopt 版本是 2.5.0。

希望这是有用的!

于 2018-09-19T05:55:06.553 回答
1

这个问题可能有点老了,但我想澄清一下以供将来参考。

我在传输使用创建的项目时遇到了同样的问题packrat,在unbundle()公司的集群中进行操作时,我看到我需要安装包nloptr,正如您所说,它只是nlopt库的接口。

“NLopt 是一个用于非线性局部和全局优化的库,适用于有和没有梯度信息的函数。”

该库是在系统中安装它所必需的,为此它必须具有root权限。否则,您将在安装时收到错误消息,nloptr或者您将无法完成安装并停留在阻止 R / Rstudio 会话的那个阶段。

我不知道在“本地”中为用户安装该库并使用它来安装nloptr或任何其他依赖它的包的可能性。

我看到的唯一解决方案是您应该联系 IT 经理并让他安装它。

我希望我已经清楚并且能够提供一点帮助。

于 2018-04-17T16:27:33.317 回答
0

如果您不能使用 install.packages("nloptr") 在集群中安装 R 包,我建议 2 种值得尝试的方法。

  1. 本地安装该软件包

    • 您首先为要安装包的 R 版本加载模块;
    • 下载“nloptr_1.0.4.tar.gz”包并保存到VSC目录下;
    • 接下来,确保您位于包含该包的目录中;
    • 最后,运行命令 R CMD install nloptr_1.0.4.tar.gz (在 R 外运行)
  2. 尝试通过运行命令直接加载 NLopt 模块:module load Nlopt/2.4.2-foss-2015a 正常它会工作,否则您必须联系技术人员帮助您使用 C++ 构建它。

于 2018-05-18T22:42:25.827 回答