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


2.1.2.2 Kanály

Guix a jeho zbierku balíkov možno rozšíriť pomocou kanálov. Kanál je Git repozitár, či už verejný alebo nie, obsahujúci .scm súbory poskytujúce balíky (see Defining Packages in GNU Guix Reference Manual) alebo služby (see Defining Services in GNU Guix Reference Manual).

Ako vytvoriť kanál? Najprv vytvorte priečinok, ktorý bude obsahovať vaše .scm súbory, napríklad ~/moj-kanal:

mkdir ~/moj-kanal

Predpokladajme, že chcete pridať balík ‘my-hello’, s ktorým sme sa už stretli. Bude však potrebovať 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ý.

A teraz, ako možno tento balík zviditeľniť pre guix príkazy, aby ste ho mohli vyskúšať? Musíte pridať priečinok ~/moj-kanal k prehľadávaným cestám pomocou voľby -L ako v týchto príkladoch:

guix show -L ~/moj-kanal my-hello
guix build -L ~/moj-kanal my-hello

Posledným krokom je pretvoriť ~/moj-kanal na ozajstný kanál sprístupňujúc tak vašu zbierku balíkov akémukoľvek guix príkazu. V prvom rade musíte z tohto priečinka spraviť Git repozitár:

cd ~/moj-kanal
git init
git add my-hello.scm
git commit -m "Prvá úprava môjho kanála."

A to je všetko, práve ste vytvorili kanál! Teraz už môžete tento kanál pridať do vášho nastavenia kanálov v ~/.config/guix/channels.scm (see Specifying Additional Channels in GNU Guix Reference Manual). Predpokladajúc, že si váš kanál nateraz ponecháte vo vašom počítači, bude súbor channels.scm vyzerať asi takto:

(append (list (channel
                (name 'moj-kanal)
                (url (string-append "file://" (getenv "HOME")
                                    "/moj-kanal"))))
        %default-channels)

Nabudúce, keď spustíte guix pull, sa váš kanál vyzdvihne a balíky, ktoré obsahuje sa sprístupnia pre všetky guix príkazy, a to aj bez použitia voľby -L. Príkaz guix describe potvrdí, že Guix vskutku používa aj kanál my-channel, aj kanál guix.

Viď Creating a Channel in GNU Guix Reference Manual, pre viac podrobností.


Next: Priamy zásah do git repozitára, Previous: Miestny súbor, Up: Nastavenie   [Contents][Index]