Singularity unter Linux auf CODE-DE-Lab installieren

Singularity ist eine Open-Source-Anwendung zum Erstellen und Ausführen von Softwarecontainern auf gemeinsam genutzten Linux-Rechenclustern. Singularity-Umgebungen verhalten sich unabhängig von der verwendeten Hardwareplattform gleich und eignen sich dadurch für High Performance Computing.

Singularity ist in Go geschrieben. Installieren Sie deshalb zuerst Go.

Was wir behandeln werden

  • Singularity auf Debian-basierten Systemen installieren

  • Singularity auf CentOS/RHEL-Systemen installieren

  • Die Go-Umgebung einrichten

  • Golangci-lint installieren

  • Singularity aus dem Quellcode erstellen

  • SingularityCE, die Community Edition von Singularity, kompilieren

Voraussetzungen

Nr. 1 Konto

Sie benötigen ein CODE-DE-Lab Konto mit Zugriff auf Horizon: https://tenant-manager.code-de.org.

Nr. 2 Zugriff auf Ubuntu oder CentOS Linux

Verwenden Sie für die Installation und Ausführung von Singularity eine vorhandene Linux-Instanz oder erstellen Sie eine neue nach einer dieser Anleitungen:

Dieser Artikel wurde für virtuelle Maschinen mit Ubuntu 20.04 und CentOS 7 verfasst.

Singularity auf Debian-basierten Systemen installieren

Installieren Sie die Entwicklungswerkzeuge und Bibliotheken auf Ihrem Host.

sudo apt-get update && \
sudo apt-get install -y build-essential \
libseccomp-dev libglib2.0-dev pkg-config squashfs-tools cryptsetup

Laden Sie das Golang-Archiv nach /tmp herunter und entpacken Sie es anschließend nach /usr/local.

export VERSION=1.20.1 OS=linux ARCH=amd64

wget -O /tmp/go${VERSION}.${OS}-${ARCH}.tar.gz https://dl.google.com/go/go${VERSION}.${OS}-${ARCH}.tar.gz && \
sudo tar -C /usr/local -xzf /tmp/go${VERSION}.${OS}-${ARCH}.tar.gz

Singularity auf CentOS/RHEL-Systemen installieren

Installieren Sie die benötigten Bibliotheken und die Programmiersprache Go:

sudo yum groupinstall -y 'Development Tools' && \
sudo yum install -y epel-release && \
sudo yum install -y golang libseccomp-devel \
glib2-devel squashfs-tools cryptsetup

Die Go-Umgebung einrichten

Dieser Schritt gilt für beide Arten von Linux-Distributionen:

echo 'export GOPATH=${HOME}/go' >> ~/.bashrc && \
echo 'export PATH=/usr/local/go/bin:${PATH}:${GOPATH}/bin' >> ~/.bashrc && \
source ~/.bashrc

Golangci-lint installieren

Linting erkennt typische Fehler im Programmcode. Golangci-lint bündelt gebräuchliche Linter für Go in einer ausführbaren Datei. Installieren Sie das Werkzeug mit folgendem Befehl:

curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin

Singularity erstellen

Die folgenden Befehle erstellen Singularity aus dem Quellcode:

mkdir -p ${GOPATH}/src/github.com/sylabs && \
cd ${GOPATH}/src/github.com/sylabs && \
git clone --recursive https://github.com/sylabs/singularity.git && \
cd singularity

SingularityCE kompilieren

Erstellen Sie SingularityCE mit den folgenden Befehlen:

cd ${GOPATH}/src/github.com/sylabs/singularity && \
./mconfig && \
cd ./builddir && \
make && \
sudo make install

Prüfen Sie die Version von SingularityCE:

singularity version

Testen Sie die Installation:

singularity run library://godlovedc/funny/lolcow

Die Ausgabe sollte etwa so aussehen:

INFO:    Downloading library image
 _______________________________________
/ Excellent day for putting Slinkies on \
\ an escalator.                         /
 -----------------------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

Nächste Schritte

Für die weitergehende Arbeit mit Singularity können Kenntnisse in Docker hilfreich sein:

Still need help?
If this article does not answer all of your questions, the support team will help you.
Contact support