Puncte:2

Overcoming "undefined symbol: _gfortran_runtime_error_at" during R package, "glmnet" installation in WSL2 Focal

drapel ma

I've been trying to install a R package, glmnet and having a installation issue. Here is an error output after I fired install.packages("glmnet") ;

/usr/bin/clang++ -std=gnu++14 -shared -L/usr/lib/R/lib -L/usr/lib/llvm-13/lib -Wl,-rpath,/usr/lib/llvm-13/lib -o glmnet.so RcppExports.o elnet_exp.o glmnet5dpclean.o glmnet_init.o pb.o pb_exp.o wls.o wls_exp.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -lm -L/usr/lib/R/lib -lR
installing to /home/rstudio/R/x86_64-pc-linux-gnu-library/4.1/00LOCK-glmnet/00new/glmnet/libs
** R
** data
** inst
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
*** copying figures
** building package indices
** installing vignettes
** testing if installed package can be loaded from temporary location
Error: package or namespace load failed for ‘glmnet’ in dyn.load(file, DLLpath = DLLpath, ...):
 unable to load shared object '/home/rstudio/R/x86_64-pc-linux-gnu-library/4.1/00LOCK-glmnet/00new/glmnet/libs/glmnet.so':
  /home/rstudio/R/x86_64-pc-linux-gnu-library/4.1/00LOCK-glmnet/00new/glmnet/libs/glmnet.so: undefined symbol: _gfortran_runtime_error_at
Error: loading failed
Execution halted

I noticed two things; undefined symbol: _gfortran_runtime_error_at, which indicates the complier can't find libgfortan and clang++. I thought glmnet specifically requests gfortran as a compiler but for some reasons, clang is kicked in.

I have a Makevars setup in my ~/.R as follows;

more .R/Makevars
C=/usr/bin/clang
#C89=/usr/bin/clang
#C99=/usr/bin/clang
CPP=/usr/bin/clang-cpp
CXX=/usr/bin/clang++
CXX11=/usr/bin/clang++
CXX14=/usr/bin/clang++
CXX17=/usr/bin/clang++
CXX1X=/usr/bin/clang++

SHLIB_OPENMP_CFLAGS = -fopenmp
CFLAGS=-g -O3 -Wall -pedantic -mtune=native -pipe
CXXFLAGS=-g -O3 -Wall -pedantic -mtune=native -pipe
LDFLAGS=-L"/usr/lib/llvm-13/lib/clang/13.0.1/lib/linux" -Wl,-rpath,/usr/lib/llvm-13/lib/clang/13.0.1/lib/linux
CPPFLAGS= -I"/usr/lib/llvm-13/lib/clang/13.0.1/include"

FC=/usr/bin/gfortran
F77=/usr/bin/gfortran
FLIBS=-L/usr/lib/gcc/x86_64-linux-gnu/9 -lm
MAKEFLAGS  = -j12 

Paths to gfortran and its libraries are defined, and gfortran and libgfrotran are installed;

gfortran --version
GNU Fortran (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0

locate libgfortran
    /usr/lib/gcc/x86_64-linux-gnu/9/libgfortran.a
    /usr/lib/gcc/x86_64-linux-gnu/9/libgfortran.so
    /usr/lib/gcc/x86_64-linux-gnu/9/libgfortran.spec
    /usr/lib/x86_64-linux-gnu/libgfortran.so.5
    /usr/lib/x86_64-linux-gnu/libgfortran.so.5.0.0
    /usr/local/lib/python3.8/dist-packages/numpy.libs/libgfortran-2e0d59d6.so.5.0.0
    /usr/local/lib/python3.8/dist-packages/scipy.libs/libgfortran-040039e1.so.5.0.0
    /usr/local/lib/python3.9/dist-packages/numpy.libs/libgfortran-2e0d59d6.so.5.0.0
    /usr/local/lib/python3.9/dist-packages/scipy.libs/libgfortran-040039e1.so.5.0.0
    /usr/share/doc/libgfortran-9-dev
    /usr/share/doc/libgfortran5

There is no alternative setup for gfortran;

sudo update-alternatives --config gfortran
update-alternatives: error: no alternatives for gfortran

I even added gfortran paths to a Makevars in the src directory of glmnet, and used R CMD INSTALL but got the same error.

I really appreciate any pointers to solve this issue.

sessionInfo()
R version 4.1.2 (2021-11-01)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 20.04.4 LTS

Matrix products: default
BLAS:   /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.9.0
LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.9.0

locale:
 [1] LC_CTYPE=C.UTF-8       LC_NUMERIC=C           LC_TIME=C.UTF-8        LC_COLLATE=C.UTF-8    
 [5] LC_MONETARY=C.UTF-8    LC_MESSAGES=C.UTF-8    LC_PAPER=C.UTF-8       LC_NAME=C             
 [9] LC_ADDRESS=C           LC_TELEPHONE=C         LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C   

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] ggplot2_3.3.5   phyloseq_1.39.1

loaded via a namespace (and not attached):
 [1] Rcpp_1.0.8             ape_5.6-2              lattice_0.20-45        prettyunits_1.1.1     
 [5] ps_1.6.0               Biostrings_2.62.0      rprojroot_2.0.2        assertthat_0.2.1      
 [9] foreach_1.5.2          utf8_1.2.2             R6_2.5.1               GenomeInfoDb_1.30.1   
