r centos nlopt

Instalación de nloptr en Linux



centos (7)

Estoy tratando de instalar el paquete R nloptr en una máquina CentOS Linux que no tiene conexión a Internet de la siguiente manera:

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

Este comando a su vez busca el siguiente archivo en línea

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

Sin embargo, esto falla porque no hay conexión a Internet en la máquina.

Probé la sugerencia de la siguiente publicación de stackoverflow:

problemas con la instalación de nloptr localmente en Ubuntu

Cambié la URL en los archivos configure y configure.ac de la siguiente manera:

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

Sin embargo, recibo el siguiente error cuando intento instalar el paquete nuevamente:

> 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

¿Alguien me puede guiar sobre cómo instalar este paquete R localmente?

Actualización 1

Basándome en la sugerencia de Dirk sobre la instalación de nlopt primero, seguí las instrucciones que se dan en la siguiente página:

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

Instalé nlopt de la siguiente manera:

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

Cuando intenté reinstalar nloptr en R, ya no se busca el enlace nlopt, sino que aparece el siguiente error:

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

Actualización 2

Según lo sugerido por Dirk, busqué en el comando ldconfig y usé la siguiente referencia:

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

Edité el archivo /etc/ld.so.conf, agregué el directorio / usr / local / lib que contiene la biblioteca compartida y ejecuté el comando ldconfig. Esto agregó la biblioteca compartida relevante como se muestra a continuación:

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

Sin embargo, cuando intenté reinstalar el paquete nloptr, todavía obtengo el mismo error de objeto compartido.

¿Podría alguien guiarme en el error de la biblioteca compartida?


Creo que tengo el mismo problema que usted y estoy usando CentOS 6.5 Eliminar nlopt e instalar nloptr con install.packages () en R, se instalará automáticamente un nlopt.

Quité nlopt instalado con el siguiente comando en la carpeta nlopt descomprimida.

make uninstall

Si ha intentado usar el repositorio de epel en CentOS y ha instalado nlopt con yum, intente:

yum remove nlopt

Después de eliminar nlopt existente, puedo instalar nloptr con

install.packages("nloptr")


Cuando dices [t] su comando a su vez busca el siguiente archivo en línea , solo obtienes la mitad de la historia. Junto con Jelmer, el mantenedor del paquete nloptr real, modifiqué el paquete para hacer lo siguiente:

  • busque una biblioteca libnlopt de instalación y, si la encuentra, úsela
  • Si no se encuentra, vuelve al comportamiento anterior y descarga la biblioteca.

Así que simplemente puede instalar nlopt a través de

sudo apt-get install libnlopt-dev

(o el equivalente sudo dpkg -i /media/.... apunta al archivo desde una unidad USB, etc pp) y luego nloptr instalar el paquete nloptr . Simplemente funcionará. En mi máquina:

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:~$

Observe cómo compiló solo dos archivos de los paquetes R reales después de haber encontrado la instalación nlopt.


Si está en CentOS (y tiene acceso a Internet, pero no se puede acceder al servidor nlopt), puede instalar nlopt primero usando

yum install nlopt nlopt-devel

Entonces puedes instalar nloptr normalmente.


Si está utilizando AWS Linux, lo siguiente debería ayudar

yum --enablerepo=epel install NLopt-devel -y


Tuve el mismo problema al configurar nloptr en mi instancia de RHEL 7.2. Para aquellos que usan RHEL, puede hacer lo siguiente: Descargue e instale los siguientes RPMS en el mismo orden:

Tenga en cuenta que estos RPM pueden necesitar dependencias adicionales para instalarse según la configuración de su sistema.

Publique esto: puede instalar nloptr directamente usando la utilidad install.packages o la fuente de descarga de CRAN e instale desde la fuente como se sugirió en respuestas anteriores.

¡Espero que esto ayude!

Kiran


Tuve exactamente el mismo problema, en una máquina de producción sin acceso directo a Internet, con Red Hat Enterprise Linux Server versión 6.6 (Santiago). Las correcciones propuestas anteriormente no funcionaron: al instalar la biblioteca nlopt en el sistema, el intento posterior de instalar nloptr falla con el error "nlopt_set_maxtime". Traté de jugar con las opciones de compilación para nlopt, sin éxito. Incluso reproduje el problema en una máquina Ubuntu con conexión a Internet: desinstalé nloptr, instalé nlopt en el sistema y luego la instalación de nloptr falló.

Finalmente resolví el problema siguiendo los siguientes pasos:

  1. Desinstale nlopt del sistema operativo (asegúrese de que se haya eliminado por completo).
  2. Descargue manualmente nlopt-2.4.2.tar.gz y cópielo en / tmp /
  3. Descargue manualmente nloptr_1.0.4.tar.gz a un directorio de trabajo y descomprímalo; esto crea el directorio "nloptr /".
  4. Edite "nloptr / configure", comente la fila

    $ ("$ {R_HOME} / bin / Rscript" --vanilla -e "download.file (url = ''$ {NLOPT_URL}'', destfile = ''$ {NLOPT_TGZ}'')")

    e inserte una nueva fila:

    $ ("$ {R_HOME} / bin / Rscript" --vanilla -e "file.copy (from = ''/ tmp / nlopt-2.4.2.tar.gz'', to = ''$ {NLOPT_TGZ}'')")

  5. Instalar con "R CMD INSTALL nloptr".


Tuve un problema similar en Ubuntu. Además de instalar nlopt-dev como respondió Dirk , también tuve que instalar pkg-config:

sudo apt-get install pkg-config

Espero que esto ayude.