What is Ncview?
According to its author David Pierce of the Scripps Institute of Oceanography, Ncview is a visual browser for NetCDF files.What is a NetCDF file?
A NetCDF file is a self-describing, machine-independent array file commonly used by the climate science community to store climate data. If you're interested in Ncview, you probably know about NetCDF files.Why do we need Ncview?
NetCDF files can have dozens of dimensions, hundreds of variables, and millions of data points. Ncview can help a user get a quick picture of what the file holds, how to read it, and where to find the parts of the data in which he or she is interested.Installing Ncview on Ubuntu 10.10
This post shows how to install Ncview 2.0 beta4 on Ubuntu (10.10) specifically. For instructions on how to install Ncview generally on Linux, see David Pierce's Ncview site.Get Ncview source files
First we need to download the Ncview source files. Navigate to ftp://cirrus.ucsd.edu/pub/ncview/ and select the most recent package. As of this writing, the most recent package is ncview-2.0beta4.tar.gz, updated on 3/4/2010. Download this tar.gz file and open it with Ubuntu's Archive Manager.Next, extract the files to your home directory. From Archive Manager, I just click on the "Extract" button, select my home directory, and click on "Extract." This creates the folder "ncview-2.0beta4" in my home directory.
Browse the readme and the installation instructions
In the newly created folder, take a look at the files README and INSTALL. These are general instructions that provide good background. This installation tutorial borrows heavily from these two files.Installation overview
In a perfect world, i.e. one where all dependencies were met and all files on your local machine were exactly where the installation scripts expected them to be, the installation would follow three steps, entered from the terminal from within the ncview-2.0beta4 directory:$ ./configure
$ make
$ make install
andy@andy-laptop:~$ cd ncview-2.0beta4/ andy@andy-laptop:~/ncview-2.0beta4$ ./configure checking for nc-config... yes Netcdf library version: netCDF 4.1.1 Netcdf library has version 4 interface present: yes Netcdf library was compiled with C compiler: gcc checking for gcc... gcc 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 accepts -g... yes checking for gcc option to accept ISO C89... none needed checking for library containing strerror... none required checking how to run the C preprocessor... gcc -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 a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking for style of include used by make... GNU checking dependency style of gcc... gcc3 checking for X... no ------------------------------------------------------------------------------------ Error, the X libraries and development headers must be installed for ncview to work! ------------------------------------------------------------------------------------ More information: You are trying to compile ncview. The machine you are compiling on probably already has the X windows *runtime* libraries installed, but to *compile* a program you need more than just the runtime libraries. You need what are usually called the 'development headers', named because they are used when developing or compiling X windows programs. The best advice I can give you is to use your package manager to look for a package whose name is something along the lines of x11-devel, or xorg-x11-proto-devel, or something along those lines that indicates the package contains the X windows development headers. Install that package first, then try to remake ncview. Note: If that still fails, even after you've installed the X windows *development* headers, then you may be on a machine where the automatic configuration system is not set up quite as it probably should be. In that case, you might have to specify the location of the X libraries and X headers manually. For example, on some machines the following will work: ./configure --x-libraries=/usr/lib64 --x-includes=/usr/include/X11 ^^^^^^^^^^ ^^^^^^^^^^^^^^^^ these are what you want to set to reflect the location of files such as libX11.so and X.h on your particular system.
The script output tells us that it performed about a dozen checks which passed, then reached one it failed (the line "checking for X. . . no"). Then we get the error "the X libraries and development headers must be installed for ncview to work!" Lastly, we get a very thorough message from Ncview author David Pierce advising us how to meet the "X" dependency. As he notes, we need the X windows *development* headers.
Install xorg-dev dependencies
We need the X Windows development headers. The brute force way to do this on Ubuntu is to install the package "xorg-dev," which includes many (all?) development header files related to the X11 windows system. Here's how I did it:andy@andy-laptop:~$ sudo apt-get install xorg-dev [sudo] password for andy: Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: libdmx-dev libdmx1 libexpat1-dev libfontconfig1-dev libfontenc-dev libfreetype6-dev libfs-dev libice-dev libpciaccess-dev libpixman-1-dev libpthread-stubs0 libpthread-stubs0-dev libsm-dev libx11-dev libxau-dev libxaw7-dev libxcb1-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev libxfont-dev libxft-dev libxi-dev libxinerama-dev libxkbfile-dev libxmu-dev libxmu-headers libxmuu-dev libxpm-dev libxrandr-dev libxrender-dev libxres-dev libxss-dev libxt-dev libxtst-dev libxv-dev libxvmc-dev libxxf86dga-dev libxxf86vm-dev x11proto-bigreqs-dev x11proto-composite-dev x11proto-core-dev x11proto-damage-dev x11proto-dmx-dev x11proto-dri2-dev x11proto-fixes-dev x11proto-fonts-dev x11proto-gl-dev x11proto-input-dev x11proto-kb-dev x11proto-randr-dev x11proto-record-dev x11proto-render-dev x11proto-resource-dev x11proto-scrnsaver-dev x11proto-video-dev x11proto-xcmisc-dev x11proto-xext-dev x11proto-xf86bigfont-dev x11proto-xf86dga-dev x11proto-xf86dri-dev x11proto-xf86vidmode-dev x11proto-xinerama-dev xserver-xorg-dev xtrans-dev The following NEW packages will be installed: libdmx-dev libdmx1 libexpat1-dev libfontconfig1-dev libfontenc-dev libfreetype6-dev libfs-dev libice-dev libpciaccess-dev libpixman-1-dev libpthread-stubs0 libpthread-stubs0-dev libsm-dev libx11-dev libxau-dev libxaw7-dev libxcb1-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev libxfont-dev libxft-dev libxi-dev libxinerama-dev libxkbfile-dev libxmu-dev libxmu-headers libxmuu-dev libxpm-dev libxrandr-dev libxrender-dev libxres-dev libxss-dev libxt-dev libxtst-dev libxv-dev libxvmc-dev libxxf86dga-dev libxxf86vm-dev x11proto-bigreqs-dev x11proto-composite-dev x11proto-core-dev x11proto-damage-dev x11proto-dmx-dev x11proto-dri2-dev x11proto-fixes-dev x11proto-fonts-dev x11proto-gl-dev x11proto-input-dev x11proto-kb-dev x11proto-randr-dev x11proto-record-dev x11proto-render-dev x11proto-resource-dev x11proto-scrnsaver-dev x11proto-video-dev x11proto-xcmisc-dev x11proto-xext-dev x11proto-xf86bigfont-dev x11proto-xf86dga-dev x11proto-xf86dri-dev x11proto-xf86vidmode-dev x11proto-xinerama-dev xorg-dev xserver-xorg-dev xtrans-dev 0 upgraded, 69 newly installed, 0 to remove and 0 not upgraded. Need to get 8,853kB of archives. After this operation, 26.6MB of additional disk space will be used. Do you want to continue [Y/n]? YThis will download and install 27 megabytes worth of files, which we hope includes whatever it is that Ncview needs. Of course we could have tried to identify which handful of files ncview specifically needs and installed just those, but this is easier and faster.
Try ./configure
again
After installing the xorg-dev
packages, I run the ./configure
command again and get the following (truncated) result:andy@andy-laptop:~/ncview-2.0beta4$ ./configure checking for nc-config... yes Netcdf library version: netCDF 4.1.1 [...] checking for X... libraries , headers checking for gethostbyname... yes [...] checking udunits2.h usability... no checking udunits2.h presence... no checking for udunits2.h... no [...] ************************************************************************ Note: udunits2 support is NOT enabled, because I could not find the location of the udunits2 include file 'udunits2.h' or library file 'libudunits2.a'. Ncview uses the udunits2 package to format date strings with units of the form 'days since 1900-01-01'. If you do not use these udunits2-standard date formats, then don't worry about the lack of udunits2 support. If you DO use udunits2 format date strings, and you want the udunits2 support, then you must tell me where to find the udunits2 package by giving arguments to configure, as follows: ./configure -with-udunits2_incdir=include_directory -with-udunits2_libdir=library_directory ************************************************************************ checking /usr/local/include/ppm.h usability... no checking /usr/local/include/ppm.h presence... no [...] ************************************************************************ Note: the -frames option is NOT enabled, because I could not find the location of the PPM include file 'ppm.h' or library file 'libppm.a'. Ncview uses the ppm package to dump out the frames viewed, which is an easy way to make an mpeg video of the data if you want. If you do not want this feature, then don't worry about the lack of ppm support. If you DO want this, then you must tell me where to find the ppm package by giving arguments to configure, as follows: ./configure -with-ppm_incdir=include_directory -with-ppm_libdir=library_directory ************************************************************************ checking for a BSD-compatible install... /usr/bin/install -c configure: creating ./config.status config.status: creating Makefile config.status: creating src/Makefile config.status: creating config.h config.status: executing depfiles commands ----------- Configure Summary ---------- Compiler: CC = gcc UDUNITS: UDUNITS2_LIBS = UDUNITS2_CPPFLAGS = UDUNITS2_LDFLAGS = NETCDF: VERSION = netCDF 4.1.1 COMPILER USED = gcc NETCDF_CPPFLAGS = -I/usr/include NETCDF_LDFLAGS = -L/usr/lib -lnetcdf NETCDF_V4 = yes X: X_CFLAGS = X11_LIBS = -lX11 XAW_LIBS = -lXaw -lXt X_PRE_LIBS = -lSM -lICE X_LIBS = X_EXTRA_LIBS =A few things to note:
- This time the line "Checking for X ... " succeeded, so we know that installing xorg-dev worked;
- It started to fail again when looking for files called "udunits";
- Then it started to fail again when it couldn't find PPM files, which we are told are used for making movies of the data.
Install the PPM dependency
The./configure
script output told us it's missing the files ppm.h, among others. Let's figure out what package that belongs to using the program apt-file. I don't have it installed, so I'll install it and then use it to find packages that include the file ppm.h
. The following is my truncated commands and output:andy@andy-laptop:~$ sudo apt-get install apt-file [sudo] password for andy: Reading package lists... Done [...]
Need to get 508kB of archives. After this operation, 1,434kB of additional disk space will be used. Do you want to continue [Y/n]? y [...] The system-wide cache is empty. You may want to run 'apt-file update' as root to update the cache. You can also run 'apt-file update' as normal user to use a cache in the user's home directory.And then update the cache as it recommends (this took about 20 minutes with my Comcast Internet connection):
andy@andy-laptop:~$ sudo apt-file update Downloading complete file http://us.archive.ubuntu.com/ubuntu/dists/maverick/Contents-i386.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 17.4M 100 17.4M 0 0 16574 0 0:18:23 0:18:23 --:--:-- 16731 [...] Ignoring source without Contents File: http://extras.ubuntu.com/ubuntu/dists/maverick/Contents-i386.gz Ignoring source without Contents File: http://dl.google.com/linux/talkplugin/deb/dists/stable/Contents-i386.gzNow we want to use this program to find the packages with the file
ppm.h
:andy@andy-laptop:~$ apt-file search ppm.h gamgi-doc: /usr/share/doc/gamgi-doc/doc/formats/introduction/ppm.html grass-doc: /usr/share/doc/grass-doc/html/r.out.ppm.html gromacs-dev: /usr/include/gromacs/pppm.h libnetpbm10-dev: /usr/include/libppm.h libnetpbm10-dev: /usr/include/ppm.h libnetpbm9-dev: /usr/include/libppm.h libnetpbm9-dev: /usr/include/ppm.h libtachyon-dev: /usr/include/tachyon/ppm.h libtk-img-doc: /usr/share/doc/libtk-img-doc/html/img-ppm.html tau-examples: /usr/share/doc/tau-examples/examples/opari/c++/ppm.h tau-examples: /usr/share/doc/tau-examples/examples/openmp/c++/ppm.h tau-examples: /usr/share/doc/tau-examples/examples/openmp/c/ppm.h tbb-examples: /usr/share/doc/tbb-examples/examples/parallel_for/tachyon/src/ppm.hI'm guessing it's the package
libnetpbm
that we want, so we'll install it:andy@andy-laptop:~$ sudo apt-get install libnetpbm10-dev [sudo] password for andy: [...] Setting up libnetpbm10-dev (2:10.0-12.2) ...Now we can try
./configure
again (still heavily truncated output):andy@andy-laptop:~$ cd ncview-2.0beta4/ andy@andy-laptop:~/ncview-2.0beta4$ ./configure checking for nc-config... yes Netcdf library version: netCDF 4.1.1 [...] checking udunits2.h usability... no [...] checking /usr/local/include/ppm.h usability... no checking /usr/local/include/ppm.h presence... no checking for /usr/local/include/ppm.h... no checking /usr/include/ppm.h usability... yes checking /usr/include/ppm.h presence... yes checking for /usr/include/ppm.h... yes checking for ppm_writeppm in -lppm... no checking for /usr/local/lib/libppm.so... no checking for /usr/lib/libppm.so... no checking for /lib/libppm.so... no checking for /home/andy/lib/libppm.so... no checking for ppm_writeppm in -lnetpbm... yes checking for a BSD-compatible install... /usr/bin/install -c configure: creating ./config.status config.status: creating Makefile config.status: creating src/Makefile config.status: creating config.h config.status: config.h is unchanged config.status: executing depfiles commands ----------- Configure Summary ---------- Compiler: CC = gcc UDUNITS: UDUNITS2_LIBS = UDUNITS2_CPPFLAGS = UDUNITS2_LDFLAGS = NETCDF: VERSION = netCDF 4.1.1 COMPILER USED = gcc NETCDF_CPPFLAGS = -I/usr/include NETCDF_LDFLAGS = -L/usr/lib -lnetcdf NETCDF_V4 = yes X: X_CFLAGS = X11_LIBS = -lX11 XAW_LIBS = -lXaw -lXt X_PRE_LIBS = -lSM -lICE X_LIBS = X_EXTRA_LIBS =This time it found the PPM files it wanted, and we're left with just one remaining error: the UDunits thing. Let's tackle that now.
Install UDUnits dependency
Let's useapt-file search
again to find which packages we should install to get our missing files. From the output above, we see that we need the file "udunits2.h", among others. Let's search for it:andy@andy-laptop:~$ apt-file search udunits2.h libudunits2-0: /usr/share/doc/libudunits2-0/udunits2.html libudunits2-dev: /usr/include/udunits2.hSo there's a package called
udunits
; let's see if there's a broader collection of packages, using aptitude:andy@andy-laptop:~$ aptitude search udunits p libudunits2-0 - Library for handling of units of physical quantities p libudunits2-dev - Development files for the libunits physical units package p udunits-bin - Utility for handling units of physical quantitiesLet's install all three of these packages:
andy@andy-laptop:~$ sudo apt-get install libudunits2-0 libudunits2-dev udunits-bin
Try ./configure
again
Now that we've met the UDUnits and PPM and X Windows dependencies, let's try configuring again:andy@andy-laptop:~/ncview-2.0beta4$ ./configure checking for nc-config... yes Netcdf library version: netCDF 4.1.1 [...] checking udunits2.h usability... yes checking udunits2.h presence... yes [...] **************************************************************************** Udunits library version 2 support enabled. udunits2 dirs: include: . library: . libname: udunits2 **************************************************************************** [...] ----------- Configure Summary ---------- Compiler: CC = gcc UDUNITS: UDUNITS2_LIBS = -ludunits2 UDUNITS2_CPPFLAGS = -I. UDUNITS2_LDFLAGS = -L. -ludunits2 -lexpat -L. -ludunits2 NETCDF: VERSION = netCDF 4.1.1 COMPILER USED = gcc NETCDF_CPPFLAGS = -I/usr/include NETCDF_LDFLAGS = -L/usr/lib -lnetcdf NETCDF_V4 = yes X: X_CFLAGS = X11_LIBS = -lX11 XAW_LIBS = -lXaw -lXt X_PRE_LIBS = -lSM -lICE X_LIBS = X_EXTRA_LIBS =Success. The configure summary shows that it is aware of Compiler, UDUNITS, NETCDF, and X.
Run the make
command
The next step is to run the make
command.andy@andy-laptop:~/ncview-2.0beta4$ makeThis runs on my machine with copious warnings, but it appears to complete without any fatal errors. Next run
make install
:andy@andy-laptop:~/ncview-2.0beta4$ sudo make install
Test the installation
Try testing the installation by running the program:andy@andy-laptop:~/ncview-2.0beta4$ ncview Ncview 2.0beta4 David W. Pierce 3 March 2010Success. That completes the installation of Ncview. It's now ready to be used to browse NetCDF files.
Summary of commands for power users
- Download the Ncview source files: ftp://cirrus.ucsd.edu/pub/ncview/ (select most recent package)
- Install X.org development headers:
andy@andy-laptop:~$ sudo apt-get install xorg-dev
- Install LibnetPBM development headers:
andy@andy-laptop:~$ sudo apt-get install libnetpbm10-dev
- Install the UDUnits packages:
andy@andy-laptop:~$ sudo apt-get install libudunits2-0 libudunits2-dev udunits-bin
- Run the
configure
script:andy@andy-laptop:~/ncview-2.0beta4$ ./configure
- Run
make
:andy@andy-laptop:~/ncview-2.0beta4$ make
- Run
make install
:andy@andy-laptop:~/ncview-2.0beta4$ sudo make install
- Test the installation:
andy@andy-laptop:~/ncview-2.0beta4$ ncview Ncview 2.0beta4 David W. Pierce 3 March 2010
No comments:
Post a Comment