Как установить пакет R «связка» на RHEL7?

#r #rhel7 #rstudio-server #jupyterhub

Вопрос:

Мы пытались установить пакет «связка» R , но он не работает со следующим сообщением об ошибке:

ERROR: dependency ‘gsl’ is not available for package ‘copula’

  1. После установки GSL (GNU Scientific Linux) он продолжал жаловаться, но на этот раз со следующей ошибкой:
 ** package ‘gsl’ successfully unpacked and MD5 sums checked
checking for gsl-config... no
configure: error: gsl-config not found, is GSL installed? <<-----------
ERROR: configuration failed for package ‘gsl’
* removing ‘/opt/microsoft/ropen/3.5.3/lib64/R/library/gsl’
ERROR: dependency ‘gsl’ is not available for package ‘copula’
* removing ‘/opt/microsoft/ropen/3.5.3/lib64/R/library/copula’
 
  1. Мы также установили gsl-devel ( yum install gsl-devel ); однако безуспешно.
  2. GSL, установленный вручную:
  • wget https://mirror.ibcp.fr/pub/gnu/gsl/gsl-latest.tar.gz
  • tar xfz gsl-latest.tar.gz
  • ./configure amp;amp; make amp;amp; make install
  1. Вернуться к R , попытался установить copula снова, безуспешно, но с другим сообщением об ошибке:
 Error: package or namespace load failed for ‘gsl’ in dyn.load(file, DLLpath = DLLpath, ...):
 unable to load shared object '/opt/microsoft/ropen/3.5.3/lib64/R/library/gsl/libs/gsl.so':
  libgsl.so.25: cannot open shared object file: No such file or directory
 

Есть ли какой-либо способ установить GSL и сделать libgsl.so.25 его доступным copula ?

Спасибо.

Комментарии:

1. имеет ли это какое-либо отношение к jupyterhub?

2. Привет, Майкл, это действительно так. Мы используем RStudio на Jupyterhub.

3. но похоже, что проблема связана исключительно с использованием менеджера пакетов RStudio в linux, а не с самой jupyterhub.

Ответ №1:

Мы попробовали следующий обходной путь, который решил проблему:

  1. Перед установкой установите следующие переменные среды copula :
 export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
 
  1. Установить copula с помощью R :
 > install.packages("copula")
 
  1. Вручную скопируйте libgsl.so.25 в /usr/lib64
 [root@worksation ~]# ldd /opt/microsoft/ropen/3.5.3/lib64/R/library/gsl/libs/gsl.so
        linux-vdso.so.1 =>  (0x00007ffc9b838000)
        libgsl.so.25 => not found  <<<<------------- MISSING 
        libgslcblas.so.0 => /lib64/libgslcblas.so.0 (0x00007fd237b72000)
        libm.so.6 => /lib64/libm.so.6 (0x00007fd237870000)
        libR.so => /usr/lib64/R/lib/libR.so (0x00007fd2371f2000)
        libc.so.6 => /lib64/libc.so.6 (0x00007fd236e25000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fd237fcd000)
        libRblas.so => /usr/lib64/R/lib/libRblas.so (0x00007fd234931000)
        libgfortran.so.3 => /lib64/libgfortran.so.3 (0x00007fd23460f000)
        libquadmath.so.0 => /lib64/libquadmath.so.0 (0x00007fd2343d3000)
        libreadline.so.6 => /lib64/libreadline.so.6 (0x00007fd23418d000)
        libtre.so.5 => /lib64/libtre.so.5 (0x00007fd233f7d000)
        libpcre2-8.so.0 => /lib64/libpcre2-8.so.0 (0x00007fd233d06000)
        libpcre.so.1 => /lib64/libpcre.so.1 (0x00007fd233aa4000)
        liblzma.so.5 => /lib64/liblzma.so.5 (0x00007fd23387e000)
        libbz2.so.1 => /lib64/libbz2.so.1 (0x00007fd23366e000)
        libz.so.1 => /lib64/libz.so.1 (0x00007fd233458000)
        librt.so.1 => /lib64/librt.so.1 (0x00007fd233250000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007fd23304c000)
        libicuuc.so.50 => /lib64/libicuuc.so.50 (0x00007fd232cd3000)
        libicui18n.so.50 => /lib64/libicui18n.so.50 (0x00007fd2328d4000)
        libgomp.so.1 => /lib64/libgomp.so.1 (0x00007fd2326ae000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fd232498000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fd23227c000)
        libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00007fd232052000)
        libicudata.so.50 => /lib64/libicudata.so.50 (0x00007fd230a80000)
        libstdc  .so.6 => /lib64/libstdc  .so.6 (0x00007fd230779000)
 
  • Чтобы найти libgsl.so.25:
 [root@workstation /usr/lib64]# find / -name libgsl.so.25 2>/dev/null
/usr/local/lib/libgsl.so.25
/root/gsl-2.7/.libs/libgsl.so.25
 
  • Затем:
 cp -p /usr/local/lib/libgsl.so.25 /usr/lib64/
 

Конечно, есть другой подход к решению этой проблемы, но этот подход отлично сработал для нас. Спасибо.