sylabs / singularity

SingularityCE is the Community Edition of Singularity, an open source container platform designed to be simple, fast, and secure.
https://sylabs.io/docs/
Other
768 stars 98 forks source link

mconfig - Go compiler not found #2633

Closed BeatrizMonterde closed 8 months ago

BeatrizMonterde commented 9 months ago

Version of Singularity singularity-ce-4.1.1

Describe the bug I am trying to install singularity in an HPC environment. I have previously downloaded Go and have indicated the path to the libraries and binary files in my .bashrc profile. However, when I try to run ./mconfig from Singularity, it seems to be an issue with Go compiler

(nextflow) [bmonterde@node01(alma) singularity-ce-4.1.1]$ ./mconfig Configuring for project `singularity-ce' with languages: C, Golang => running pre-basechecks project specific checks ... => running base system checks ... checking: host C compiler... cc checking: host C++ compiler... c++ checking: host Go compiler (at least version 1.20)... not found! mconfig: could not complete configuration

To Reproduce Installer downloaded image

OS / Linux Distribution (nextflow) [bmonterde@node01(alma) builddir]$ uname -r 4.18.0-193.14.2.el8_2.x86_64

BeatrizMonterde commented 9 months ago

Following some previous threads, I have removed the most recent Go version (go1.21.6) and installed instead the one required by Singularity (4.1.1), go1.20.13. With this modification, the "Go compiler" is found, but then there is an issue with "seccomp headers"

(nextflow) [bmonterde@node01(alma) singularity-ce-4.1.1]$ ./mconfig Configuring for project singularity-ce' with languages: C, Golang => running pre-basechecks project specific checks ... => running base system checks ... checking: host C compiler... cc checking: host C++ compiler... c++ checking: host Go compiler (at least version 1.20)... /data/scratch/DMP/UCEC/EVOLIMMU/bmonterde/go/bin/go checking: host C compiler option -Wall... yes checking: host C compiler option -Werror... yes checking: host C compiler option -Wfatal-errors... yes checking: host C compiler option -Wno-unknown-warning-option... yes checking: host C compiler option -Wstrict-prototypes... yes checking: host C compiler option -Wpointer-arith... yes checking: host C compiler option -Wbad-function-cast... yes checking: host C compiler option -Woverlength-strings... yes checking: host C compiler option -Wframe-larger-than=2047... yes checking: host C compiler option -Wno-sign-compare... yes checking: host C compiler option -Wclobbered... yes checking: host C compiler option -Wempty-body... yes checking: host C compiler option -Wmissing-parameter-type... yes checking: host C compiler option -Wtype-limits... yes checking: host C compiler option -Wunused-parameter... yes checking: host C compiler option -Wunused-but-set-parameter... yes checking: host C compiler option -Wno-discarded-qualifiers... yes checking: host C compiler option -Wno-incompatible-pointer-types... yes checking: host C compiler option -pipe... yes checking: host C compiler option -fmessage-length=0... yes checking: host C compiler option -fPIC... yes checking: hostar' path... ar checking: host ld' path... ld checking: hostranlib' path... ranlib checking: host objcopy' path... objcopy checking: target C compiler... cc checking: target C++ compiler... c++ checking: targetar' path... ar checking: target ld' path... ld checking: targetranlib' path... ranlib checking: target `objcopy' path... objcopy checking: host compiles static binaries... no checking: target compiles static binaries... no checking: host os type... unix checking: host architecture... x86_64 checking: target architecture... x86_64 checking: host architecture word size... 64 checking: target architecture word size... 64 checking: project version... 4.1.1 checking: project short version... 4.1.1 => running post-basechecks project specific checks ... checking: namespace: CLONE_NEWPID... yes checking: namespace: CLONE_FS... yes checking: namespace: CLONE_NEWNS... yes checking: namespace: CLONE_NEWUSER... yes checking: namespace: CLONE_NEWIPC... yes checking: namespace: CLONE_NEWNET... yes checking: namespace: CLONE_NEWUTS... yes checking: namespace: CLONE_NEWCGROUP... yes checking: feature: NO_NEW_PRIVS... yes checking: feature: MS_SLAVE... yes checking: feature: MS_REC... yes checking: feature: MS_PRIVATE... yes checking: user capabilities... yes checking: header linux/securebits.h... yes checking: header linux/capability.h... yes checking: libseccomp+headers... no

