Wie installiert man Singularity unter Linux auf CODE-DE FRA1-1?

Singularity ist eine Open-Source-Anwendung zur Erstellung und Ausführung von Software-Containern auf gemeinsam genutzten Linux-basierten Rechenclustern. Singularity-Umgebungen verhalten sich auf allen Hardware-Plattformen gleich und ebnen so den Weg für High-Performance-Computing.

Singularity ist in Go geschrieben, Sie müssen also zuerst Go installieren.

Was wir behandeln werden

  • Installation von Singularity auf Debian-basierten Systemen

  • Installation von Singularity auf CentOS/RHEL-Systemen

  • Einrichten der Go-Umgebung

  • Installation von Golangci-lint

  • Singularity aus dem Quellcode bauen

  • SingularityCE, die Community-Edition von Singularity, kompilieren

Voraussetzungen

Nr. 1 Konto

Sie benötigen ein CODE-DE Konto mit Zugriff auf die Horizon-Schnittstelle: https://administration.code-de.org/login .

Nr. 2 Zugriff auf eine Ubuntu oder CentOS Linux-VM

Um Singularity zu installieren und auszuführen, verwenden Sie eine vorhandene Linux-Instanz oder starten Sie eine neue, wie hier beschrieben

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

Installation von Singularity auf Debian-basierten Systemen

Installieren Sie Entwicklungswerkzeuge und Bibliotheken auf Ihrem Rechner.

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 dann 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

Auf CentOS/RHEL:

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

Installation von Singularity auf CentOS/RHEL Systemen

Installieren Sie sowohl die benötigten Bibliotheken als auch die Sprache 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

Richten Sie Ihre Umgebung für Go ein

Dieser Schritt gilt für beide Linux-Distributionen:

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

Installieren Sie Golangci-lint

Linting ist eine Methode, um häufige Fehler in einer Programmiersprache zu finden. Golangci-lint bündelt gängige Linters in einer einzigen Binärdatei für die Sprache Go. Hier wird beschrieben, wie man es installiert:

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

Generieren Sie Singularity

Mit den folgenden Befehlen wird Singularity aus dem Quellcode erstellt:

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

Kompilieren von SingularityCE

Bemerkung

Die SingularityCE-Umgebung ist auf dem OSGeo Live-Image vorinstalliert

Erstellen Sie SingularityCE mit den folgenden Befehlen:

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

Jetzt können Sie Ihre SingularityCE-Version überprüfen, indem Sie Folgendes ausführen:

singularity version

Testen Sie die Installation:

singularity run library://godlovedc/funny/lolcow

Sie sollten etwa Folgendes sehen:

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

Was als nächstes zu tun ist

Wenn Sie Singularity nutzen wollen, könnte Sie möglicherweise auch interessieren, wie man Docker benutzt: