Spack Mirrors

Einige Maschinen haben möglicherweise keinen Internetzugang, um Pakete abzurufen. Sie benötigen dann ein lokales Repository mit Tarballs, aus denen sie ihre Dateien abrufen können. Spack unterstützt dies mit Spack Mirrors. Ein Mirror ist eine URL, die auf ein Verzeichnis im lokalen Dateisystem oder auf einem Server verweist und Tarballs für alle Pakete von Spack enthält.

Hier ist ein Beispiel für die Verzeichnisstruktur eines Mirror:

$ tree /path/to/mirror/
/path/to/mirror/
├── autoconf
│   └── autoconf-2.69.tar.gz
├── automake
│   └── automake-1.16.1.tar.gz
├── bzip2
│   └── bzip2-1.0.8.tar.gz
├── diffutils
│   └── diffutils-3.7.tar.xz
├── expat
│   └── expat-2.2.5.tar.bz2
├── gcc
│   └── gcc-9.1.0.tar.xz

spack mirror create

Ihr könnt mit dem Befehl spack mirror create einen Mirror erstellen, vorausgesetzt, ihr befindet euch auf einer Maschine, die auf das Internet zugreifen kann. Der Befehl durchläuft alle Pakete von Spack und lädt die gewünschten herunter.

spack mirror add

Sobald ihr einen Spiegel erstellt habt, müsst ihr Spack darüber informieren. Das ist relativ einfach. Ermittelt zunächst die URL eures Mirrors. Wenn es sich um ein Verzeichnis handelt, könnt ihr eine Datei-URL wie die folgende verwenden:

$ spack mirror add local_filesystem file://$HOME/spack-mirror

Reihenfolge der Mirrors

spack mirror ad fügt eine Zeile hinzu in ~/.spack/mirrors.yaml:

mirrors:
  local_filesystem: file:///home/veit/spack-mirror
  remote_server: https://spack-mirror.cusy.io

Wenn ihr die Reihenfolge ändern möchtet, in der Mirrors nach Paketen durchsucht werden, könnt ihr diese Datei bearbeiten und die Abschnitte neu anordnen: Spack durchsucht diese von oben nach unten bis ein passender Eintrag gefunden wird.

Lokaler Standardcache

Spack erstellt einen Zwischenspeicher für Ressourcen, die im Rahmen von Installationen heruntergeladen werden. Dieser Cache ist ein gültiger Spack-Mirror: er verwendet dieselbe Verzeichnisstruktur und dasselbe Namensschema wie andere Spack-Mirror. Der Mirror wird lokal im Spack-Installationsverzeichnis verwaltet unter ~/spack/var/spack/cache/.