seccomp headers are required to build Singularity with seccomp support. To disable seccomp support run mconfig using '--without-seccomp'.

Any idea on how could I solve this issue?

Many thanks

dtrudg commented 9 months ago

Please follow the instructions in INSTALL.md:

https://github.com/sylabs/singularity/blob/release-4.1/INSTALL.md

Note that the 'install dependencies' step installs libseccomp-dev or libseccomp-devel depending on your installation.

If you cannot install these packages, then you can run mconfig with the --without-seccomp flag, as the error message suggests.

Also note that SingularityCE 4.1.1 does not require Go 1.20.13. Go 1.20 is the minimum version. Our own packages are currently built using Go 1.21.6.

BeatrizMonterde commented 9 months ago

Hi,

Many thanks for youre reply and the link provided. Unfortunately, I am working in an HPC environment and don't have permissions to use "sudo". Is there an alternative way to install them?

Also, I tried ro run "mconfig" with the flag "--without--seccomp", but the installation wasn't successful

(base) [bmonterde@node01(alma) singularity-ce-4.1.1]$ ./mconfig --without-seccomp Configuring for project singularity-ce' with languages: C, Golang => running pre-basechecks project specific checks ... => running base system checks ... checking: host C compiler... cc checking: host C++ compiler... c++ checking: host Go compiler (at least version 1.20)... /data/scratch/DMP/UCEC/EVOLIMMU/bmonterde/go/bin/go checking: host C compiler option -Wall... yes checking: host C compiler option -Werror... yes checking: host C compiler option -Wfatal-errors... yes checking: host C compiler option -Wno-unknown-warning-option... yes checking: host C compiler option -Wstrict-prototypes... yes checking: host C compiler option -Wpointer-arith... yes checking: host C compiler option -Wbad-function-cast... yes checking: host C compiler option -Woverlength-strings... yes checking: host C compiler option -Wframe-larger-than=2047... yes checking: host C compiler option -Wno-sign-compare... yes checking: host C compiler option -Wclobbered... yes checking: host C compiler option -Wempty-body... yes checking: host C compiler option -Wmissing-parameter-type... yes checking: host C compiler option -Wtype-limits... yes checking: host C compiler option -Wunused-parameter... yes checking: host C compiler option -Wunused-but-set-parameter... yes checking: host C compiler option -Wno-discarded-qualifiers... yes checking: host C compiler option -Wno-incompatible-pointer-types... yes checking: host C compiler option -pipe... yes checking: host C compiler option -fmessage-length=0... yes checking: host C compiler option -fPIC... yes checking: hostar' path... ar checking: host ld' path... ld checking: hostranlib' path... ranlib checking: host objcopy' path... objcopy checking: target C compiler... cc checking: target C++ compiler... c++ checking: targetar' path... ar checking: target ld' path... ld checking: targetranlib' path... ranlib checking: target `objcopy' path... objcopy checking: host compiles static binaries... no checking: target compiles static binaries... no checking: host os type... unix checking: host architecture... x86_64 checking: target architecture... x86_64 checking: host architecture word size... 64 checking: target architecture word size... 64 checking: project version... 4.1.1 checking: project short version... 4.1.1 => running post-basechecks project specific checks ... checking: namespace: CLONE_NEWPID... yes checking: namespace: CLONE_FS... yes checking: namespace: CLONE_NEWNS... yes checking: namespace: CLONE_NEWUSER... yes checking: namespace: CLONE_NEWIPC... yes checking: namespace: CLONE_NEWNET... yes checking: namespace: CLONE_NEWUTS... yes checking: namespace: CLONE_NEWCGROUP... yes checking: feature: NO_NEW_PRIVS... yes checking: feature: MS_SLAVE... yes checking: feature: MS_REC... yes checking: feature: MS_PRIVATE... yes checking: user capabilities... yes checking: header linux/securebits.h... yes checking: header linux/capability.h... yes

Cannot build conmon for OCI support without libseccomp headers. Use --without-conmon to disable build and use conmon on PATH if present.

As suggested, I also tried with "--without-conmon"

(base) [bmonterde@node01(alma) singularity-ce-4.1.1]$ ./mconfig --without-conmonConfiguring for project singularity-ce' with languages: C, Golang => running pre-basechecks project specific checks ... => running base system checks ... checking: host C compiler... cc checking: host C++ compiler... c++ checking: host Go compiler (at least version 1.20)... /data/scratch/DMP/UCEC/EVOLIMMU/bmonterde/go/bin/go checking: host C compiler option -Wall... yes checking: host C compiler option -Werror... yes checking: host C compiler option -Wfatal-errors... yes checking: host C compiler option -Wno-unknown-warning-option... yes checking: host C compiler option -Wstrict-prototypes... yes checking: host C compiler option -Wpointer-arith... yes checking: host C compiler option -Wbad-function-cast... yes checking: host C compiler option -Woverlength-strings... yes checking: host C compiler option -Wframe-larger-than=2047... yes checking: host C compiler option -Wno-sign-compare... yes checking: host C compiler option -Wclobbered... yes checking: host C compiler option -Wempty-body... yes checking: host C compiler option -Wmissing-parameter-type... yes checking: host C compiler option -Wtype-limits... yes checking: host C compiler option -Wunused-parameter... yes checking: host C compiler option -Wunused-but-set-parameter... yes checking: host C compiler option -Wno-discarded-qualifiers... yes checking: host C compiler option -Wno-incompatible-pointer-types... yes checking: host C compiler option -pipe... yes checking: host C compiler option -fmessage-length=0... yes checking: host C compiler option -fPIC... yes checking: hostar' path... ar checking: host ld' path... ld checking: hostranlib' path... ranlib checking: host objcopy' path... objcopy checking: target C compiler... cc checking: target C++ compiler... c++ checking: targetar' path... ar checking: target ld' path... ld checking: targetranlib' path... ranlib checking: target `objcopy' path... objcopy checking: host compiles static binaries... no checking: target compiles static binaries... no checking: host os type... unix checking: host architecture... x86_64 checking: target architecture... x86_64 checking: host architecture word size... 64 checking: target architecture word size... 64 checking: project version... 4.1.1 checking: project short version... 4.1.1 => running post-basechecks project specific checks ... checking: namespace: CLONE_NEWPID... yes checking: namespace: CLONE_FS... yes checking: namespace: CLONE_NEWNS... yes checking: namespace: CLONE_NEWUSER... yes checking: namespace: CLONE_NEWIPC... yes checking: namespace: CLONE_NEWNET... yes checking: namespace: CLONE_NEWUTS... yes checking: namespace: CLONE_NEWCGROUP... yes checking: feature: NO_NEW_PRIVS... yes checking: feature: MS_SLAVE... yes checking: feature: MS_REC... yes checking: feature: MS_PRIVATE... yes checking: user capabilities... yes checking: header linux/securebits.h... yes checking: header linux/capability.h... yes checking: libseccomp+headers... no

seccomp headers are required to build Singularity with seccomp support. To disable seccomp support run mconfig using '--without-seccomp'.

dtrudg commented 9 months ago

You need to keep adding the additional flags until enough things are disabled to allow singularity to build given the restrictions of your system.

If you do not have sudo / root access you will also need to specify --prefix to set a custom installation location, and --without-suid to perform a non-setuid (unprivileged) installation. Note that this has some impact on how singularity works.

See the more detailed installation documentation in the admin guide here:

https://docs.sylabs.io/guides/4.0/admin-guide/installation.html#unprivileged-non-setuid-installation

It looks like you will also need --without-seccomp and --without-conmon so... e.g.

./mconfig --without-seccomp --without-conmon --without-suid --prefix=/home/dave/singularity-ce
BeatrizMonterde commented 9 months ago

Hi,

Many thanks for your reply. I have tried to install again singularity according to the information provided.

(base) [bmonterde@node01(alma) singularity-ce-4.1.1]$ ./mconfig --without-seccomp --without-conmon --without-suid --prefix=/data/scratch/DMP/UCEC/EVOLIMMU/bmonterde/singularity-ce-4.1.1 Configuring for project singularity-ce' with languages: C, Golang => running pre-basechecks project specific checks ... => running base system checks ... checking: host C compiler... cc checking: host C++ compiler... c++ checking: host Go compiler (at least version 1.20)... /data/scratch/DMP/UCEC/EVOLIMMU/bmonterde/go/bin/go checking: host C compiler option -Wall... yes checking: host C compiler option -Werror... yes checking: host C compiler option -Wfatal-errors... yes checking: host C compiler option -Wno-unknown-warning-option... yes checking: host C compiler option -Wstrict-prototypes... yes checking: host C compiler option -Wpointer-arith... yes checking: host C compiler option -Wbad-function-cast... yes checking: host C compiler option -Woverlength-strings... yes checking: host C compiler option -Wframe-larger-than=2047... yes checking: host C compiler option -Wno-sign-compare... yes checking: host C compiler option -Wclobbered... yes checking: host C compiler option -Wempty-body... yes checking: host C compiler option -Wmissing-parameter-type... yes checking: host C compiler option -Wtype-limits... yes checking: host C compiler option -Wunused-parameter... yes checking: host C compiler option -Wunused-but-set-parameter... yes checking: host C compiler option -Wno-discarded-qualifiers... yes checking: host C compiler option -Wno-incompatible-pointer-types... yes checking: host C compiler option -pipe... yes checking: host C compiler option -fmessage-length=0... yes checking: host C compiler option -fPIC... yes checking: hostar' path... ar checking: host ld' path... ld checking: hostranlib' path... ranlib checking: host objcopy' path... objcopy checking: target C compiler... cc checking: target C++ compiler... c++ checking: targetar' path... ar checking: target ld' path... ld checking: targetranlib' path... ranlib checking: target `objcopy' path... objcopy checking: host compiles static binaries... no checking: target compiles static binaries... no checking: host os type... unix checking: host architecture... x86_64 checking: target architecture... x86_64 checking: host architecture word size... 64 checking: target architecture word size... 64 checking: project version... 4.1.1 checking: project short version... 4.1.1 => running post-basechecks project specific checks ... checking: namespace: CLONE_NEWPID... yes checking: namespace: CLONE_FS... yes checking: namespace: CLONE_NEWNS... yes checking: namespace: CLONE_NEWUSER... yes checking: namespace: CLONE_NEWIPC... yes checking: namespace: CLONE_NEWNET... yes checking: namespace: CLONE_NEWUTS... yes checking: namespace: CLONE_NEWCGROUP... yes checking: feature: NO_NEW_PRIVS... yes checking: feature: MS_SLAVE... yes checking: feature: MS_REC... yes checking: feature: MS_PRIVATE... yes checking: user capabilities... yes checking: header linux/securebits.h... yes checking: header linux/capability.h... yes checking: squashfuse source... yes checking: squashfuse fuse3 headers... no checking: squashfuse fuse headers... no

fuse / fuse3 (libfuse / libfuse3) headers are required to build squashfuse.

However, I thins there is an issue with "GCC" that is already installed in the cluster and the PATH is indicated in my .bashrc file. Any idea on how I could solve it?

(base) [bmonterde@node01(alma) singularity-ce-4.1.1]$ which gcc
/usr/bin/gcc

export PATH="/usr/bin:$PATH"

Thanks again for your help

dtrudg commented 8 months ago

It looks like your environment is missing enough libraries that you won't really be able to use an unprivileged installation of singularity well.

At this point I would advise discussing with any HPC administrator / support staff for your cluster.

If there are further questions, please use the Q&A section of GitHub discussions, as this is not a bug or issue with SingularityCE itself - https://github.com/sylabs/singularity/discussions/categories/q-a