Vorige: guix repl
aufrufen, Nach oben: Programmierschnittstelle [Inhalt][Index]
Mit dem Befehl guix repl
finden Sie sich in einer netten und
freundlichen REPL wieder (das steht für Read-Eval-Print Loop, deutsch
Lese-Auswerten-Schreiben-Schleife) (siehe guix repl
aufrufen). Wenn
Sie mit Guix programmieren möchten – also eigene Pakete definieren,
Manifeste schreiben, Dienste für Guix System oder Guix Home definieren und
so –, dann wird Ihnen sicher gefallen, dass Sie Ihre Ideen auf der REPL
ausprobieren können.
Wenn Sie Emacs benutzen, eignet sich dafür Geiser am meisten (siehe Perfekt eingerichtet), aber Emacs zu benutzen ist nicht unbedingt erforderlich, um
Spaß an der REPL zu haben. Beim Verwenden von guix repl
oder
guile
auf dem Terminal raten wir dazu, dass Sie Readline
aktivieren, um Autovervollständigung zu genießen, und Colorized aktivieren
für farbige Ausgaben. Führen Sie dazu dies aus:
guix install guile guile-readline guile-colorized
… und legen Sie dann eine Datei .guile in Ihrem Persönlichen Verzeichnis („Home“-Verzeichnis) an mit diesem Inhalt:
(use-modules (ice-9 readline) (ice-9 colorized)) (activate-readline) (activate-colorized)
Auf der REPL können Sie Scheme-Code auswerten lassen. Sie tippen also einen Scheme-Ausdruck nach der Eingabeaufforderung und schon zeigt die REPL, zu was er ausgewertet wird:
$ guix repl scheme@(guix-user)> (+ 2 3) $1 = 5 scheme@(guix-user)> (string-append "a" "b") $2 = "ab"
Interessant wird es, wenn Sie auf der REPL anfangen, mit Guix
herumzubasteln. Dazu „importieren“ Sie zunächst das Modul (guix)
,
damit Sie Zugriff auf den Hauptteil der Programmierschnittstelle haben, und
vielleicht wollen Sie auch noch andere nützliche Guix-Module
importieren. Sie könnten (use-modules (guix))
eintippen, denn es ist
gültiger Scheme-Code zum Importieren eines Moduls (siehe Using Guile
Modules in Referenzhandbuch zu GNU Guile), aber auf der REPL können
Sie den Befehl use
als Kurzschreibweise einsetzen (siehe
REPL Commands in Referenzhandbuch zu GNU Guile):
scheme@(guix-user)> ,use (guix) scheme@(guix-user)> ,use (gnu packages base)
Beachten Sie, dass am Anfang jedes REPL-Befehls ein führendes Komma stehen
muss. Der Grund ist, dass ein REPL-Befehl wie use
eben kein
gültiger Scheme-Code ist; er wird von der REPL gesondert interpretiert.
Durch Guix wird die Guile-REPL um zusätzliche Befehle erweitert, die dort
praktisch sind. Einer davon, der Befehl build
, ist hier nützlich: Mit
ihm wird sichergestellt, dass das angegebene dateiartige Objekt erstellt
wurde; wenn nicht, wird es erstellt. In jedem Fall wird der Dateiname jeder
Ausgabe der Erstellung zurückgeliefert. Im folgenden Beispiel erstellen wir
die Pakete coreutils
und grep
sowie eine als
computed-file
angegebene Datei (siehe computed-file
), um sogleich mit der Prozedur scandir
aufzulisten, was für Dateien in Grep im Verzeichnis /bin
enthalten
sind:
scheme@(guix-user)> ,build coreutils $1 = "/gnu/store/…-coreutils-8.32-debug" $2 = "/gnu/store/…-coreutils-8.32" scheme@(guix-user)> ,build grep $3 = "/gnu/store/…-grep-3.6" scheme@(guix-user)> ,build (computed-file "x" #~(mkdir #$output)) /gnu/store/…-x.drv wird erstellt … $4 = "/gnu/store/…-x" scheme@(guix-user)> ,use(ice-9 ftw) scheme@(guix-user)> (scandir (string-append $3 "/bin")) $5 = ("." ".." "egrep" "fgrep" "grep")
Will man die einzelnen Schritte von Guix nachvollziehen, eignet sich der
Befehl lower
: Er nimmt ein dateiartiges Objekt, um es zu einer
Ableitung oder einem Store-Objekt „herunterzubrechen“ (siehe
Ableitungen):
scheme@(guix-user)> ,lower grep $6 = #<derivation /gnu/store/…-grep-3.6.drv => /gnu/store/…-grep-3.6 7f0e639115f0> scheme@(guix-user)> ,lower (plain-file "x" "Hallo!") $7 = "/gnu/store/…-x"
Die vollständige Liste der REPL-Befehle bekommen Sie zu sehen, wenn Sie
,help guix
eingeben. Hier eine Referenz:
Das Objekt herunterbrechen und erstellen, wenn es noch nicht erstellt ist. Als Ergebnis zurückgeliefert wird der Dateiname jeder Ausgabe.
Das Objekt zu einer Ausgabe oder einem Dateinamen im Store herunterbrechen und diesen zurückliefern.
Legt Stufe als die Ausführlichkeitsstufe für Erstellungen fest.
Das ist das Gleiche wie die Befehlszeilenoption --verbosity (siehe Gemeinsame Erstellungsoptionen): Stufe 0 zeigt gar nichts an, Stufe 1 nur Ereignisse bei der Erstellung und auf höheren Stufen bekommen Sie Erstellungsprotokolle angezeigt.
Den Ausdruck, einen monadischen Ausdruck, durch die Store-Monade laufen lassen. Siehe Die Store-Monade für mehr Erklärungen.
Damit betreten Sie eine neue REPL, die monadische Ausdrücke auswerten kann
(siehe Die Store-Monade). Sie können diese „innere“ REPL verlassen,
indem Sie ,q
eintippen.
Vorige: guix repl
aufrufen, Nach oben: Programmierschnittstelle [Inhalt][Index]