yrosseel / lavaan

an R package for structural equation modeling and more
http://lavaan.org
412 stars 99 forks source link

lavaan depends on outdated version of gfortran #87

Closed aaronpeikert closed 6 years ago

aaronpeikert commented 6 years ago

Try to install lavaan on my solus linux gives following error:

Error in dyn.load(file, DLLpath = DLLpath, ...) : 
  unable to load shared object '/home/aaron/R/x86_64-solus-linux-gnu-library/3.4/quadprog/libs/quadprog.so':
  libgfortran.so.3: cannot open shared object file: No such file or directory

The version installed on my maschine is libgfortran.so.4, which comes with the newest version of gfortran.

This seems to affect other roling releases too (see [https://stackoverflow.com/questions/44658867/r-v3-4-0-2-unable-to-find-libgfortran-so-3-on-arch](R v3.4.0-2 unable to find libgfortran.so.3 on Arch). At some time and to some degree other (and more popular) linux distributions will be affected too, when they update the package repositorys. I am not shure weather or not this is a problem directly related to the lavaan codebase, but if this is the case I would be very glad if you could take a look some time. If I could help you to solve this error (e.g. testing), I would be happy to do so.

yrosseel commented 6 years ago

I have only libgfortran.so.4 installed on my arch system, and everything works fine. Both R (I just installed 3.4.3 today) and quadprog are happy with libgfortran.so.4, if you compile them on your system.

Perhaps you are using binary packages? What happens if you type in R:

install.packages("quadprog")

Normally, it will compile quadprog on your system, using your version of gfortran.

Yves.

aaronpeikert commented 6 years ago

Hello Yves, thanks for the fast reply! I had the same idea and tried it allready and now again, install.packages("quadprog") works fine and gives me:

install.packages("quadprog")
...truncated...
x86_64-solus-linux-gcc -shared -L/usr/lib64/R/lib -Wl,--copy-dt-needed-entries -Wl,-O1 -Wl,-z,relro -Wl,-z,now -Wl,-z,max-page-size=0x1000 -o quadprog.so aind.o init.o solve.QP.compact.o solve.QP.o util.o -lopenblas -lgfortran -lm -lquadmath -lgfortran -lm -lquadmath -L/usr/lib64/R/lib -lR
installing to /home/aaron/R/x86_64-solus-linux-gnu-library/3.4/quadprog/libs
** R
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
* DONE (quadprog)

The downloaded source packages are in
    ‘/tmp/RtmpDbBWBe/downloaded_packages’

but lavaan stil refuses to work:

> install.packages("lavaan")
Installing package into ‘/home/aaron/R/x86_64-solus-linux-gnu-library/3.4’
(as ‘lib’ is unspecified)
trying URL 'https://cran.rstudio.com/src/contrib/lavaan_0.5-23.1097.tar.gz'
Content type 'application/x-gzip' length 453823 bytes (443 KB)
==================================================
downloaded 443 KB

* installing *source* package ‘lavaan’ ...
** package ‘lavaan’ successfully unpacked and MD5 sums checked
** R
** data
*** moving datasets to lazyload DB
** inst
** preparing package for lazy loading
Error in dyn.load(file, DLLpath = DLLpath, ...) : 
  unable to load shared object '/home/aaron/R/x86_64-solus-linux-gnu-library/3.4/pbivnorm/libs/pbivnorm.so':
  libgfortran.so.3: cannot open shared object file: No such file or directory
ERROR: lazy loading failed for package ‘lavaan’
* removing ‘/home/aaron/R/x86_64-solus-linux-gnu-library/3.4/lavaan’
* restoring previous ‘/home/aaron/R/x86_64-solus-linux-gnu-library/3.4/lavaan’
Warning in install.packages :
  installation of package ‘lavaan’ had non-zero exit status

The downloaded source packages are in
    ‘/tmp/RtmpDbBWBe/downloaded_packages’

Any other ideas?

yrosseel commented 6 years ago

'/home/aaron/R/x86_64-solus-linux-gnu-library/3.4/pbivnorm/libs/pbivnorm.so':

You also need to re-install the other packages lavaan depends on:

install.packages("pbivnorm") install.packages("mnormt") install.packages("numDeriv")

Yves.

aaronpeikert commented 6 years ago

Hello Yves, sorry I could have seen this myself! I am so sorry that I bothered you with errors that didn't even belong to lavaan. However, now everything works, thank you very much! Best, Aaron