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


2.1.2.2 ‘GUIX_PACKAGE_PATH

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: , Vorige: , Nach oben: Herangehensweisen   [Inhalt][Index]