на моей машине 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?
.
Дженни Брайан объясняет здесь, что достаточно простого «Нет».
Надеюсь, это будет полезно для вас двоих.
Комментариев нет:
Отправить комментарий