Next: Požadované balíky, Up: Profily Guix v praxi [Contents][Index]
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]