gpt4 book ai didi

r - 在 Linux 上安装 nloptr

转载 作者:太空宇宙 更新时间:2023-11-03 17:12:19 25 4
gpt4 key购买 nike

我正在尝试在没有互联网连接的 CentOS Linux 机器上安装 R 包 nloptr,如下所示:

install.packages("/home/ravi/nloptr_1.0.4.tar.gz", repos = NULL, type="source")

此命令依次在线查找以下文件

http://ab-initio.mit.edu/nlopt/nlopt-2.4.2.tar.gz

但是,这会失败,因为机器没有互联网连接。

我尝试了以下 stackoverflow 帖子中的建议:

trouble with Installing nloptr by locally on Ubuntu

我更改了 configure 和 configure.ac 文件中的 URL,如下所示:

NLOPT_URL="file:///home//ravi//${NLOPT_TGZ}"

但是,当我尝试再次安装软件包时出现以下错误:

> install.packages("/home/ravi/nloptr_1.0.4.tar.gz", repos = NULL, type="source")
* installing *source* package 'nloptr' ...
files 'configure', 'configure.ac' have the wrong MD5 checksums
ERROR: 'configure' exists but is not executable -- see the 'R Installation and Administration Manual'
* removing '/opt/vertica/R/library/nloptr'
Warning message:
In install.packages("/home/ravi/nloptr_1.0.4.tar.gz", :
installation of package '/home/ravi/nloptr_1.0.4.tar.gz' had non-zero exit status

有人可以指导我如何在本地安装这个 R 包吗?

更新 1

根据 Dirk 关于首先安装 nlopt 的建议,我按照以下页面中给出的说明进行操作:

http://ab-initio.mit.edu/wiki/index.php/NLopt_Installation

我安装了 nlopt 如下:

./configure --enable-shared
make
make install
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib

当我尝试在 R 中重新安装 nloptr 时,它不再查找 nlopt 链接但会抛出以下错误:

Error in dyn.load(file, DLLpath = DLLpath, ...) :
unable to load shared object '/opt/vertica/R/library/nloptr/libs/nloptr.so':
/opt/vertica/R/library/nloptr/libs/nloptr.so: undefined symbol: nlopt_set_maxtime
Error: loading failed
Execution halted
ERROR: loading failed
* removing '/opt/vertica/R/library/nloptr'
Warning message:
In install.packages("/home/ravi/nloptr_1.0.4.tar.gz", :
installation of package '/home/ravi/nloptr_1.0.4.tar.gz' had non-zero exit status

更新 2

按照德克的建议,我查看了 ldconfig 命令并使用了以下引用资料:

http://codeyarns.com/2014/01/14/how-to-add-library-directory-to-ldconfig-cache/

我编辑了/etc/ld.so.conf 文件,添加了包含共享库的目录/usr/local/lib 并运行了 ldconfig 命令。这添加了相关的共享库,如下所示:

libnlopt.so.0 (libc6,x86-64) => /usr/local/lib/libnlopt.so.0
libnlopt.so (libc6,x86-64) => /usr/local/lib/libnlopt.so

但是,当我尝试重新安装 nloptr 包时,我仍然遇到相同的共享对象错误。

有人可以指导我解决共享库错误吗?

最佳答案

当您说[t]他的命令依次在线查找以下文件时,您只了解了一半。我与实际 nloptr 包的维护者 Jelmer 一起修改了包以执行以下操作:

  • 寻找安装 libnlopt 库,如果找到,就使用它
  • 如果没有找到,回到原来的行为并下载库

所以你可以简单地通过安装nlopt

 sudo apt-get install libnlopt-dev

(或等效的 sudo dpkg -i/media/.... 指向文件USB 驱动器等 pp) 然后重新安装 nloptr 包。它会起作用的。在我的机器上:

edd@max:~$ install.r nloptr         ## install.r is in littler
trying URL 'http://cran.rstudio.com/src/contrib/nloptr_1.0.4.tar.gz'
Content type 'application/x-gzip' length 353942 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 nlopt.h... yes
configure: Suitable NLopt library found.
configure: creating ./config.status
config.status: creating src/Makevars
** libs
g++ -I/usr/share/R/include -DNDEBUG -fpic -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -g -O3 -Wall -pipe -Wno-unused -pedantic -c dummy.cpp -o dummy.o
gcc -I/usr/share/R/include -DNDEBUG -fpic -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -g -O3 -Wall -pipe -pedantic -std=gnu99 -c nloptr.c -o nloptr.o
g++ -shared -L/usr/lib/R/lib -Wl,-Bsymbolic-functions -Wl,-z,relro -o nloptr.so dummy.o nloptr.o -lnlopt -lm -L/usr/lib/R/lib -lR
installing to /usr/local/lib/R/site-library/nloptr/libs
** R
** inst
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** installing vignettes
** testing if installed package can be loaded
* DONE (nloptr)

The downloaded source packages are in
‘/tmp/downloaded_packages’
edd@max:~$

注意它是如何从找到 nlopt 安装的实际 R 包中只编译两个文件的。

关于r - 在 Linux 上安装 nloptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29716857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com