Beware of rogue header files (Bioconductor installation)

Just a short note concerning a “gotcha”.

As I have many times before, I opened an R console on my newly-upgraded (to lucid 10.04) Ubuntu machine, typed source(“http://bioconductor.org/biocLite.R”) and began a Bioconductor install with biocLite(). Only this time, I saw this:

Error in dyn.load(file, DLLpath = DLLpath, ...) : unable to load shared library 
 '/home/sau103/R/i486-pc-linux-gnu-library/2.11/affyio/libs/affyio.so':
  /home/sau103/R/i486-pc-linux-gnu-library/2.11/affyio/libs/affyio.so: undefined symbol: egzread
ERROR: loading failed
* removing ‘/home/sau103/R/i486-pc-linux-gnu-library/2.11/affyio’

A quick email to the Bioconductor mailing list put me in touch with the very helpful Martin Morgan, who suggested that I check my zlib libraries. Sure enough, the rogue “egzread” was found in /usr/local/include/zlibemboss.h, along with a second zlib.h file, in addition to /usr/include/zlib.h.

grep egz /usr/local/include/zlibemboss.h
> #define gzread egzread

I moved the rogue zlib.h out of /usr/local/include and order was restored.

So in summary, watch out when installing EMBOSS on Ubuntu – it seems to mess with things that it should not.