Next: , Previous: , Up: Nastavenie   [Contents][Index]


2.1.2.2 ‘GUIX_PACKAGE_PATH

Upozornenie: Počínajúc Guix 0.16 sú Guix channels uprednostňovaným spôsobom práce a nahrádzajú použitie ‘GUIX_PACKAGE_PATH’. Viď nasledujúci oddiel.

Uvádzanie súboru so zadaním balíka v príkazovom riadku namiesto použitia guix package --install my-hello, ako v prípade oficiálnych balíkov, môže byť zdĺhavé.

Guix umožňuje zjednodušiť túto úlohu pridaním toľkých „priečinkov zadaní balíkov“, koľkých chcete.

Vytvorte priečinok, povedzme ~/guix-packages a pridajte cestu k nemu do premennej prostredia ‘GUIX_PACKAGE_PATH’:

$ mkdir ~/guix-packages
$ export GUIX_PACKAGE_PATH=~/guix-packages

Pri pridávaní viacerých priečinkov oddeľte jednotlivé cesty k nim dvojbodkou (:).

Avšak, náš predchádzajúci príklad ‘my-hello’ vyžaduje niekoľko úprav:

(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+)))

Všimnite si, že sme tentokrát zadanie balíka uložili do verejnej premennej my-hello pomocou define-public, na ktorú je možné odkazovať, medzi iným aj ako na závislosť v rámci zadania nejakého ďalšieho balíka.

Ak spustíte guix package --install-from-file=my-hello.scm s použitím vyššie uvedeného súboru, tak príkaz zlyhá, pretože posledný výraz, define-public, nevracia balík. Ak aj napriek tomu chcete v tomto prípade použiť define-public, uistite sa, že súbor končí vykonaním my-hello:

; ...
(define-public my-hello
  ; ...
  )

my-hello

Tento posledný príklad nie je veľmi bežný.

Teraz by už mal byť ‘my-hello’ súčasťou zbierky balíkov ako všetky ostatné oficiálne balíky. Môžete si to overiť pomocou:

$ guix package --show=my-hello

Next: , Previous: , Up: Nastavenie   [Contents][Index]