Nächste: Guix-Kanäle, Vorige: Lokale Datei, Nach oben: Herangehensweisen [Inhalt][Index]
Anmerkung: Seit Guix 0.16 sind die vielseitigeren Kanäle von Guix die bevorzugte Wahl und sie lösen den ‘GUIX_PACKAGE_PATH’ ab. Siehe den nächsten Abschnitt.
Es kann mühsam sein, die Datei auf der Befehlszeile anzugeben, statt einfach
guix package --install my-hello
aufzurufen, wie man es bei den
offiziellen Paketen tun würde.
Guix ermöglicht es, den Prozess zu optimieren, indem man so viele „Paketdeklarationsverzeichnisse“, wie man will, hinzufügt.
Erzeugen Sie ein Verzeichnis, beispielsweise ~/guix-packages, und
fügen Sie es zur Umgebungsvariablen GUIX_PACKAGE_PATH
hinzu:
$ mkdir ~/guix-packages $ export GUIX_PACKAGE_PATH=~/guix-packages
Um mehrere Verzeichnisse hinzuzufügen, trennen Sie diese ab durch einen
Doppelpunkt (:
).
Unser ‘my-hello’ von vorher braucht zudem ein paar Anpassungen:
(define-module (my-hello) #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix build-system gnu) #:use-module (guix download)) (define-public my-hello (package (name "my-hello") (version "2.10") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/hello/hello-" version ".tar.gz")) (sha256 (base32 "0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i")))) (build-system gnu-build-system) (synopsis "Hello, Guix world: An example custom Guix package") (description "GNU Hello prints the message \"Hello, world!\" and then exits. It serves as an example of standard GNU coding practices. As such, it supports command-line arguments, multiple languages, and so on.") (home-page "https://www.gnu.org/software/hello/") (license gpl3+)))
Beachten Sie, dass wir den Paketwert einer exportierten Variablen mit
define-public
zugewiesen haben. Das bedeutet, das Paket wird einer
Variablen my-hello
zugewiesen, damit darauf verwiesen werden
kann. Unter anderem kann es dadurch als Abhängigkeit anderer Pakete
verwendet werden.
Wenn Sie guix package --install-from-file=my-hello.scm
auf der obigen
Datei aufrufen, geht es schief, weil der letzte Ausdruck,
define-public
, kein Paket zurückliefert. Wenn Sie trotzdem
define-public
für jene Herangehensweise verwenden möchten, stellen
Sie sicher, dass am Ende der Datei eine Auswertung von my-hello
steht:
; … (define-public my-hello ; … ) my-hello
Meistens tut man das aber nicht.
‘my-hello’ sollte nun Teil der Paketsammlung sein, genau wie all die anderen, offiziellen Pakete. Sie können das so ausprobieren:
$ guix package --show=my-hello
Nächste: Guix-Kanäle, Vorige: Lokale Datei, Nach oben: Herangehensweisen [Inhalt][Index]