Nächste: , Vorige: , Nach oben: Paketverwaltung   [Inhalt][Index]


6.7 guix time-machine aufrufen

Der Befehl guix time-machine erleichtert den Zugang zu anderen Versionen von Guix. Damit können ältere Versionen von Paketen installiert werden oder eine Berechnung in einer identischen Umgebung reproduziert werden. Die zu benutzende Guix-Version wird über eine Commit-Angabe oder eine Kanalbeschreibungsdatei, wie sie durch guix describe erzeugt werden kann, festgelegt (siehe Aufruf von guix describe).

Sagen wir, Sie würden gerne in der Zeit zurückreisen zu den Tagen um November 2020, als die Version 1.2.0 von Guix veröffentlicht worden ist, und außerdem möchten Sie nach Ihrer Ankunft den damaligen guile-Befehl ausführen:

guix time-machine --commit=v1.2.0 -- \
  environment -C --ad-hoc guile -- guile

Mit obigem Befehl wird Guix 1.2.0 geladen und daraufhin dessen Befehl guix environment ausgeführt, um eine Umgebung, in einen Container verpackt, zu betreten, wo dann guile gestartet wird (guix environment ist mittlerweile Teil von guix shell, siehe Aufruf von guix shell). Es ist so, als würden Sie einen DeLorean fahren12! Der erste Aufruf von guix time-machine kann lange dauern, weil vielleicht viele Pakete heruntergeladen oder sogar erstellt werden müssen, aber das Ergebnis bleibt in einem Zwischenspeicher und danach geschehen Befehle für denselben Commit fast sofort.

Anmerkung: The history of Guix is immutable and guix time-machine provides the exact same software as they are in a specific Guix revision. Naturally, no security fixes are provided for old versions of Guix or its channels. A careless use of guix time-machine opens the door to security vulnerabilities. Siehe --allow-downgrades.

Die allgemeine Syntax lautet:

guix time-machine Optionen… -- Befehl Argument

Dabei werden der Befehl und jedes Argument… unverändert an den guix-Befehl der angegebenen Version übergeben. Die Optionen, die die Version definieren, sind dieselben wie bei guix pull (siehe Aufruf von guix pull):

--url=URL
--commit=Commit
--branch=Branch

Den guix-Kanal von der angegebenen URL benutzen, für den angegebenen Commit (eine gültige Commit-ID, dargestellt als hexadezimale Zeichenkette oder Namen eines Git-Tags) oder Branch.

--channels=Datei
-C Datei

Die Liste der Kanäle aus der angegebenen Datei auslesen. Die Datei muss Scheme-Code enthalten, der zu einer Liste von Kanalobjekten ausgewertet wird. Siehe Kanäle für nähere Informationen.

Wie bei guix pull wird in Ermangelung anderer Optionen der letzte Commit auf dem master-Branch benutzt. Mit dem Befehl

guix time-machine -- build hello

wird dementsprechend das Paket hello erstellt, so wie es auf dem master-Branch definiert ist, was in der Regel einer neueren Guix-Version entspricht als der, die Sie installiert haben. Zeitreisen funktionieren also in beide Richtungen!

Beachten Sie, dass durch guix time-machine Erstellungen von Kanälen und deren Abhängigkeiten ausgelöst werden können, welche durch die gemeinsamen Erstellungsoptionen gesteuert werden können (siehe Gemeinsame Erstellungsoptionen).


Fußnoten

(12)

Wenn Sie DeLorean nicht kennen, sollten Sie eine Zeitreise in die 1980er in Betracht ziehen.


Nächste: , Vorige: , Nach oben: Paketverwaltung   [Inhalt][Index]