barricklab / breseq

breseq is a computational pipeline for finding mutations relative to a reference sequence in short-read DNA resequencing data. It is intended for haploid microbial genomes (<20 Mb). breseq is a command line tool implemented in C++ and R.
http://barricklab.org/breseq
GNU General Public License v2.0
143 stars 21 forks source link

Error with `GLIBCXX_3.4.30' running breseq in conda environment on HPCC #338

Closed cyrusmallon closed 1 year ago

cyrusmallon commented 1 year ago

Hello,

I am trying to run breseq 0.37.1, within a conda environment, on my institute's computer cluster, but I receive the following error:

breseq: /hpc/local/CentOS7/hub_garayco/anaconda_folder/envs/breseq/bin/../lib/libstdc++.so.6: version 'GLIBCXX_3.4.30' not found (required by breseq)

This is the version of gcc my cluster is using gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)

I have tried this command to run a newer version of gcc within the same conda environment where breseq is installed with this command conda install -c conda-forge gcc=12.1.0

But the installation is unsuccessful. There is a long output from conda as it checks inconsistencies between breseq and installed packages and I think this is the most important information:

Solving environment: - 
The environment is inconsistent, please check the package plan carefully
The following packages are causing the inconsistency:

  - <unknown>/linux-64::breseq==0.37.1=h5b5514e_0

and...

Package wheel conflicts for:
pip -> wheel
python=3.9 -> pip -> wheel
wheelThe following specifications were found to be incompatible with your system:

  - feature:/linux-64::__glibc==2.17=0
  - feature:|@/linux-64::__glibc==2.17=0
  - libffi -> libgcc-ng[version='>=9.4.0'] -> __glibc[version='>=2.17']
  - libgcc-ng -> __glibc[version='>=2.17']
  - libstdcxx-ng -> __glibc[version='>=2.17']
  - ncurses -> libgcc-ng[version='>=10.3.0'] -> __glibc[version='>=2.17']
  - openssl -> libgcc-ng[version='>=10.3.0'] -> __glibc[version='>=2.17']
  - python=3.9 -> libgcc-ng[version='>=10.3.0'] -> __glibc[version='>=2.17']
  - readline -> libgcc-ng[version='>=9.3.0'] -> __glibc[version='>=2.17']
  - sqlite -> libgcc-ng[version='>=10.3.0'] -> __glibc[version='>=2.17']
  - tk -> libgcc-ng[version='>=9.4.0'] -> __glibc[version='>=2.17']
  - xz -> libgcc-ng[version='>=7.5.0'] -> __glibc[version='>=2.17']
  - zlib -> libgcc-ng[version='>=10.3.0'] -> __glibc[version='>=2.17']

Your installed version is: 2.17

After seeing this message I also tried to install a newer version of libgcc with this command conda install -c anaconda libgcc. However, I get a very similar error/conflict message. I think this is the most important information:

Package pip conflicts for:
python=3.9 -> pip
setuptools -> python[version='>=3.10,<3.11.0a0'] -> pip
wheel -> python -> pip
pip
certifi -> python[version='>=3.8,<3.9.0a0'] -> pipThe following specifications were found to be incompatible with your system:

  - feature:/linux-64::__glibc==2.17=0
  - feature:|@/linux-64::__glibc==2.17=0
  - libffi -> libgcc-ng[version='>=7.5.0'] -> __glibc[version='>=2.17']
  - libgcc -> libgcc-ng[version='>=7.2.0'] -> __glibc[version='>=2.17']
  - libgcc-ng -> __glibc[version='>=2.17']
  - libstdcxx-ng -> __glibc[version='>=2.17']
  - ncurses -> libgcc-ng[version='>=11.2.0'] -> __glibc[version='>=2.17']
  - openssl -> libgcc-ng[version='>=7.5.0'] -> __glibc[version='>=2.17']
  - python=3.9 -> libgcc-ng[version='>=7.5.0'] -> __glibc[version='>=2.17']
  - readline -> libgcc-ng[version='>=7.5.0'] -> __glibc[version='>=2.17']
  - sqlite -> libgcc-ng[version='>=11.2.0'] -> __glibc[version='>=2.17']
  - tk -> libgcc-ng[version='>=7.5.0'] -> __glibc[version='>=2.17']
  - xz -> libgcc-ng[version='>=7.5.0'] -> __glibc[version='>=2.17']
  - zlib -> libgcc-ng[version='>=7.5.0'] -> __glibc[version='>=2.17']

Your installed version is: 2.17

Here is the output of my conda installation info from conda info:

active environment : breseq
    active env location : /hpc/local/CentOS7/hub_garayco/anaconda_folder/envs/breseq
            shell level : 2
       user config file : /home/hub_garayco/cmallon/.condarc
 populated config files : 
          conda version : 23.1.0
    conda-build version : 3.23.3
         python version : 3.9.16.final.0
       virtual packages : __archspec=1=x86_64
                          __glibc=2.17=0
                          __linux=3.10.0=0
                          __unix=0=0
       base environment : /hpc/local/CentOS7/hub_garayco/anaconda_folder  (writable)
      conda av data dir : /hpc/local/CentOS7/hub_garayco/anaconda_folder/etc/conda
  conda av metadata url : None
           channel URLs : https://repo.anaconda.com/pkgs/main/linux-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/r/linux-64
                          https://repo.anaconda.com/pkgs/r/noarch
          package cache : /hpc/local/CentOS7/hub_garayco/anaconda_folder/pkgs
                          /home/hub_garayco/cmallon/.conda/pkgs
       envs directories : /hpc/local/CentOS7/hub_garayco/anaconda_folder/envs
                          /home/hub_garayco/cmallon/.conda/envs
               platform : linux-64
             user-agent : conda/23.1.0 requests/2.28.1 CPython/3.9.16 Linux/3.10.0-1160.80.1.el7.x86_64 centos/7.9.2009 glibc/2.17
                UID:GID : 47124:12932
             netrc file : None
           offline mode : False

Do you have any advice on how to go forward from here? Should I just use an older version of breseq? Or is it possible (and an easy fix) to make breseq compatible with an older version of gcc or libgcc?

Thank you for reading and thank you for your help!

cyrusmallon commented 1 year ago

Hi again,

So breseq is working now. The previous way I was installing breseq was to download the .tar.b2 with wget. Then I would go conda install breseq.tar.bz2.

Now, I've simply followed the instructions on the installation page of the documentation...

conda create -n breseq python=3.9
conda activate breseq
conda install breseq

and it works!

Next time I will just follow the instructions! I guess when I download breseq via the conda package manager, conda will use a gcc specific to the environment? Rather than downloading the source, when it will try to compile using the cluster's gcc? Not sure...but I'm glad it's working now!

jeffreybarrick commented 1 year ago

Thanks for the update!

It's possible this is related to a known problem that the Linux binary package of breseq is not very compatible across Linux system, and I should stop making that package...