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


22.2 Guix vor der Installation ausführen

Um eine gesunde Arbeitsumgebung zu erhalten, ist es hilfreich, die im lokalen Quellbaum vorgenommenen Änderungen zunächst zu testen, ohne sie tatsächlich zu installieren. So können Sie zwischen Ihrem Endnutzer-„Straßenanzug“ und Ihrem „Faschingskostüm“ unterscheiden.

Zu diesem Zweck können alle Befehlszeilenwerkzeuge auch schon benutzt werden, ohne dass Sie make install laufen lassen. Dazu müssen Sie sich in einer Umgebung befinden, in der alle Abhängigkeiten von Guix verfügbar sind (siehe Erstellung aus dem Git) und darin einfach vor jeden Befehl ./pre-inst-env schreiben (das Skript pre-inst-env befindet sich auf oberster Ebene im Verzeichnis, wo Guix erstellt wird; es wird durch Ausführung von ./bootstrap gefolgt von ./configure erzeugt). Zum Beispiel würden Sie so das Paket hello erstellen lassen, so wie es in der gegenwärtigen Kopie des Guix-Quellbaums definiert wurde (es wird angenommen, dass guix-daemon auf Ihrem System bereits läuft, auch wenn es eine andere Version ist):

$ ./pre-inst-env guix build hello

Entsprechend würden Sie dies eingeben, um eine Guile-Sitzung zu öffnen, die die Guix-Module benutzt:

$ ./pre-inst-env guile -c '(use-modules (guix utils)) (pk (%current-system))'

;;; ("x86_64-linux")

… und auf einer REPL (siehe Interaktiv mit Guix arbeiten):

$ ./pre-inst-env guile
scheme@(guile-user)> ,use(guix)
scheme@(guile-user)> ,use(gnu)
scheme@(guile-user)> (define snakes
                       (fold-packages
                         (lambda (package lst)
                           (if (string-prefix? "python"
                                               (package-name package))
                               (cons package lst)
                               lst))
                         '()))
scheme@(guile-user)> (length snakes)
$1 = 361

Wenn Sie am Daemon und damit zu tun habendem Code hacken oder wenn guix-daemon nicht bereits auf Ihrem System läuft, können Sie ihn direkt aus dem Verzeichnis heraus starten, wo Sie Guix erstellen lassen40:

$ sudo -E ./pre-inst-env guix-daemon --build-users-group=guixbuild

Das pre-inst-env-Skript richtet alle Umgebungsvariablen ein, die nötig sind, um dies zu ermöglichen, einschließlich PATH und GUILE_LOAD_PATH.

Beachten Sie, dass ./pre-inst-env guix pull den lokalen Quellbaum nicht aktualisiert; es aktualisiert lediglich die symbolische Verknüpfung ~/.config/guix/current (siehe guix pull aufrufen). Um Ihren lokalen Quellbaum zu aktualisieren, müssen Sie stattdessen git pull benutzen.

Manchmal, insbesondere wenn Sie das Repository aktualisiert haben, wird beim Ausführen mit ./pre-inst-env eine Nachricht ähnlich wie in diesem Beispiel erscheinen:

;;; note: source file /home/user/projects/guix/guix/progress.scm
;;;       newer than compiled /home/user/projects/guix/guix/progress.go

Es handelt sich lediglich um einen Hinweis und Sie können ihn getrost ignorieren. Los werden Sie die Nachricht, indem Sie make -j4 ausführen. Bis dahin läuft Guile etwas langsamer als sonst, weil es den Quellcode interpretieren muss und nicht auf vorbereitete Guile-Objekt-Dateien (.go) zurückgreifen kann.

Sie können make automatisch ausführen lassen, während Sie am Code arbeiten, nämlich mit watchexec aus dem Paket watchexec. Um zum Beispiel jedes Mal neu zu erstellen, wenn Sie etwas an einer Paketdatei ändern, führen Sie ‘watchexec -w gnu/packages -- make -j4’ aus.


Fußnoten

(40)

Die Befehlszeilenoption -E von sudo stellt sicher, dass GUILE_LOAD_PATH richtig gesetzt wird, damit guix-daemon und die davon benutzten Werkzeuge die von ihnen benötigten Guile-Module finden können.


Nächste: Perfekt eingerichtet, Vorige: Erstellung aus dem Git, Nach oben: Mitwirken   [Inhalt][Index]