Проблемы с установкой пакета rcpp на R-сервере - Suse 12 SP3 - R-3.3.2 - PullRequest
0 голосов
/ 11 мая 2018

Я очень плохо знаком с языком R.Будучи администратором, я настраиваю rserver и устанавливаю необходимые пакеты для использования этого сервера R с SAP HANA 1.0.

Основная проблема здесь заключается в том, когда я устанавливаю rcpp.0.12.16 и получаюниже ошибка.g ++ - 4.8-6.189.

Существуют ли несовместимости с версией ОС R и пакетом rccp, который я использую?Пожалуйста, помогите решить эту проблему.

> setwd("/Media/R/R_indep_pack")
> install.packages("Rcpp_0.12.16.tar.gz",repos = NULL, type="source")
* installing *source* package ‘Rcpp’ ...
** package ‘Rcpp’ successfully unpacked and MD5 sums checked
** libs
g++ -I/usr/local/lib64/R/include -DNDEBUG -I../inst/include/ - 
I/usr/local/include    -fPIC   -c Date.cpp -o Date.o
g++ -I/usr/local/lib64/R/include -DNDEBUG -I../inst/include/ - 
I/usr/local/include    -fPIC   -c Module.cpp -o Module.o
g++ -I/usr/local/lib64/R/include -DNDEBUG -I../inst/include/ - 
I/usr/local/include    -fPIC   -c Rcpp_init.cpp -o Rcpp_init.o
g++ -I/usr/local/lib64/R/include -DNDEBUG -I../inst/include/ - 
I/usr/local/include    -fPIC   -c api.cpp -o api.o
g++ -I/usr/local/lib64/R/include -DNDEBUG -I../inst/include/ - 
I/usr/local/include    -fPIC   -c attributes.cpp -o attributes.o
g++ -I/usr/local/lib64/R/include -DNDEBUG -I../inst/include/ - 
I/usr/local/include    -fPIC   -c barrier.cpp -o barrier.o
g++ -L/usr/local/lib64/R/lib -L/usr/local/lib64 -o Rcpp.so Date.o Module.o 
Rcpp_init.o api.o attributes.o barrier.o -L/usr/local/lib64/R/lib -lR
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../lib64/crt1.o: In function 
`_start':
/home/abuild/rpmbuild/BUILD/glibc-2.22/csu/../sysdeps/x86_64/start.S:114: 
undefined reference to `main'
collect2: error: ld returned 1 exit status
/usr/local/lib64/R/share/make/shlib.mk:6: recipe for target 'Rcpp.so' failed
make: *** [Rcpp.so] Error 1
ERROR: compilation failed for package ‘Rcpp’
* removing ‘/usr/local/lib64/R/library/Rcpp’
Warning message:
In install.packages("Rcpp_0.12.16.tar.gz", repos = NULL, type = "source") : 
  installation of package ‘Rcpp_0.12.16.tar.gz’ had non-zero exit status
>

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Ваш компоновщик ищет функцию main, поскольку ему не сказано создавать общую библиотеку:

g++ -L/usr/local/lib64/R/lib -L/usr/local/lib64 -o Rcpp.so Date.o Module.o 
Rcpp_init.o api.o attributes.o barrier.o -L/usr/local/lib64/R/lib -lR

Здесь -shared отсутствует в командной строке. Используемые здесь флаги командной строки определяются через файл Makevars:

$ grep SHLIB.*LDFLAGS $(R RHOME)/etc/Makeconf
SHLIB_CXXLDFLAGS = -shared
SHLIB_CXX98LDFLAGS = -shared
SHLIB_CXX11LDFLAGS = -shared
SHLIB_CXX14LDFLAGS = -shared
SHLIB_CXX17LDFLAGS = -shared
SHLIB_FCLDFLAGS = -shared
SHLIB_LDFLAGS = -shared# $(CFLAGS) $(CPICFLAGS)
SHLIB_LINK = $(SHLIB_LD) $(SHLIB_LDFLAGS) $(LIBR0) $(LDFLAGS)
SHLIB_CXX1XLDFLAGS = -shared

Либо они неправильно установлены в вашей системе, либо вы переопределяете их с помощью ~/.R/Makevars.

0 голосов
/ 11 мая 2018

В Ubuntu, в такой ситуации, я искал бы

apt search rcpp # search in central repository for \
# packages for R packages

В этом случае это приводит к пакету 'r-cran-rcpp', который я затем устанавливаю с

sudo apt install r-cran-rcpp

(такие пакеты из справки 'r-cran-', потому что они устанавливают для вас дополнительные зависимости в системе - которые часто являются зависимостями вне R - автоматически для вас. Например, для некоторых пакетов требуется java или некоторые другие системные библиотеки.).

Аналогично, вы должны искать в rpm или yast2 репозитории пакеты rcpp.

Я обнаружил, что гуглил http://rpmfind.net/linux/rpm2html/search.php?query=R-Rcpp

или http://rpm.pbone.net/index.php3/stat/4/idpl/33595438/dir/opensuse/com/R-RcppArmadillo-0.4.450.1.0-2.38.i586.rpm.html

Или: если вы используете conda:

conda install -c r r-rcpp

определенно поможет ...

Если вы не знаете conda: этот учебник супер!https://www.youtube.com/watch?v=YJC6ldI3hWk Просто потратьте 11 минут, и вы сможете использовать conda!

(С помощью conda вы можете установить несколько версий R со всеми их пакетами параллельно в вашей системе - иногда вам это нужно, потому чтонекоторые версии несовместимы с некоторыми пакетами R - conda создает для вас различные локальные среды, в которых вы можете устанавливать программы со всеми их конкретными зависимостями. И вы можете переключаться между средами.) Я определенно рекомендую вам использовать conda.Потому что это решает многие проблемы с зависимостями пакетов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...