Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GLIBCXX_3.4.30 not found with DIANN 1.9.1 running on linux cluster #1202

Open
Andre-C-M opened this issue Oct 9, 2024 · 13 comments
Open

GLIBCXX_3.4.30 not found with DIANN 1.9.1 running on linux cluster #1202

Andre-C-M opened this issue Oct 9, 2024 · 13 comments

Comments

@Andre-C-M
Copy link

seems to have lost compatibility for SLES15SP5 moving from DIA-NN 1.8.1 to 1.9.1
any change to make this compatible with previous gcc?
log:
/usr/lib64/libstdc++.so.6: version GLIBCXX_3.4.30' not found (required by /DIA-NN/diann-1.9.1/diann-linux) DIA-NN/diann-1.9.1/diann-linux: /lib64/libc.so.6: version GLIBC_2.32' not found (required DIA-NN/diann-1.9.1/diann-linux)
DIA-NN/diann-1.9.1/diann-linux: /lib64/libc.so.6: version GLIBC_2.34' not found (required DIA-NN/diann-1.9.1/diann-linux) DIA-NN/diann-1.9.1/diann-linux: /lib64/libc.so.6: version GLIBC_2.33' not found

thank you!

@vdemichev
Copy link
Owner

Hi Andre,

We recommend packaging in a Docker or Singularity container https://github.com/vdemichev/DiaNN?tab=readme-ov-file#installation, which allows to run DIA-NN 1.9.1 on basically any Linux with a sufficiently modern kernel (which means any reasonable Linux used nowdays).

The reason for the change is that 1.9 is rewritten in a way that relies heavily on C++20 and needs a modern compiler. We could try to combine modern gcc with old system libs (which is an epic pain to do), but decided that since Docker/Singularity is the preferred method to run DIA-NN anyway to just stick with it. This also allows us to benefit from the continuous performance improvments in modern gcc/clang.

Best,
Vadim

@rolivella
Copy link

Hi @Andre-C-M

I’ve created a Docker container for the DIA-NN software, which you can now use to quickly set up and run DIA-NN without manual installation. You can pull the container from Docker Hub using the following link:

docker://proteomicsunitcrg/dia-nn:1.9.1

This container includes all the necessary dependencies and is ready for deployment.

If you have any questions or suggestions, feel free to reach out.

Roger

@vdemichev
Copy link
Owner

Hi Roger,

Please don't redistribute DIA-NN, but only the container image without DIA-NN binary, i.e. the user will need to put the DIA-NN binary into the container image themselves.

Best,
Vadim

@rolivella
Copy link

@vdemichev you're right, I deleted it and I will recreate it later without DIA-NN binary.

@Andre-C-M
Copy link
Author

@rolivella thank you, that would be great to have it out of the box! Which binary would i need to put back in?

@vdemichev
Copy link
Owner

Would be the Linux one here https://github.com/vdemichev/DiaNN/releases/tag/1.9.1 or also any of the future versions.

@rolivella
Copy link

@Andre-C-M next week I'll do it

@rolivella
Copy link

Hi @vdemichev,

I wanted to ask whether the Dockerfile provided below, specifically the inclusion of DiaNN software, could potentially infringe any licenses associated with DiaNN. The Dockerfile pulls the software from the public GitHub repository and uses it within an Ubuntu environment.

Here’s the Dockerfile for reference:

FROM ubuntu
USER root
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update
RUN apt-get install wget -y
RUN apt-get install unzip -y
RUN apt-get install libgomp1
RUN wget https://github.com/vdemichev/DiaNN/releases/download/1.9.1/diann-1.9.1.Linux.zip -O diann-1.9.1.Linux.zip
RUN unzip diann-1.9.1.Linux.zip
RUN chmod -R 775 /diann-1.9.1

Could you clarify if this usage is compliant with DiaNN's license terms, particularly regarding redistribution and usage within a containerized environment?

Thanks for your help!

@rolivella
Copy link

@vdemichev, kind reminder, thanks!

@vdemichev
Copy link
Owner

Hi Roger,

First, many thanks for making the Dockerfile!

