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:
Wie man eine Linux-VM erstellt und von einer Linux-Kommandozeile auf CODE-DE-Lab zugreift
Wie man eine Linux-VM erstellt und vom Windows-Desktop aus darauf zugreift auf CODE-DE-Lab
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: