From 7d8a45544740aaad25f9a31639f563bab3e7c2ce Mon Sep 17 00:00:00 2001 From: Marty Kandes <mkandes@sdsc.edu> Date: Fri, 23 Jul 2021 14:59:05 +0000 Subject: [PATCH] FIX: Prepend Singularity install dir to PATH prior to final check This bug fix prepends the path of the Singularity installation directory to the PATH environment variable immediately following installation using the naked-singularity.sh install command and the final check to determine if Singularity was installed successfully. The problem here is that not all secure_path in /etc/sudoers may include the Singualrity install directory by default, which can lead this final install test to fail erroneously. This issue was observed when recently testing the naked-singularity.sh install command on CentOS 7 and CentOS 8. Both install processes threw a 'Singularity installation failed!' error even though the installations were successful [1] [2]. No such issue was observed on Ubuntu-based installations [3]. As stated above, the difference in behavior between these OSes was tracked down to what default paths were included in the secure_path variable in the /etc/sudoers file [4] [5] [6]. [1] ... INSTALL CNI PLUGIN /usr/local/libexec/singularity/cni/tuning INSTALL CNI CONFIGURATION FILES DONE make: Leaving directory `/tmp/singularity/builddir' Checking if Singularity was installed successully ... ./naked-singularity.sh: line 200: singularity: command not found ERROR :: Singularity installation failed! ERROR :: Failed to run install command. [centos@singularity-centos7-builder naked-singularity]$ singularity --version singularity version 3.5.3 [centos@singularity-centos7-builder naked-singularity]$ which singularity /usr/local/bin/singularity [centos@singularity-centos7-builder naked-singularity]$ [2] ... INSTALL CNI PLUGIN /usr/local/libexec/singularity/cni/tuning INSTALL CNI CONFIGURATION FILES DONE make: Leaving directory '/tmp/singularity/builddir' Checking if Singularity was installed successully ... ./naked-singularity.sh: line 200: singularity: command not found ERROR :: Singularity installation failed! ERROR :: Failed to run install command. [centos@singularity-centos8-builder naked-singularity]$ singularity --version singularity version 3.5.3 [centos@singularity-centos8-builder naked-singularity]$ which singularity /usr/local/bin/singularity [centos@singularity-centos8-builder naked-singularity]$ [3] ... INSTALL CNI PLUGIN /usr/local/libexec/singularity/cni/tuning INSTALL CNI CONFIGURATION FILES DONE make: Leaving directory '/tmp/singularity/builddir' Checking if Singularity was installed successully ... singularity version 3.5.3 Singularity was installed successfully! ubuntu@singularity-ubuntu1804-builder:~/naked-singularity$ singularity --versionsingularity version 3.5.3 ubuntu@singularity-ubuntu1804-builder:~/naked-singularity$ which singularity /usr/local/bin/singularity ubuntu@singularity-ubuntu1804-builder:~/naked-singularity$ [4] [centos@singularity-centos7-builder naked-singularity]$ sudo cat /etc/sudoers | grep secure_path Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin [centos@singularity-centos7-builder naked-singularity]$ [5] [centos@singularity-centos8-builder naked-singularity]$ sudo cat /etc/sudoers | grep secure_path Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin [centos@singularity-centos8-builder naked-singularity]$ [6] ubuntu@singularity-ubuntu1804-builder:~/naked-singularity$ sudo cat /etc/sudoers | grep secure_path Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin" ubuntu@singularity-ubuntu1804-builder:~/naked-singularity$ --- README.md | 4 ++-- naked-singularity.sh | 13 +++++++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index af45118..48b8e34 100644 --- a/README.md +++ b/README.md @@ -57,8 +57,8 @@ University of California, San Diego ## Version -1.7.5 +1.7.6 ## Last Updated -Thursday, July 22nd, 2021 +Friday, July 23rd, 2021 diff --git a/naked-singularity.sh b/naked-singularity.sh index e9c473d..74edffd 100755 --- a/naked-singularity.sh +++ b/naked-singularity.sh @@ -17,7 +17,7 @@ # # LAST UPDATED # -# Thursday, July 22nd, 2021 +# Friday, July 23rd, 2021 # # ---------------------------------------------------------------------- @@ -196,10 +196,19 @@ naked::install() { wget "https://github.com/hpcng/singularity/releases/download/v${singularity_version}/singularity-${singularity_version}.tar.gz" tar -xf "singularity-${singularity_version}.tar.gz" cd singularity - ./mconfig #--prefix=/opt/singularity + ./mconfig #--prefix=/opt/singularity <- include prefix as used-defined option? make -C ./builddir make -C ./builddir install + # Prepend the path of the install directory of Singularity to PATH + # because not all secure_paths in /etc/sudoers may include it. If it + # is not included as one of the secure_paths by default, then the + # final install test below will fail erroneously, even when + # Singularity has been installed successfully. + # + # https://unix.stackexchange.com/questions/8646/why-are-path-variables-different-when-running-via-sudo-and-su + export PATH="/usr/local/bin:${PATH}" + log::output 'Checking if Singularity was installed successully ...' singularity --version if [[ "${?}" -ne 0 ]]; then -- GitLab