我正在尝试在没有 Internet 连接的 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帖子中的建议:
我更改了 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
正如 Dirk 所建议的,我查看了 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 包时,我仍然得到相同的共享对象错误。
有人可以指导我解决共享库错误吗?