:B~ Gestire una configurazione

1~managing-a-configuration Gestire una configurazione

Questo capitolo spiega come gestire una configurazione per una live sin
dalla creazione iniziale, attraverso le successive revisioni e rilasci sia
del software live-build che della stessa immagine.

2~ Gestire i cambiamenti di configurazione

Le configurazioni live sono di rado perfette al primo tentativo. Può andar
bene passare le opzioni di #{lb config}# a riga di comando per eseguire una
compilazione ma è tipico rivedere queste opzioni e compilare finché non si è
soddisfatti. Per gestire le modifiche c'è bisogno di script automatici che
assicurano che la propria configurazione sia coerente.

3~ Perché utilizzare gli script automatici? Cosa fanno?

Il comando #{lb config}# immagazzina le opzioni ricevute e molte altre
impostate su valori predefiniti in file nella directory
#{config/*}#. Eseguendo nuovamente #{lb config}# le opzioni basate
inizialmente sulle proprie non verranno cancellate. Per cui, ad esempio,
eseguendo di nuovo #{lb config}# con un nuovo argomento per
#{--distribution}#, ogni opzione che ne dipende impostata di default per la
vecchia distribuzione potrebbe non funzionare più con la nuova. Questi file
non sono destinati ad essere letti o modificati; salvano valori per oltre un
centinaio di opzioni per cui nessuno, nemmeno voi, è in grado di vedere
quali opzioni siano realmente state specificate. Infine, se si esegue #{lb
config}#, si aggiorna live-build e si rinomina un'opzione, la directory
#{config/*}# conterrà ancora le variabili con il vecchio nome e che non sono
più valide.

Per queste ragioni gli script nella directory #{auto/*}# faciliteranno il
lavoro; sono semplici wrapper ai comandi #{lb config}#, #{lb build}# e #{lb
clean}# designati per aiutare a gestire la configurazione. Gli script in
#{auto/config}# memorizzano i comandi di #{lb config}# con le opzioni
desiderate, quelli in #{auto/clean}# rimuovono i file contenenti i valori
delle variabili di configurazione, mentre gli script in #{auto/build}#
tengono un #{build.log}# di ogni compilazione. Ognuno di questi script viene
eseguito automaticamente ogni qualvolta si esegue il comando #{lb}#
corrispondente; utilizzandoli la vostra configurazione sarà più semplice da
leggere e verrà mantenuta coerente da una revisione all'altra. Inoltre sarà
molto più facile identificare e sistemare le opzioni che necessitano di
modifiche quando si aggiorna live-build dopo aver letto la documentazione
aggiornata.

3~ Esempi d'uso di script automatici

Per comodità live-build è fornito di esempi di script automatici da copiare
e modificare. Inizializzare una nuova configurazione predefinita quindi
copiare gli esempi in essa:

code{

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

}code

Modificare #{auto/config}# aggiungendo qualsiasi opzione vi serva, esempio:

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

Ogni volta che verrà usato #{lb config}#, #{auto/config}# ripristinerà la
configurazione in base a queste opzioni; quando si vogliono apportare
modifiche basterà modificare le opzioni in questo file invece di passarle a
#{lb config}#. Utilizzando #{lb clean}#, #{auto/clean}# pulirà i file in
#{config/*}# insieme a qualsiasi altro creato dalla compilazione. Infine,
quando si usa #{lb build}#, verrà scritto da #{auto/build}# un file di log
della compilazione in #{build.log}#.

*{Nota:}* il parametro speciale #{noauto}# viene qui usato per impedire un'ulteriore chiamata di #{auto/config}#, impedendo quindi infinite chiamate ricorsive; assicurarsi di non rimuoverlo facendo modifiche. Quando si dividono comandi lunghi di #{lb config}# su più righe per agevolarne la leggibilità, non dimenticare il backslash (\) alla fine di ogni riga che continua sulla successiva, come mostrato poc'anzi nell'esempio di script.

2~clone-configuration-via-git Clonare una configurazione pubblicata tramite
Git.

Per clonare un repository Git che contiene una configurazione Debian Live
usare l'opzione #{lb config --config}#. Se si desidera basarsi su una
mantenuta dal progetto Debian Live vedere il repository chiamato
#{live-images}# nella categoria #{Pacchetti}#. Contiene le configurazioni
per le {immagini precompilate}#downloading-prebuilt-images di Debian Live.

Ad esempio, per creare un'immagine d'emergenza usare il repository
#{live-images}# come segue:

code{

 $ mkdir live-images && cd live-images
 $ lb config --config git://live.debian.net/git/live-images.git
 $ cd images/rescue

}code

Modificare #{auto/config}# e qualsiasi altro file presente in #{config}#
necessario alle proprie esigenze. Ad esempio, le immagini non-free
precompilate non ufficiali sono create semplicemente aggiungendo
#{--archive-areas "main contrib non-free"}#.

È possibile definire una scorciatoia nella configurazione di Git aggiungendo
quanto segue al file #{${HOME}/.gitconfig}#:

code{

 [url "git://live.debian.net/git/"]
         insteadOf = ldn:

}code

Questo permette di usare #{ldn:}# ovunque serva specificare l'indirizzo di
un repository git #{live.debian.net}#. Omettendo l'estensione facoltativa
#{.git}#, inizializzare una nuova immagine usando questa configurazione è
facile:

code{

 $ lb config --config ldn:live-images

}code

Clonando l'intero repository #{live-images}# si ottengono configurazioni
usate per svariate immagini. Se dopo aver terminato la prima si vuole creare
un'immagine differente, basterà cambiare directory e opzionalmente fare di
nuovo le modifiche necessarie alle proprie esigenze.

In ogni caso ricordarsi che ogni volta si dovrà creare l'immagine come
utente root: #{lb build}#
