r
  • netcdf
  • 2013-05-10 10 views 6 likes 
    6

    Ich versuche, das RNetCDF Paket auf meinem Laptop (Ubuntu 12.04) mit dem BefehlRNetCDF kann nicht Objektdatei open shared

    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/') 
    

    aber das Paket installieren wird nicht zu installieren. Siehe unten die Meldung:

    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 
    

    Wenn ich versuche, mit

    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 
    

    die Fehlermeldung ersetzt mit

    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 ist auf jeden Fall in /home/my_computer/local/lib/ die auch meine ist LD_LIBRARY_PATH . Zugegeben, die Datei libexpat.so.0, die eine der Dateien in der ersten Fehlermeldung (mit install.packages) ist, befindet sich in intelbezogenen Ordnern, die nicht so aussehen, als hätten sie etwas mit netcdf-Bibliotheken zu tun.

    Könnte mich jemand aufklären?

    Danke.

    Edit: Nun, ich werde nie wissen, was passiert ist, wenn ich wieder 3 Tage später mit der gleichen install.packages Befehlszeile versuchte das Paket ohne irgendwelche Probleme installiert ... Also mein einziger Rat an jemanden, der die haben kann Das gleiche Problem besteht darin, sich von R abzumelden und erneut zu starten, nur für den Fall, dass einige vorherige Fehler in der Sitzung im Protokoll verblieben sind.

    +1

    Bei Ihrem ersten Versuch, wenn es die Bibliothek nicht laden kann, hat es wirklich einen Platz in diesem Pfad: '/ home/mein_computer/RSCRIPTS/R_LIB/RNetCDF/libs/RNetCDF.so', oder ist das eine Formatierung Problem, wenn Sie es in SO eingefügt? – nograpes

    +0

    Lesen Sie auch [diesen Beitrag] (http://ubuntuforums.org/showthread.php?t=1034715) über das Verknüpfen von 'libexpat.so.0'. Vielleicht möchten Sie einen Link verwenden, um das Paket an den richtigen Ort zu verweisen (wie im Post angezeigt), wenn Sie eine neuere Version installiert haben, was ich vermute. – nograpes

    +0

    '@ nograpes' Danke für Ihre Kommentare. Dies zwang mich, das Problem mit dem Platz zu betrachten (was eine Formatierung im SO-Problem war), die Befehlszeile erneut auszuführen und erkannte, dass ich das Paket heute ohne Probleme installieren konnte. – SnowFrog

    Antwort

    3

    Versuchen Sie, --no-test-load zu R CMD INSTALL hinzuzufügen, dies wird den Fehler während der Installation vermeiden.

    Überprüfen Sie dann, ob Sie das Paket in einer normalen R-Sitzung (mit library(RNetCDF)) laden können. Gelingt dies nicht die rechtzeitigen Fehler ‚nicht in der Lage gemeinsam genutztes Objekt laden‘:

    1. überprüfen, ob R Ihre $ LD_LIBRARY_PATH verwendet mit Sys.getenv("LD_LIBRARY_PATH")
    2. die Ausgabe von ldd /usr/local/lib/R/site-library/RNetCDF/libs/RNetCDF.so schauen und sehen, ob die libnetcdf.so.7 behoben in dem Pfad, der in R LD_LIBRARY_PATH

    BTW enthalten ist, hatte ich keine Probleme mit dem RNetCDF libnetcdf installieren, die mit Ubuntu kommt (apt-get libnetcdf-dev [Version 4.1.1] installieren); es sei denn, Sie benötigen definitiv Version 4.2 von libnetcdf.

    Verwandte Themen