RNetCDF cannot open shared object file

I am trying to install the RNetCDF package on my laptop (Ubuntu 12.04) using the command

install.packages('RNetCDF',lib='/home/my_computer/RSCRIPTS/R_LIB/',configure.args="--with-netcdf-include='/home/my_computer/bin/libs4cdo-0.0.10/netcdf-4.2/include/' --with-netcdf-lib='/home/my_computer/local/bin' --with-hdf5-lib='/home/my_computer/local/lib/' --with-udunits-include='/usr/local/lib/' --with-udunits-lib='/usr/local/lib/'",repos='http://star-www.st-andrews.ac.uk/cran/') 

but the package will not be installed. See the message below:

 trying URL 'http://star-www.st-andrews.ac.uk/cran/src/contrib/RNetCDF_1.6.1-2.tar.gz' Content type 'application/x-gzip' length 70301 bytes (68 Kb) opened URL ================================================== downloaded 68 Kb * installing *source* package 'RNetCDF' ... ** package 'RNetCDF' successfully unpacked and MD5 sums checked checking for gcc... gcc -std=gnu99 checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc -std=gnu99 accepts -g... yes checking for gcc -std=gnu99 option to accept ISO C89... none needed checking for nc_open in -lnetcdf... yes checking for utInit in -ludunits2... no checking for utScan in -ludunits2... yes checking how to run the C preprocessor... gcc -std=gnu99 -E checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking netcdf.h usability... yes checking netcdf.h presence... yes checking for netcdf.h... yes checking udunits.h usability... yes checking udunits.h presence... yes checking for udunits.h... yes configure: creating ./config.status config.status: creating R/load.R config.status: creating src/Makevars ** libs gcc -std=gnu99 -I/usr/share/R/include -I/usr/local/lib/ -I/home/bauduinm/bin/libs4cdo-0.0.10/netcdf-4.2/include/ -fpic -O3 -pipe -g -c RNetCDF.c -o RNetCDF.o gcc -std=gnu99 -shared -o RNetCDF.so RNetCDF.o -ludunits2 -lnetcdf -L/home/my_computer/local/lib/ -L/usr/local/lib/ -L/home/my_computer/local/bin -lexpat -L/usr/lib/R/lib -lR installing to /home/my_computer/RSCRIPTS/R_LIB/RNetCDF/libs ** R ** preparing package for lazy loading ** help *** installing help indices ** building package indices ... ** testing if installed package can be loaded Error in dyn.load(file, DLLpath = DLLpath, ...) : unable to load shared object '/home/my_computer/RSCRIPTS/R_LIB/RNetCDF /libs/RNetCDF.so': libexpat.so.0: cannot open shared object file: No such file or directory Error: loading failed Execution halted ERROR: loading failed * removing '/home/my_computer/RSCRIPTS/R_LIB/RNetCDF' The downloaded packages are in '/tmp/Rtmpl5MniY/downloaded_packages' Warning message: In install.packages("RNetCDF", lib = "/home/my_computer/RSCRIPTS/R_LIB/", : installation of package 'RNetCDF' had non-zero exit status 

When i try with

 sudo R CMD INSTALL --libary='/home/my_computer/RSCRIPTS/R_LIB/' --configure-args="--with-netcdf-include='/home/my_computer/bin/libs4cdo-0.0.10/netcdf-4.2/include/' --with-netcdf-lib='/home/my_computer/local/lib/' --with-hdf5-lib='/home/my_computer/local/lib/' --with-udunits-include=/usr/local/lib/ --with-udunits-lib=/usr/local/lib/" /home/my_computer/Downloads/RNetCDF_1.6.1-2.tar.gz 

the error message is replaced by

 Error in dyn.load(file, DLLpath = DLLpath, ...) : unable to load shared object '/usr/local/lib/R/site-library/RNetCDF/libs/RNetCDF.so': libnetcdf.so.7: cannot open shared object file: No such file or directory 

libnetcdf.so.7 is definitely located in /home/my_computer/local/lib/ , which is also my LD_LIBRARY_PATH . Of course, libexpat.so.0, which is one of the files in the first error message (with install.packages ), is located in Intel-related folders, which are not like they have anything to do with netcdf libraries.

Can anyone enlighten me?

Thanks.

Edit: Well, I will never know what happened, because when I tried again 3 days later with the same install.packages command line, the package was installed without any problems ... Therefore, my only advice to someone who may have the same problem is to exit R and start again, in case some previous errors in the session remain in the log.

+6
source share
1 answer

Try adding --no-test-load to R CMD INSTALL , this will avoid an error during installation.

Then check if the package can be downloaded in a regular R session (using library(RNetCDF) ). If this fails due to the error "cannot load the shared object":

  • check if R uses your $ LD_LIBRARY_PATH with Sys.getenv("LD_LIBRARY_PATH")
  • look at the output of ldd /usr/local/lib/R/site-library/RNetCDF/libs/RNetCDF.so and see if libnetcdf.so.7 is allowed for the path that is included in R LD_LIBRARY_PATH

By the way, I had no problems installing RNetCDF using libnetcdf, which comes with Ubuntu (apt-get install libnetcdf-dev [version 4.1.1]); if you definitely don't need version 4.2 of libnetcdf, you can try this.

+3
source

Source: https://habr.com/ru/post/944727/


All Articles