на моей машине Debian 9 (растянутая), я установил R4.2.0 из исходников. у меня проблема с установкой nloptr 2.0.0 с использованием синтаксиса:
if (!require("nloptr", quietly = TRUE)) BiocManager::install("nloptr")
ошибка, которую я получаю:
/opt/R/4.2.0/lib/R/etc/Makeconf:177: recipe for target 'test-C-API.o' failed
make: *** [test-C-API.o] Error 1
ERROR: compilation failed for package 'nloptr'
* removing '/home/ezop/R/x86_64-pc-linux-gnu-library/4.2/nloptr'
The downloaded source packages are in
'/tmp/Rtmpqk35gk/downloaded_packages'
Warning message:
In install.packages(...):
installation of package 'nloptr' had non-zero exit status
Я также пытался установить его, скопировав скомпилированные двоичные файлы, которые я нашел в Интернете, но затем у меня возникла эта ошибка:
> library(nloptr)
Error: package or namespace load failed for 'nloptr' in dyn.load(file, DLLpath = DLLpath,...):
unable to load shared object '/home/ezop/R/x86_64-pc-linux-gnu-library/4.2/nloptr/libs/nloptr.so':
/home/ezop/R/x86_64-pc-linux-gnu-library/4.2/nloptr/libs/nloptr.so: invalid ELF header
Я проверил заголовок и информацию о машине, но не знаю, что делать дальше:
base) root@kanta:/home/ezop/R/x86_64-pc-linux-gnu-library/4.2# file /home/ezop/R/x86_64-pc-linux-gnu-library/4.2/nloptr/libs/nloptr.so
/home/ezop/R/x86_64-pc-linux-gnu-library/4.2/nloptr/libs/nloptr.so: Mach-O 64-bit x86_64 dynamically linked shared library, flags:<NOUNDEFS|DYLDLINK|TWOLEVEL|WEAK_DEFINES|BINDS_TO_WEAK|NO_REEXPORTED_DYLIBS|HAS_TLV_DESCRIPTORS>
(base) root@kanta:/home/ezop/R/x86_64-pc-linux-gnu-library/4.2# uname -a
Linux kanta 4.9.0-18-amd64 #1 SMP Debian 4.9.303-1 (2022-03-07) x86_64 GNU/Linux
Решение проблемы
У меня была такая же проблема несколько минут назад. Я попытался установить cmake и gfortran, но без особого успеха. Я заметил, когда пытался install.packages("nloptr")в последний раз, это сообщение об ошибке: There are binary versions available but the source versions are later. Do you want to install from sources the package which needs compilation?.
Дженни Брайан объясняет здесь, что достаточно простого «Нет».
Надеюсь, это будет полезно для вас двоих.
Комментариев нет:
Отправить комментарий