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.

To that end, all the command-line tools can be used even if you have not run make install. To do that, you first need to have an environment with all the dependencies available (siehe Erstellung aus dem Git), and then simply prefix each command with ./pre-inst-env (the pre-inst-env script lives in the top build tree of Guix; siehe Erstellung aus dem Git to generate it). As an example, here is how you would build the hello package as defined in your working tree (this assumes guix-daemon is already running on your system; it’s OK if it’s a different version):

$ ./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 lassen41:

$ 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

(41)

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]