:B~ Gestionar una configuración

1~managing-a-configuration Gestionar una configuración

Este capítulo explica como gestionar una configuración para crear un sistema
en vivo desde el principio, pasando por sucesivas versiones tanto de la
herramienta live-build como de la imagen del sistema en vivo propiamente
dicha.

2~ Gestionar cambios en la configuración

Las configuraciones en vivo rara vez son perfectas al primer intento. Puede
estar bien pasar opciones a #{lb config}# en la línea de comandos para
realizar una construcción única, pero es más típico revisar esas opciones y
construir de nuevo hasta quedar satisfecho. Para gestionar estos cambios, se
pueden utilizar scripts auto que garanticen que la configuración se mantiene
en un estado coherente.

3~ ¿Por qué utilizar scripts auto? ¿Qué hacen?

El comando #{lb config}# almacena las opciones que se le pasan en ficheros
en el directorio #{config/*}#, junto con muchas otras opciones que figuran
en sus valores predeterminados. Si se ejecuta #{lb config}# una vez más, no
restablecerá ninguna opción que se estableció como por defecto en función de
las opciones iniciales. Así, por ejemplo, si se ejecuta #{lb config}# otra
vez con un nuevo valor para #{--binary-images}#, todas las opciones que se
establecieron como predeterminadas según la opción anterior ya no pueden
funcionar con la nueva. Estos ficheros tampoco estan destinados a ser leídos
o editados. Almacenan valores para más de cien opciones, y nadie es capaz de
ver las opciones que se especificó realmente. Y por último, si se ejecuta
#{lb config}# y a continuación se actualiza live-build y hay alguna opción
que cambió de nombre, #{config/*}# todavía tendrá variables con las opciones
viejas que ya no son válidas.

Por todas estas razones, los scripts #{auto/*}# nos hacen la vida más
fácil. Son simples envoltorios para los comandos #{lb config}#, #{lb build}#
y #{lb clean}# diseñados para ayudar a gestionar una configuración. El
script #{auto/config}# contiene el comando #{lb config}# con todas las
opciones que se desea, el script #{auto/clean}# elimina los ficheros que
contienen variables de configuración y el fichero #{auto/build}# crea un
#{build.log}# de cada creación. Cada uno de estos scripts se ejecuta
automáticamente cada vez que se ejecuta la orden #{lb}#
correspondiente. Mediante el uso de estos scripts, la configuración es más
fácil de leer y se mantiene internamente coherente de una revisión a la
siguiente. Además, será mucho más fácil identificar y corregir las opciones
que necesitan cambiarse tras actualizar live-build y leer la documentación
actualizada.

3~ Usar scripts auto de ejemplo

Para mayor comodidad, live-build incluye scripts auto de ejemplo que se
pueden copiar y editar. Iniciar una nueva configuración por defecto y a
continuación, copiar los ejemplos:

code{

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

}code

Editar #{auto/config}#, añadiendo las opciones que se desee. Por ejemplo:

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

Ahora, cada vez que se utilize #{lb config}#, #{auto/config}# reiniciará la
configuración basándose en estas opciones. Cuando se desee realizar cambios,
se deben editar las opciones en este fichero en lugar de pasarlas a #{lb
config}#. Cuando se utilize #{lb clean}#, #{auto/clean}# limpiará los
ficheros en #{config/*}# junto a los otros productos de construcción. Y, por
último, cuando se utilice #{lb build}#, #{auto/build}# creará un log del
proceso de construcción llamado #{build.log}#.

*{Nota:}* Aquí se utiliza #{noauto}#, un parámetro especial para suprimir otra llamada a #{auto/config}#, evitando así una repetición infinita. Asegurarse de no eliminarlo accidentalmente al hacer cambios en el fichero. Tener cuidado al dividir el comando #{lb config}# en varias líneas para facilitar la lectura, como se muestra en el ejemplo anterior, ya que no debe olvidarse la barra invertida (\) al final de cada línea que sigue en la siguiente.

2~clone-configuration-via-git Clonar una configuración publicada a través de
Git

Utilizar la opción #{lb config --config}# para clonar un repositorio Git que
contenga una configuración de un sistema en vivo. Si se desea basar la
configuración en una mantenida por el ${project}, visitar el repositorio en
http://http://anonscm.debian.org/cgit/debian-live/ con el nombre #{live-images}# bajo el título
#{Packages}#. Este repositorio contiene las configuraciones que se utilizan
para las {imágenes prefabricadas}#downloading-prebuilt-images

Por ejemplo, para construir una imagen standard, utilizar el repositorio
#{live-images}# de la siguiente manera:

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}# y cualquier otra cosa que se necesite en el árbol
#{config}# para adaptarlo a las propias necesidades. Por ejemplo, las
imágenes prefabricadas con paquetes de la sección non-free se crean
simplemente añadiendo #{--archive-areas "main contrib non-free"}#.

Si se desea, se puede definir un método abreviado en la configuración de
Git, añadiendo lo siguiente al fichero #{${HOME}/.gitconfig}#:

code{

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

}code

Esto permite utilizar #{lso:}# en cualquier lugar en que se tenga que
especificar la dirección de un repositorio git de #{debian-live.alioth.debian.org}#. Si
se omite el sufijo #{.git}#, comenzar una nueva imagen con esta
configuración es tan fácil como:

code{

 $ lb config --config lso:live-images

}code

Clonar el repositorio #{live-images}# completo copiará todas las
configuraciones utilizadas para varias imágenes. Si se quiere construir una
imagen diferente después de haber terminado con la primera, cambiar a otro
directorio y de nuevo, y opcionalmente, hacer los cambios necesarios para
adaptarlo según las necesidades.

En cualquier caso, recordar que cada vez que se tiene que construir una
imagen hay que hacerlo como superusuario: #{lb build}#
