Short story:
before installing ncdf in R intall in your linux libnetcdf-dev and netcdf-bin
Long story:
I found a problem installing the R package ncdf:
> install.package('ncdf')
|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 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... no
|checking for sys/types.h... no
|checking for sys/stat.h... no
|checking for stdlib.h... no
|checking for string.h... no
|checking for memory.h... no
|checking for strings.h... no
|checking for inttypes.h... no
|checking for stdint.h... no
|checking for unistd.h... no
|checking netcdf.h usability... no
|checking netcdf.h presence... no
|checking for netcdf.h... no
|configure: error: netcdf header netcdf.h not found
|ERROR: configuration failed for package ‘ncdf’
|* removing ‘/usr/local/lib/R/site-library/ncdf’
|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 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... no
|checking for sys/types.h... no
|checking for sys/stat.h... no
|checking for stdlib.h... no
|checking for string.h... no
|checking for memory.h... no
|checking for strings.h... no
|checking for inttypes.h... no
|checking for stdint.h... no
|checking for unistd.h... no
|checking netcdf.h usability... no
|checking netcdf.h presence... no
|checking for netcdf.h... no
|configure: error: netcdf header netcdf.h not found
|ERROR: configuration failed for package ‘ncdf’
|* removing ‘/usr/local/lib/R/site-library/ncdf’
Well I though, this is the classical "install the -devel package first" but alas, I have the netcdf.h in /usr/include !!! and I did already intalled the libnetcdf-dev package in my biolinux-7 (ubuntu 12.04)
I went to the tmp folder where the R packages was downloaded and tried to install it by hand. I read the INSTALL file and tried adding environmental variables:
The location of the netcdf library can be specified by the environment
variable NETCDF_LIB or the configure argument --with-netcdf-lib.
variable NETCDF_LIB or the configure argument --with-netcdf-lib.
or adding FLAGS to ./configure
LDFLAGS=-L/usr/lib CPPFLAGS=-I/usr/include sh configure
Nothing was working.
Finally I remembered that at the beginning of the INSTALL file it is mentioned that the program nc-config is a helper for the installer to find out the location of the dev files, but as it was not installed and it is said in this file that is optional I skipped this part during my first trials. After failed several times to find out how to pass the paths of the dev files I decided to give a try to the nc-config route. I searched for it and here http://cirrus.ucsd.edu/~pierce/ncdf/install_ncdf_v4.html I read:
The only issue is getting the libraries right. All the libraries used by the netcdf library, version 4, must be visible to the R software. To get a list of what libraries must be visible, run "nc-config --libs" (note: a recent version of the netcdf library, version 4, must be installed correctly for this command to work).
But I did not have nc-config
root@pmg-analysis:/tmp/RtmpiNeIMZ/downloaded_packages/ncdf# nc-config --libs
The program 'nc-config' is currently not installed. You can install it by typing:
apt-get install netcdf-bin
So I installed it
root@pmg-analysis:/tmp/RtmpiNeIMZ/downloaded_packages/ncdf# apt-get install netcdf-bin
And then knowing that the R package ncdf uses this program for finding the headers and libs for netcdf, I run the install.package in R:
>install.packages('ncdf')
Installing package into ‘/home/pmg/R/x86_64-pc-linux-gnu-library/3.0’
(as ‘lib’ is unspecified)
trying URL 'http://cran.univ-paris1.fr/src/contrib/ncdf_1.6.6.tar.gz'
Content type 'application/x-gzip' length 79403 bytes (77 Kb)
opened URL
==================================================
downloaded 77 Kb
* installing *source* package ‘ncdf’ ...
** package ‘ncdf’ successfully unpacked and MD5 sums checked
checking for nc-config... /usr/bin/nc-config
configure: creating ./config.status
config.status: creating src/Makevars
** libs
gcc -std=gnu99 -I/usr/share/R/include -DNDEBUG -I/usr/include -fpic -O3 -pipe -g -c ncdf.c -o ncdf.o
gcc -std=gnu99 -I/usr/share/R/include -DNDEBUG -I/usr/include -fpic -O3 -pipe -g -c ncdf2.c -o ncdf2.o
gcc -std=gnu99 -I/usr/share/R/include -DNDEBUG -I/usr/include -fpic -O3 -pipe -g -c ncdf3.c -o ncdf3.o
gcc -std=gnu99 -shared -o ncdf.so ncdf.o ncdf2.o ncdf3.o -L/usr/lib -lnetcdf -L/usr/lib/R/lib -lR
installing to /home/pmg/R/x86_64-pc-linux-gnu-library/3.0/ncdf/libs
** R
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
* DONE (ncdf)
Job done!!
7 comments:
Thank you so much! You make my day :) I encountered the same problem.
Thank you! I was facing the same problem by installing the ncdf package. In my case was the netcdf-bin that was missing.
Thank you! I'm new to linux, and this was clear and helpful.
Thanks!
Super helpful, thank you very much!
Thanks! Well doneeeee!!!
Thank you very much!
Go ahead!
Post a Comment