: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://live-systems.org/gitweb/ 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://live-systems.org/git/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://live-systems.org/git/"] 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}#