Невозможно установить nloptr / nlopt в кластере без прав root
Я пытаюсь установить (на кластере на основе Linux) пакет R FactoMineR, который требует nloptr, который, в свою очередь, требует nlopt. Просто используя install.packages("nloptr")
не работает и выдает следующую ошибку:
> install.packages("nloptr")
Installing package into ‘/beegfs/group_lp/home/JPaulitz/.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/
,
Я уже повторял несколько раз, используя несколько других советов по смежным вопросам, но пока ничего не помогло, и любые советы будут высоко оценены. Спасибо!
Редактировать: у кого-нибудь есть идеи?
3 ответа
Я видел подобную ошибку, но установка версии github работала для меня.
В README по адресу https://cran.r-project.org/web/packages/nloptr/README.html говорится:
library(devtools)
devtools::install_github("jyypma/nloptr")
Это сработало для меня. Я установил nlopt локально как модуль, но я не знаю, если это изменило ситуацию или нет; установленная версия nlopt 2.5.0.
Надеюсь, это полезно!
Вопрос может быть немного старым, но я хотел бы уточнить для будущих ссылок.
У меня была такая же проблема при переносе проекта, созданного с packrat
во время выполнения unbundle()
в кластере компании я увидел, что мне нужно установить пакет nloptr
Как вы упоминаете, это просто интерфейс для nlopt
библиотека.
"NLopt - это библиотека для нелинейной локальной и глобальной оптимизации для функций с градиентной информацией и без нее".
Эта библиотека необходима для ее установки в системе и для этого необходимы права суперпользователя. В противном случае у вас будет сообщение об ошибке при установке nloptr
или вы не сможете завершить установку и остаться на этом этапе, блокируя сеанс R / Rstudio.
Я не знаю какой-либо возможности сделать установку этой библиотеки в "локальном" для пользователя и использовать ее для установки nloptr
или любой другой пакет, который зависит от этого.
Единственное решение, которое я вижу, это то, что вы должны связаться с ИТ-менеджером и попросить его установить его.
Я надеюсь, что я был ясен и смог немного помочь.
Если вы не можете использовать install.packages("nloptr") для установки пакета R в кластере, я предлагаю 2 способа, которые стоит попробовать.
Локально установите этот пакет
- вы сначала загружаете модуль для той версии R, для которой вы хотите установить пакет;
- скачать пакет "nloptr_1.0.4.tar.gz" и сохранить его в каталоге в VSC;
- затем убедитесь, что вы находитесь в каталоге, в котором находится пакет;
- наконец, выполните команду R CMD install nloptr_1.0.4.tar.gz (запустите вне R)
Попробуйте напрямую загрузить модуль NLopt, выполнив команду: module load Nlopt/2.4.2-foss-2015a, как правило, она будет работать, в противном случае вам придется обратиться к техническому персоналу, чтобы помочь вам создать его с помощью C++.