[13] plyr_1.8.6             stats4_4.1.2           pillar_1.7.0           zlibbioc_1.40.0       
[17] rlang_1.0.1            curl_4.3.2             rstudioapi_0.13        data.table_1.14.3     
[21] callr_3.7.0            vegan_2.5-7            S4Vectors_0.32.3       Matrix_1.4-0          
[25] splines_4.1.2          stringr_1.4.0          igraph_1.2.11          RCurl_1.98-1.6        
[29] munsell_0.5.0          compiler_4.1.2         pkgconfig_2.0.3        BiocGenerics_0.40.0   
[33] pkgbuild_1.3.1         multtest_2.50.0        mgcv_1.8-39            biomformat_1.22.0     
[37] tidyselect_1.1.2       tibble_3.1.6           GenomeInfoDbData_1.2.7 IRanges_2.28.0        
[41] codetools_0.2-18       fansi_1.0.2            permute_0.9-7          crayon_1.5.0          
[45] dplyr_1.0.8            withr_2.4.3            MASS_7.3-55            bitops_1.0-7          
[49] rhdf5filters_1.6.0     grid_4.1.2             nlme_3.1-155           jsonlite_1.8.0        
[53] gtable_0.3.0           lifecycle_1.0.1        DBI_1.1.2              magrittr_2.0.2        
[57] scales_1.1.1           cli_3.2.0              stringi_1.7.6          XVector_0.34.0        
[61] reshape2_1.4.4         remotes_2.4.2          ellipsis_0.3.2         generics_0.1.2        
[65] vctrs_0.3.8            Rhdf5lib_1.16.0        iterators_1.0.14       tools_4.1.2           
[69] ade4_1.7-18            Biobase_2.54.0         glue_1.6.2             purrr_0.3.4           
[73] processx_3.5.2         parallel_4.1.2         survival_3.2-13        colorspace_2.0-3      
[77] rhdf5_2.38.0           BiocManager_1.30.16    cluster_2.1.2  

   
neofetch
            .-/+oossssoo+/-.               root@204152
        `:+ssssssssssssssssss+:`           ------------------
      -+ssssssssssssssssssyyssss+-         OS: Ubuntu 20.04.4 LTS on Windows 10 x86_64
    .ossssssssssssssssssdMMMNysssso.       Kernel: 5.4.72-microsoft-standard-WSL2
   /ssssssssssshdmmNNmmyNMMMMhssssss/      Uptime: 11 days, 18 hours, 43 mins
  +ssssssssshmydMMMMMMMNddddyssssssss+     Packages: 1407 (dpkg)
 /sssssssshNMMMyhhyyyyhmNMMMNhssssssss/    Shell: zsh 5.8
.ssssssssdMMMNhsssssssssshNMMMdssssssss.   Terminal: /dev/pts/2
+sssshhhyNMMNyssssssssssssyNMMMysssssss+   CPU: Intel Xeon Gold 6230 (40) @ 2.094GHz
ossyNMMMNyMMhsssssssssssssshmmmhssssssso   Memory: 1863MiB / 102724MiB
ossyNMMMNyMMhsssssssssssssshmmmhssssssso
+sssshhhyNMMNyssssssssssssyNMMMysssssss+
.ssssssssdMMMNhsssssssssshNMMMdssssssss.
 /sssssssshNMMMyhhyyyyhdNMMMNhssssssss/
  +sssssssssdmydMMMMMMMMddddyssssssss+
   /ssssssssssshdmNNNNmyNMMMMhssssss/
    .ossssssssssssssssssdMMMNysssso.
      -+sssssssssssssssssyyyssss+-
        `:+ssssssssssssssssss+:`
            .-/+oossssoo+/-.
drapel hr
Se pare că nici măcar nu încearcă să conecteze biblioteca - ați încercat `FLIBS=-L/usr/lib/gcc/x86_64-linux-gnu/9 -lgfortran -lm`?
N0rbert avatar
drapel zw
Nu se poate reproduce pe un container docker nou 20.04 LTS cu R 3.6 și R 4.1. Sunt necesare detalii. Cum ai instalat R 4.1? Urmați ghidul de la https://cran.r-project.org/bin/linux/ubuntu/? De ce aveți `/home/rstudio` ca folder de acasă? Ai instalat RStudio aici? Pentru un rezultat reproductibil, aș muta sau elimina `/usr/local/lib/python3.8/dist-packages` și aș încerca din nou compilarea pachetului R.
akh22 avatar
drapel ma
@steeldriver, am acceptat sugestia ta și a funcționat ca un farmec. Din anumite motive, calea libgfortran a trebuit să fie indicată în mod explicit.
akh22 avatar
drapel ma
@N0rbert, am urmat https://cran.r-project.org/bin/linux/ubuntu/fullREADME.html care are o instrucțiune de instalare R mai simplă. Instalarea Rstudio creează automat /home/rstudio în mod implicit. O versiune Docker a Focal este ușor diferită de versiunea WSL2 a Focal. Nu știu dacă asta face vreo diferență sau nu.
Puncte:2
drapel ma

Așa că am modificat calea FLIBS în Makevars, așa cum a sugerat Steeldriver

FLIBS=-L/usr/lib/gcc/x86_64-linux-gnu/9 -lgfortran -lm

și glmnet instalat fără probleme. Interesant este că încă folosește clang++ ca compilator, dar nu și gfortran.

** R
** date
** inst
** byte-compilați și pregătiți pachetul pentru încărcare leneră
** Ajutor
*** instalarea indicilor de ajutor
*** copierea cifrelor
** indici de pachete de constructii
** instalarea de vignete
** testarea dacă pachetul instalat poate fi încărcat din locație temporară
** verificarea căilor absolute în obiecte partajate și biblioteci dinamice
** testarea dacă pachetul instalat poate fi încărcat din locația finală
** testarea dacă pachetul instalat păstrează o înregistrare a căii de instalare temporare
* TERMINAT (glmnet)
drapel hr
Este posibil să nu aibă nevoie deloc de un *compilator* de fortran, dar încă mai are nevoie de libgfortran (unele rutine BLAS pot fi implementate în fortran, de exemplu)

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.