:B~ Gestió d'una configuració

1~managing-a-configuration Gestió d'una configuració

En aquest capítol s'explica com gestionar una configuració d'un sistema en
viu des de la seva creació inicial, a través de revisions i versions
successives de tant el programari live-build com de la imatge en viu en si
mateixa.

2~ Gestionar canvis en la configuració

Les configuracions de sistemes en viu poques vegades són perfectes al primer
intent. Passar opcions a #{lb config}# des de la línea d'ordres pot estar be
per a construir una imatge una vegada, però és més típic revisar aquestes
opcions i construir de nou fins que se'n estigui satisfet. Per a donar
suport a aquests canvis, es poden utilitzar scripts auto que assegurin que
la configuració es manté en un estat consistent.

3~ Per què utilitzar scripts auto? Què fan?

L'ordre #{lb config}# emmagatzema les opcions que se li passen als fitxers
de #{config/*}#, juntament amb moltes altres opcions que estan establertes
als valors per defecte. Si s'executa un cop més, #{lb config}# no es
restablirà cap de les opcios dependents basades en les opcions
inicials. Així, per exemple, si s'executa de nou #{lb config}# amb un nou
valor per a #{--binary-images}#, totes les opcions que en depenen que es van
omplir per al tipus de imatge per defecte ja no poden funcionar amb la
nova. Aquests fitxers no estan destinats a ser llegits o
editats. S'emmagatzemen els valors de més de cent opcions, i ningú pot veure
les opcions que s'han especificat realment. I finalment, si s'executa #{lb
config}# i a continuació s'actualitza live-build i el nom d'una opció
canvia, #{config/*}# encara contindrà les variables de l'opció vella que ja
no són vàlides.

 Per totes aquestes raons, els scripts #{auto/*}# ens fan la vida més
fàcil. Són simples embolcalls per les ordres #{lb config}#, #{lb build}# i
#{lb clean}# dissenyats per ajudar a gestionar una configuració. Només cal
crear un script #{auto/config}# que contingui totes les opcions que es
desitgin per a #{lb config}#, i un #{auto/clean}# que elimini els fitxers
que continguin diversos valors de variables de configuració, i el script
#{auto/build}# guarda un #{build.log}# de cada construcció. Cada vegada que
s'executi l'ordre #{lb}# corresponent, aquests fitxers seran executats
automàticament. L'ús d'aquests scripts assegurarà que la configuració sigui
més senzilla de llegir i que guardi una coherència interna d'una reversió a
una altra. A més a més serà més fàcil identificar i solucionar les opcions
que s'han de canviar al actualitzar d'una versió de live-build a la següent
després de llegir la documentació.

3~ Utilitzar scripts auto d'exemple

Per a més comoditat, live-build ve amb uns scripts d'exemple per a copiar i
editar. Iniciar una nova configuració per defecte, i a continuació, copiar
els exemples:

code{

 $ mkdir mylive && cd mylive && lb config
 $ mkdir auto
 $ cp /usr/share/doc/live-build/examples/auto/* auto/

}code

Editar #{auto/config}#, afegint les opcions més adients. Per exemple:

code{

 #!/bin/sh
 lb config noauto \
     --architectures i386 \
     --linux-flavours 686-pae \
     --binary-images hdd \
     --mirror-bootstrap http://ftp.ch.debian.org/debian/ \
     --mirror-binary http://ftp.ch.debian.org/debian/ \
     "${@}"

}code

Ara, cada vegada que s'utilitzi #{lb config}#, #{auto/config}# restablirà la
configuració basada en aquestes opcions. Quan es vulgui fer canvis, editar
les opcions d'aquest fitxer en lloc de passar-les a #{lb config}#. Quan
s'utilitza #{lb clean}#, #{auto/clean}# netejarà els fitxers de #{config/*}#
juntament amb els altres productes de construcció. I, finalment, quan
s'utilitza #{lb build}#, es crea un log de la construcció mitjançant
#{auto/build}# anomenat #{build.log}#.

*{Nota:}* Aquí s'utilitza un paràmetre especial #{noauto}# per a suprimir un altra crida a #{auto/config}#, la qual cosa impedeix la recursivitat infinita. Assegurar-se de no eliminarlo accidentalment fent canvis. També, tenir cura de que quan es divideix l'ordre #{lb config}# a través de diverses línies per a facilitar la lectura, com es mostra en l'exemple anterior, no s'oblidi la barra invertida (\) al final de cada línia que segueix a la següent.

2~clone-configuration-via-git Clonar una configuració publicada via Git

Utilitzar l'opció #{lb config --config}# per a clonar un repositori Git que
contingui una configuració en viu. Si es vol basar la configuració en un
repositori mantingut pel ${project}, mirar el repositori a
http://http://anonscm.debian.org/cgit/debian-live/ amb el nom #{live-images}# sota el títol
#{Packages}#. Aquest repositori conté les configuracions per a les {imatges
prefabricades}#downloading-prebuilt-images

Per exemple, per a construir una imatge standard, utilitzar el repositori
#{live-images}# de la manera següent:

code{

 $ mkdir live-images && cd live-images
 $ lb config --config git://http://anonscm.debian.org/git/debian-live/live-images.git
 $ cd images/standard

}code

Editar #{auto/config}# i qualsevol altra cosa necessària dins l'arbre
#{config}# per a satisfer les necessitats pròpies. Per exemple, per a fer
les imatges prefabricades no oficials que contenen paquets de la secció
non-free simplement s'afegeix #{--archive-areas "main contrib non-free"}#.

Si es desitja, es pot definir una drecera en la configuració de Git, afegint
el següent a #{${HOME}/.gitconfig}#:

code{

 [url "git://http://anonscm.debian.org/git/debian-live/"]
         insteadOf = lso:

}code

Això permet utilitzar #{lso:}# en qualsevol lloc on cal especificar la
direcció d'un repositori git. També es pot omitir el sufix #{.git}#, i així,
començar una nova imatge amb aquesta configuració és tan fàcil com:

code{

 $ lb config --config lso:live-images

}code

Clonar tot el repositori #{live-images}# còpia les configuracions
utilitzades per diverses imatges. Si es vol construir una imatge diferent
després d'haver acabat amb la primera, canviar a un altre directori i un
altre cop i, opcionalment, fer els canvis per a adaptar-les a les
necessitats pròpies.

En qualsevol cas, recordar que cada vegada que s'ha de construir una imatge,
s'ha de fer com a superusuari: #{lb build}#
