Next: , Up: Profily Guix v praxi   [Contents][Index]


6.1.1 Základné použitie balíkospisov

Guixovský profil možno nastaviť pomocou balíkospisu. Balíkospis je kúsok kódu určujúci množinu balíkov, ktorú chcete zahrnúť do vášho profilu; vyzerá takto:

(specifications->manifest
  '("balik-1"
    ;; Vydanie 1.3 balíka balik-2.
    "balik-2@1.3"
    ;; Výstup „lib“ balíka balik-3.
    "balik-3:lib"
    ; ...
    "balik-N"))

See Writing Manifests in GNU Guix Reference Manual pre viac podrobností o skladbe.

Môžeme si vytvoriť balíkospis pre každý profil a nainštalovať ich nasledovne:

GUIX_DOPLNKOVE_PROFILY=$HOME/.guix-extra-profiles
mkdir -p "$GUIX_DOPLNKOVE_PROFILY"/moj-projekt # ak ešte nejestvuje
guix package --manifest=/cesta/ku/guix-balikospis-mojho-projektu.scm \
 --profile="$GUIX_DOPLNKOVE_PROFILY"/moj-projekt/moj-projekt

Tu sme si nastavili premennú s ľubovoľne zvoleným názvom ‘GUIX_DOPLNKOVE_PROFILY’ odkazujúcu na priečinok, do ktorého si uložíme naše profily vrámci tohto článku.

Dáva zmysel uložiť si všetky svoje profily do jedného priečinka, v ktorom má každý z nich pridelený osobitný podpriečinok. Takto bude každý podpriečinok obsahovať symbolické odkazy presne jedného profilu. Okrem toho, bude ľahké získať zoznam profilov v hociktorom programovacom jazyku (napr. skript shellu) pomocou jednoduchej slučky prechádzajúcej podpriečinkami v ‘GUIX_DOPLNKOVE_PROFILY’.

Všimnite si, že slučkou tiež možno prechádzať výstup

guix package --list-profiles

aj keď budete pravdepodobne musieť vynechať ~/.config/guix/current.

Pre nastavenie všetkých profilov po prihlásení, pridajte toto do vášho ~/.bash_profile (alebo podobného súboru):

for i in $GUIX_DOPLNKOVE_PROFILY/*; do
  profile=$i/$(basename "$i")
  if [ -f "$profile"/etc/profile ]; then
    GUIX_PROFILE="$profile"
    . "$GUIX_PROFILE"/etc/profile
  fi
  unset profile
done

Poznámka pre používateľov systému Guix: horeuvedené odráža to, ako sa váš predvolený profil ~/.guix-profile nastavuje z /etc/profile, ktorý je predvolene načítaný vrámci ~/.bashrc.

Môžete sa samozrejme rozhodnúť, že z nich načítate len niektoré:

for i in "$GUIX_DOPLNKOVE_PROFILY"/moj-projekt-1 "$GUIX_DOPLNKOVE_PROFILY"/moj-projekt-2; do
  profile=$i/$(basename "$i")
  if [ -f "$profile"/etc/profile ]; then
    GUIX_PROFILE="$profile"
    . "$GUIX_PROFILE"/etc/profile
  fi
  unset profile
done

Keď je profil vypnutý, je jednoduché ho zapnúť vo vyhradenom shelle bez „znečistenia“ zvyšku sedenia:

GUIX_PROFILE="cesta/k/moj-projekt" ; . "$GUIX_PROFILE"/etc/profile

Kľúčovým krok pri zapnutí profilu je načítanie jeho súboru ‘etc/profile’. Tento súbor obsahuje kód shellu, ktorý nastaví tie správne premenné prostredia potrebné pre spojazdnenie programov v profile. Je vytvoreným samotným Guixom a určený na načítanie pomocou príkazu source. Obsahuje rovnaké premenné ako tie, ktoré by ste získali vykonaním:

guix package --search-paths=prefix --profile=$moj_profil"

Viď voľby príkazu v Invoking guix package in GNU Guix Reference Manual.

Profil môžete aktualizovať opätovnou inštaláciou balíkospisu:

guix package -m /cesta/ku/guix-balikospis-mojho-projektu.scm \
 -p "$GUIX_DOPLNKOVE_PROFILY"/moj-projekt/moj-projekt

Ak chcete aktualizovať všetky profily, môžete ich jednoducho prechádzať slučkou. Napríklad, predpokladajúc, že váš balíkospis je uložený v ~/.guix-manifests/guix-$profil-balikospis.scm, kde ‘$profil’ je názov profilu (napr. „projekt1“), pomocou shellu môžete vykonať nasledovné:

for profile in "$GUIX_DOPLNKOVE_PROFILY"/*; do
  guix package --profile="$profil" \
   --manifest="$HOME/.guix-manifests/guix-$profil-balikospis.scm"
done

Každý profil má svoje vlastné pokolenia:

guix package -p "$GUIX_DOPLNKOVE_PROFILY"/moj-projekt/moj-projekt --list-generations

Môžete sa vrátiť ku ktorémukoľvek pokoleniu daného profilu:

guix package -p "$GUIX_DOPLNKOVE_PROFILY"/moj-projekt/moj-projekt --switch-generations=17

Konečne, ak chcete prepnúť na iný profil bez zdedenia súčasné prostredia, môžete ho zapnúť v prázdnom shelle:

env -i $(which bash) --login --noprofile --norc
. moj-projekt/etc/profile

Next: Požadované balíky, Up: Profily Guix v praxi   [Contents][Index]