Vorige: , Nach oben: Persönliche Konfiguration   [Inhalt][Index]


13.4 guix home aufrufen

Sobald Sie eine Deklaration Ihrer Persönlichen Umgebung haben (siehe Deklaration der Persönlichen Umgebung), kann diese instanziiert werden, indem Sie den Befehl guix home aufrufen. Zusammengefasst:

guix home OptionenAktion Datei

Datei muss der Name einer Datei sein, in der eine Persönliche Umgebung als home-environment-Objekt steht. Aktion gibt an, wie das Betriebssystem instanziiert wird (abgesehen von unterstützenden Aktionen, wo nichts instanziiert wird). Derzeit werden folgende Werte dafür unterstützt:

search

Verfügbare Definitionen Persönlicher Dienste anzeigen, die zum angegebenen regulären Ausdruck passen, sortiert nach Relevanz:

$ guix home search shell
name: home-shell-profile
location: gnu/home/services/shells.scm:100:2
extends: home-files
description: Create `~/.profile', which is used for environment initialization of POSIX compliant login shells.
+ This service type can be extended with a list of file-like objects.
relevance: 6

name: home-fish
location: gnu/home/services/shells.scm:640:2
extends: home-files home-profile
description: Install and configure Fish, the friendly interactive shell.
relevance: 3

name: home-zsh
location: gnu/home/services/shells.scm:290:2
extends: home-files home-profile
description: Install and configure Zsh.
relevance: 1

name: home-bash
location: gnu/home/services/shells.scm:508:2
extends: home-files home-profile
description: Install and configure GNU Bash.
relevance: 1

…

Wie auch bei guix search wird das Ergebnis im recutils-Format geliefert, so dass es leicht ist, die Ausgabe zu filtern (siehe GNU-recutils-Datenbanken in Handbuch von GNU recutils).

container

Eine Shell in einer isolierten Umgebung – einem Container – öffnen, die die in Datei angegebene Persönliche Umgebung enthält.

Zum Beispiel würden Sie so eine interaktive Shell in einem Container starten, der Ihrer Persönlichen Umgebung entspricht:

guix home container config.scm

In diesem Wegwerf-Container können Sie Dateien nach Herzenslust verändern, denn innerhalb des Containers gemachte Änderungen oder gestartete Prozesse sind alle wieder weg, sobald Sie die Shell verlassen.

Wie auch guix shell hält sich der Container an einige Befehlszeilenoptionen:

--network
-N

Netzwerkzugriff im Container erlauben (was nach Voreinstellung abgeschaltet ist).

--expose=Quelle[=Ziel]
--share=Quelle[=Ziel]

Wie bei guix shell wird das Verzeichnis unter Quelle vom Wirtssystem im Container als Ziel verfügbar gemacht. Bei --expose gibt es nur Lesezugriff und bei --share auch Schreibzugriff darauf (siehe --expose und --share).

Des Weiteren können Sie einen Befehl im Container ausführen lassen, anstatt eine interaktive Shell zu starten. Zum Beispiel würden Sie so überprüfen, welche Shepherd-Dienste im Persönlichen Wegwerf-Container gestartet werden:

guix home container config.scm -- herd status

Den Befehl, der im Container auszuführen ist, geben Sie nach zwei kurzen Strichen -- an.

edit

Die Definition des angegebenen Persönlichen Dienstes bearbeiten oder anzeigen.

Beispielsweise öffnet folgender Befehl Ihren Editor, der mit der Umgebungsvariablen EDITOR gewählt werden kann, an der Stelle, wo der home-mcron-Diensttyp definiert ist:

guix home edit home-mcron
reconfigure

Die in der Datei beschriebene Persönliche Umgebung erstellen und zu ihr wechseln. Wechseln bedeutet, dass das Aktivierungsskript ausgewertet wird und (in der Grundeinstellung) symbolische Verknüpfungen auf Konfigurationsdateien, die anhand der Deklaration der Persönlichen Umgebung im home-environment-Objekt erzeugt werden, in ~ angelegt werden. Wenn die Datei mit demselben Pfad bereits im Persönlichen Verzeichnis existiert, wird sie nach ~/Zeitstempel-guix-home-legacy-configs-backup verschoben. Dabei ist Zeitstempel eine Zeitangabe seit der UNIX-Epoche.

Anmerkung: Es ist sehr zu empfehlen, guix pull einmal auszuführen, bevor Sie guix home reconfigure zum ersten Mal aufrufen (siehe guix pull aufrufen).

Dieser Befehl setzt die in der Datei festgelegte Konfiguration vollständig um. Der Befehl startet die in der Datei angegebenen Shepherd-Dienste, die aktuell nicht laufen; bei aktuell laufenden Diensten wird sichergestellt, dass sie aktualisiert werden, sobald sie das nächste Mal angehalten wurden (z.B. durch herd stop Dienst oder herd restart Dienst).

Dieser Befehl erzeugt eine neue Generation, deren Nummer (wie guix home list-generations sie anzeigt) um eins größer als die der aktuellen Generation ist. Wenn die so nummerierte Generation bereits existiert, wird sie überschrieben. Dieses Verhalten entspricht dem von guix package (siehe guix package aufrufen).

Nach Abschluss wird die neue Persönliche Umgebung unter ~/.guix-home verfügbar gemacht. Das Verzeichnis enthält Provenienz-Metadaten: Dazu gehören die Liste der Kanäle, die benutzt wurden (siehe Kanäle) und die Datei selbst, wenn sie verfügbar ist. Sie können die Provenienzinformationen auf diese Weise ansehen:

guix home describe

Diese Informationen sind nützlich, falls Sie später inspizieren möchten, wie diese spezielle Generation erstellt wurde. Falls die Datei eigenständig ist, also keine anderen Dateien zum Funktionieren braucht, dann können Sie tatsächlich die Generation n Ihrer Persönlichen Umgebung später erneut erstellen mit:

guix time-machine \
  -C /var/guix/profiles/per-user/Benutzer/guix-home-n-link/channels.scm -- \
  home reconfigure \
  /var/guix/profiles/per-user/Benutzer/guix-home-n-link/configuration.scm

Sie können sich das als eine Art eingebaute Versionskontrolle vorstellen! Ihre Persönliche Umgebung ist nicht nur ein binäres Erzeugnis: Es enthält seinen eigenen Quellcode.

switch-generation

Zu einer bestehenden Generation der Persönlichen Umgebung wechseln. Diese Aktion wechselt das Profil der Persönlichen Umgebung atomar auf die angegebene Generation der Persönlichen Umgebung.

Die Zielgeneration kann ausdrücklich über ihre Generationsnummer angegeben werden. Zum Beispiel würde folgender Aufruf einen Wechsel zur Generation 7 der Persönlichen Umgebung bewirken:

guix home switch-generation 7

Die Zielgeneration kann auch relativ zur aktuellen Generation angegeben werden, in der Form +N oder -N, wobei +3 zum Beispiel „3 Generationen weiter als die aktuelle Generation“ bedeuten würde und -1 „1 Generation vor der aktuellen Generation“ hieße. Wenn Sie einen negativen Wert wie -1 angeben, müssen Sie -- der Befehlszeilenoption voranstellen, damit die negative Zahl nicht selbst als Befehlszeilenoption aufgefasst wird. Zum Beispiel:

guix home switch-generation -- -1

Diese Aktion schlägt fehl, wenn die angegebene Generation nicht existiert.

roll-back

Zur vorhergehenden Generation der Persönlichen Umgebung wechseln. Dies ist die Umkehrung von reconfigure und tut genau dasselbe wie switch-generation mit dem Argument -1 aufzurufen.

delete-generations

Generationen der Persönlichen Umgebung löschen, wodurch diese zu Kandidaten für den Müllsammler werden (siehe guix gc aufrufen für Informationen, wie Sie den „Müllsammler“ laufen lassen).

Es funktioniert auf die gleiche Weise wie ‘guix package --delete-generations’ (siehe --delete-generations). Wenn keine Argumente angegeben werden, werden alle Generationen der Persönlichen Umgebung außer der aktuellen gelöscht:

guix home delete-generations

Sie können auch eine Auswahl treffen, welche Generationen Sie löschen möchten. Das folgende Beispiel hat die Löschung aller Generationen der Persönlichen Umgebung zur Folge, die älter als zwei Monate sind:

guix home delete-generations 2m
build

Die Ableitung der Persönlichen Umgebung erstellen, einschließlich aller Konfigurationsdateien und Programme, die benötigt werden. Diese Aktion installiert jedoch nichts davon.

describe

Die aktuelle Generation der Persönlichen Umgebung beschreiben: ihren Dateinamen sowie Provenienzinformationen, falls verfügbar.

Um installierte Pakete im Profil der aktuellen Persönlichen Generation zu finden, wird die Befehlszeilenoption --list-installed angeboten, deren Syntax dieselbe ist wie bei guix package --list-installed (siehe guix package aufrufen). Zum Beispiel zeigt der folgende Befehl eine Tabelle mit allen Paketen, deren Name „emacs“ enthält und die ins Profil der aktuellen Persönlichen Generation installiert sind, an:

guix home describe --list-installed=emacs
list-generations

Eine für Menschen verständliche Zusammenfassung jeder auf der Platte verfügbaren Generation der Persönlichen Umgebung ausgeben. Dies ähnelt der Befehlszeilenoption --list-generations von guix package (siehe guix package aufrufen).

Optional kann ein Muster angegeben werden, was dieselbe Syntax wie guix package --list-generations benutzt, um damit die Liste anzuzeigender Generationen einzuschränken. Zum Beispiel zeigt der folgende Befehl Generationen an, die bis zu 10 Tage alt sind:

guix home list-generations 10d

Sie können auch die Befehlszeilenoption --list-installed angeben mit derselben Syntax wie in guix home describe. Das kann nützlich sein, wenn Sie herausfinden möchten, wann ein bestimmtes Paket zum Persönlichen Profil hinzukam.

import

Eine Deklaration der Persönlichen Umgebung anhand der Pakete im Standardprofil und der Konfigurationsdateien im Persönlichen Verzeichnis des Benutzers anlegen. Dabei werden die Konfigurationsdateien in das angegebene Verzeichnis kopiert und eine home-configuration.scm wird darin mit dem, was die Persönliche Umgebung ausmacht, gefüllt. Beachten Sie, dass guix home import nicht alle Persönlichen Dienste, die es gibt, unterstützt (siehe Persönliche Dienste).

$ guix home import ~/guix-config
guix home: Alle Konfigurationsdateien für die Persönliche Umgebung wurden in „/home/alice/guix-config“ geschrieben

Es gibt noch mehr zu sehen! Mit guix home können Sie folgende Unterbefehle benutzen, um zu visualisieren, wie die Dienste Ihrer Persönlichen Umgebung voneinander abhängen:

extension-graph

Auf die Standardausgabe den Diensterweiterungsgraphen der in der Datei definierten Persönlichen Umgebung ausgeben (siehe Dienstkompositionen für mehr Informationen zu Diensterweiterungen). Vorgegeben ist, ihn im Dot-/Graphviz-Format auszugeben, aber Sie können ein anderes Format mit --graph-backend auswählen, genau wie bei guix graph (siehe --backend):

Der Befehl:

guix home extension-graph Datei | xdot -

zeigt die Erweiterungsrelation unter Diensten an.

shepherd-graph

Auf die Standardausgabe den Abhängigkeitsgraphen der Shepherd-Dienste der in der Datei definierten Persönlichen Umgebung ausgeben. Siehe Shepherd-Dienste für mehr Informationen sowie einen Beispielgraphen.

Auch hier wird nach Vorgabe die Ausgabe im Dot-/Graphviz-Format sein, aber Sie können ein anderes Format mit --graph-backend auswählen.

Unter den Optionen können beliebige gemeinsame Erstellungsoptionen aufgeführt werden (siehe Gemeinsame Erstellungsoptionen). Des Weiteren kann als Optionen Folgendes angegeben werden:

--expression=Ausdruck
-e Ausdruck

Als Konfiguration der Persönlichen Umgebung das home-environment-Objekt betrachten, zu dem der Ausdruck ausgewertet wird. Dies ist eine Alternative dazu, die Konfiguration in einer Datei festzulegen.

--allow-downgrades

An guix home reconfigure die Anweisung erteilen, Systemherabstufungen zuzulassen.

Genau wie bei guix system verhindert guix home reconfigure standardmäßig, dass Sie Ihre Persönliche Umgebung herabstufen auf ältere Versionen oder auf Versionen, die mit den Kanalversionen Ihrer vorigen Persönlichen Umgebung (guix home describe zeigt diese) nicht zusammenhängen. Sie können --allow-downgrades angeben, um die Überprüfung zu umgehen, und tragen dann selbst die Schuld, wenn Sie Ihre Persönliche Umgebung herabstufen. Vorsicht ist geboten!


Vorige: Persönliche Dienste, Nach oben: Persönliche Konfiguration   [Inhalt][Index]