[Nexus] Problems installing NeXus on Linux

Akeroyd, Freddie (STFC,RAL,ISIS) freddie.akeroyd at stfc.ac.uk
Wed Aug 12 10:12:40 BST 2009


Hi,

It looks like the HDF5 library changed its versioning system when hdf 1.8.0 came out - the rpm on the site is built against a previous version of hdf5 which is now incompatible. 

To rebuild the rpm for your system you would just need to:

* Download the source rpm    http://download.nexusformat.org/kits/rpm/nexus-4.2.0-0.src.rpm
* Type      rpmbuild --rebuild  nexus-4.2.0-0.src.rpm

I've now put a rebuilt  x86_64 rpm up on http://download.nexusformat.org/kits/ (FC9 so it is linked against the 1.8 branch of hdf5) - I need to cross compile an i386 one so it will be up there a little later in the day

Regards,

Freddie


From: nexus-bounces at nexusformat.org [mailto:nexus-bounces at nexusformat.org] On Behalf Of Mark Rivers
Sent: 11 August 2009 19:08
To: nexus at nexusformat.org
Subject: [Nexus] Problems installing NeXus on Linux

Folks,

I am having problems installing NeXus on Linux.  I have a Fedora Core 10 system. I followed the instructions on the NeXus site:

http://www.nexusformat.org/Download#NeXus_Binary_Distributions

I did the:

yum install hdf hdf-devel hdf5 hdf5-devel mxml mxml-devel

I then tried to install Nexus as directed but it fails:

corvette:~>sudo rpm -Uhv nexus-4.1.0-0.i386.rpm 
[sudo] password for epics: 
error: Failed dependencies:
        libhdf5.so.0 is needed by nexus-4.1.0-0.i386

It cannot find libhdf5.so.0, which indeed does not exist.  These are the hdf5 files and links in /usr/lib.

corvette:~>ls -l /usr/lib/libhdf5*
-rw-r--r-- 1 root root 3434232 Jun  5  2008 /usr/lib/libhdf5.a
lrwxrwxrwx 1 root root      16 Sep  4  2008 /usr/lib/libhdf5.so -> libhdf5.so.5.0.1
lrwxrwxrwx 1 root root      16 Sep  4  2008 /usr/lib/libhdf5.so.5 -> libhdf5.so.5.0.1
-rwxr-xr-x 1 root root 2487304 Jun  5  2008 /usr/lib/libhdf5.so.5.0.1
-rw-r--r-- 1 root root  572100 Jun  5  2008 /usr/lib/libhdf5_cpp.a
lrwxrwxrwx 1 root root      20 Sep  4  2008 /usr/lib/libhdf5_cpp.so -> libhdf5_cpp.so.0.0.0
lrwxrwxrwx 1 root root      20 Sep  4  2008 /usr/lib/libhdf5_cpp.so.0 -> libhdf5_cpp.so.0.0.0
-rwxr-xr-x 1 root root  400808 Jun  5  2008 /usr/lib/libhdf5_cpp.so.0.0.0
-rw-r--r-- 1 root root  267126 Jun  5  2008 /usr/lib/libhdf5_fortran.a
lrwxrwxrwx 1 root root      24 Sep  4  2008 /usr/lib/libhdf5_fortran.so -> libhdf5_fortran.so.0.0.0
lrwxrwxrwx 1 root root      24 Sep  4  2008 /usr/lib/libhdf5_fortran.so.0 -> libhdf5_fortran.so.0.0.0
-rwxr-xr-x 1 root root  223128 Jun  5  2008 /usr/lib/libhdf5_fortran.so.0.0.0
-rw-r--r-- 1 root root  138888 Jun  5  2008 /usr/lib/libhdf5_hl.a
lrwxrwxrwx 1 root root      19 Sep  4  2008 /usr/lib/libhdf5_hl.so -> libhdf5_hl.so.0.0.0
lrwxrwxrwx 1 root root      19 Sep  4  2008 /usr/lib/libhdf5_hl.so.0 -> libhdf5_hl.so.0.0.0
-rwxr-xr-x 1 root root  114968 Jun  5  2008 /usr/lib/libhdf5_hl.so.0.0.0
-rw-r--r-- 1 root root    6454 Jun  5  2008 /usr/lib/libhdf5_hl_cpp.a
lrwxrwxrwx 1 root root      23 Sep  4  2008 /usr/lib/libhdf5_hl_cpp.so -> libhdf5_hl_cpp.so.0.0.0
lrwxrwxrwx 1 root root      23 Sep  4  2008 /usr/lib/libhdf5_hl_cpp.so.0 -> libhdf5_hl_cpp.so.0.0.0
-rwxr-xr-x 1 root root    7492 Jun  5  2008 /usr/lib/libhdf5_hl_cpp.so.0.0.0
-rw-r--r-- 1 root root   56366 Jun  5  2008 /usr/lib/libhdf5hl_fortran.a
lrwxrwxrwx 1 root root      26 Sep  4  2008 /usr/lib/libhdf5hl_fortran.so -> libhdf5hl_fortran.so.0.0.0
lrwxrwxrwx 1 root root      26 Sep  4  2008 /usr/lib/libhdf5hl_fortran.so.0 -> libhdf5hl_fortran.so.0.0.0
-rwxr-xr-x 1 root root   51400 Jun  5  2008 /usr/lib/libhdf5hl_fortran.so.0.0.0

So I have libhdf5.so.5.0.1 as the actual file.  Making a symbolic link to that file from libhdf5.so.0 does not help, same rpm error as above.   

(I also installed hdf5-static and hdf-devel-static because I want those libraries too).

I forced rpm to install NeXus with the -nodeps to ignore the problem.

Once I do that I try to link my application, and I get a bunch of unresolved symbols.  It looks like it could be an HDF5 version problem. One of the undefined symbols is H5Acreate.  If I run "nm" on libNeXus.a I see that it has an undefined symbol H5Acreate:

corvette:1-5beta/ADApp/simDetectorSrc>nm ../../lib/linux-x86/libNeXus.a  | grep H5Acreate
         U H5Acreate

If I run nm on libhdf5.a I see that it defines some similar symbols, H5Acreate1, H5Acreate2, H5Acreate_by_name, but not H5Acreate.

corvette:1-5beta/ADApp/simDetectorSrc>nm /usr/lib/libhdf5.a | grep H5Acreate
00006990 T H5Acreate2
00006570 T H5Acreate_by_name
00000a90 T H5Acreate1

Any idea what the problem is?

Thanks,
Mark

-- 
Scanned by iCritical.



More information about the NeXus mailing list