bioconda / bioconda-recipes

Conda recipes for the bioconda channel.
https://bioconda.github.io
MIT License
1.65k stars 3.29k forks source link

bad library path for htslib #8271

Open init-js opened 6 years ago

init-js commented 6 years ago

I've installed angsd=0.910 and htslib from the bioconda channel.

Once installed the angsd binary from the bioconda channel depends on a missing libhts.so file.

Here's a minimal environment file reproducing the issue:

channels:
  - bioconda
dependencies:
  - angsd=0.910
  - htslib

Here's a series of steps reproducing the bug:

$ conda env create -f environment.yaml -n badlib python=3.6.4
Fetching package metadata .............
Solving package specifications: .
libgcc-ng-7.2. 100% |########| Time: 0:00:00  37.98 MB/s
libstdcxx-ng-7 100% |########| Time: 0:00:00  34.46 MB/s
xz-5.2.3-h55aa 100% |########| Time: 0:00:00  21.20 MB/s
htslib-1.7-0.t 100% |########| Time: 0:00:01 836.83 kB/s
angsd-0.910-0. 100% |########| Time: 0:00:00 945.27 kB/s
#
...
$ source activate badlib
(badlib) $ angsd
angsd: error while loading shared libraries: libhts.so.1: cannot open shared object file: No such file or directory

A little investigation shows the missing symlink:

(badlib) $ ldd `which angsd`
        linux-vdso.so.1 =>  (0x00007fff281d4000)
        libz.so.1 => /home/user/miniconda2/envs/badlib/bin/../lib/libz.so.1 (0x00007f5c7339c000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f5c73180000)
        libhts.so.1 => not found
        libstdc++.so.6 => /home/user/miniconda2/envs/badlib/bin/../lib/libstdc++.so.6 (0x00007f5c72e46000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f5c72b44000)
        libgcc_s.so.1 => /home/user/miniconda2/envs/badlib/bin/../lib/libgcc_s.so.1 (0x00007f5c72932000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f5c7256f000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f5c735b3000)
(badlib) $ (cd ~/miniconda2/envs/badlib/lib/ && ls -l libhts* )
-rw-rw-r-- 2 user user 1180562 Jan 27 04:59 libhts.a
lrwxrwxrwx 1 user user      13 Mar 15 14:16 libhts.so -> libhts.so.1.7
-rw-rw-r-- 2 user user  917336 Jan 27 04:59 libhts.so.1.7
lrwxrwxrwx 1 user user      13 Mar 15 14:16 libhts.so.2 -> libhts.so.1.7

The library link libhts.so.1 is missing.

The workaround is to do ln -s libhts.so.1.7 ~/miniconda2/envs/badlib/lib/libhts.so.1, which fixes the environment.

rvalieris commented 6 years ago

i just updated angsd to 0.921, and it is using libhts.so.2 now.