I cannot provide any formal/legally binding comment on the license, however to me it is obvious that instructions on how to use DIA-NN are not themselves subject to any licensing (and a Dockerfile is just a set of instructions), i.e. so long as there's no redistribution of the binary, it should perfectly fine. Whether or not the 'usage' of this Dockerfile by the end-user is license-compliant will depend on how and for which purpose the user uses DIA-NN. I would maybe add a comment line to the Dockerfile that indicates to the user that it's entirely up to them to ensure they comply with the DIA-NN license terms.

Best,
Vadim

@rolivella
Copy link

Hi @vdemichev,

Thank you for your feedback! I will proceed as you suggested and add a comment to the Dockerfile indicating that users are responsible for ensuring compliance with the DIA-NN license terms.

It would be really helpful if DIA-NN could be officially distributed on DockerHub, similar to what’s done with FragPipe (DockerHub - fcyucn/fragpipe). This would save developers the effort of building and maintaining the Docker image for every new version. As HPC applications continue to grow, having an official container would be incredibly useful. Just a suggestion!

I’ll also post instructions here on how to build the Dockerfile and run it for others who might find it helpful.

Best,
Roger

@rolivella
Copy link

rolivella commented Oct 16, 2024

Steps to Build the Docker Image and Convert it to a Singularity Image

  1. Create a Dockerfile

    Create a file named Dockerfile and add the following content to download and install DIA-NN 1.9.1. This Dockerfile also ensures that locale settings are properly configured to avoid runtime errors and reminds users to comply with the DIA-NN license terms.

    FROM ubuntu
    USER root
    ENV DEBIAN_FRONTEND=noninteractive
    
    # Update package lists and ensure package versions are up to date
    RUN apt-get update && apt-get upgrade -y
    
    # Install necessary packages including locales
    RUN apt-get install wget unzip libgomp1 locales -y
    
    # Configure locale to avoid runtime errors
    RUN locale-gen en_US.UTF-8 && \
        update-locale LANG=en_US.UTF-8
    
    # Set environment variables for locale
    ENV LANG=en_US.UTF-8
    ENV LANGUAGE=en_US:en
    ENV LC_ALL=en_US.UTF-8
    
    # Download DIA-NN version <version>
    RUN wget https://github.com/vdemichev/DiaNN/releases/download/<version>/diann-<version>.Linux.zip -O diann-<version>.Linux.zip
    
    # Unzip the DIA-NN package
    RUN unzip diann-<version>.Linux.zip
    
    # Set appropriate permissions for the DIA-NN folder
    RUN chmod -R 775 /diann-<version>
    
    # NOTE: It is entirely the user's responsibility to ensure compliance with DIA-NN license terms.
    # Please review the licensing terms for DIA-NN before using or distributing this Docker image.
  2. Build the Docker Image

    Navigate to the directory where the Dockerfile is located. Run the following command to build the Docker image:

    docker build -t diann-<version> .
  3. Run the Docker Container

    After building the Docker image, you can directly run DIA-NN using Docker with the following command:

    docker run diann-<version> /diann-<version>/diann-linux -v

    This command will run the DIA-NN tool within the Docker container, and the -v flag will display version information or additional verbose output.

  4. Save the Docker Image to a .tar File

    After running the container or if you want to convert it to a Singularity image, save the Docker image as a .tar archive:

    docker save -o diann-<version>.tar diann-<version>

    This will create a diann-<version>.tar file that can be used to build a Singularity image.

  5. Convert the Docker Image to a Singularity Image

    Use the following command to convert the Docker .tar archive to a Singularity .img file:

    singularity build diann-<version>.img docker-archive://diann-<version>.tar

    This command creates a Singularity .img file named diann-<version>.img.

  6. Run the Singularity Container with DIA-NN

    To run the Singularity image with DIA-NN, use the following command:

    singularity exec diann-<version>.img /diann-<version>/diann-linux -v

    This command will execute the DIA-NN tool, and the -v flag will display version information or additional verbose output.

@vdemichev
Copy link
Owner

Thank you very much for the detailed guide! I've added a reference to your post to the docs.

Best,
Vadim

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants