7
7
herramienta live-build como de la imagen del sistema en vivo propiamente
10
2~ Utilización de auto para gestionar los cambios de la configuración
12
La configuración necesaria para crear un sistema en vivo rara vez es
13
perfecta a la primera. Lo normal es que se necesite realizar una serie de
14
revisiones hasta que se obtenga algo satisfactorio. Sin embargo, las
15
inconsistencias pueden transmitirse de una revisión de la configuración a
16
otra si no se es lo suficientemente cuidadoso. El principal problema es que,
17
una vez que una variable de la configuración tiene un valor asignado, este
18
valor no es recalculado en revisiones posteriores de la configuración. Esto
19
hace que, si una variable depende del valor de otra y esta segunda cambia de
20
valor, el valor actual de la primera no se ve alterado, debido a que ya
21
tenía el valor asignado de antemano.
23
Por ejemplo, la primera vez que se asigna la distribución a utilizar, se
24
asigna a muchas variables un valor por defecto para adecuarse a la
25
distribución seleccionada. Sin embargo, si posteriormente se decide
26
modificar la distribución, estas variables dependientes continuan reteniendo
27
los valores antiguos que, por supuesto, no son los adecuados para la nueva
30
Otro problema es que la ejecución de la orden #{lb config}# no se
31
reejecutará correctamente si se realiza una actualización a una nueva
32
versión de las herramientas live-build que modifique el nombre de alguna
33
variable de configuración. Además solamente podrá ser descubierto mediante
34
una revisión manual de los ficheros del directorio #{config/*}# que se
35
deberán modificar para asignar las variables de configuración a un nuevo
38
Todo esto sería un terrible embrollo si no fuese por los scripts auto/*
39
simples envoltorios para los comandos #{lb config}#, #{lb build}# y #{lb
40
clean}# que están diseñados para ayudar a la gestión de la
41
configuración. Simplemente se debe crear un script llamado auto/config que
42
contenga el comando #{lb config}# con todas las opciones que se deseen y
43
otro script llamado auto/clean que elimine los ficheros que contienen los
44
valores de las variables de configuración. Estos scripts se ejecutarán cada
45
vez que se ejecuten los comandos #{lb config}# o #{lb clean}# de manera
46
automática. Esto asegurará que la configuración se mantendrá consistente
47
desde una versión a otra y desde una versión de las herramientas live-build
48
a otra. (Aunque esto no elimina la necesidad de leer la documentación cuando
49
se instale una nueva version de las herramientas live-build y quizás
50
realizar algún ajuste manual en los ficheros de configuración).
52
2~ Un ejemplo de scripts auto.
54
Se debe utilizar scripts auto similares a los ejemplos que se muestran a
55
continuación como punto de partida para una nueva configuración de la
56
herramienta live-build. Hay que hacer notar que, cuando se ejecuta el
57
comando #{lb}# dentro del script auto, se debe especificar la opción
58
#{noauto}# para asegurar que el script auto no se vuelve a ejecutar
59
repetitivamente. Tampoco se debe olvidar asegurarse de que los scripts auto
60
sean ejecutables (por ejemplo #{chmod 755 auto/*}#).
10
2~ Gestionar los cambios de configuración
12
Las configuraciones en vivo rara vez son perfectas al primer intento. Puede
13
estar bien pasar opciones a #{lb config}# en la línea de comandos para
14
realizar una construcción única, pero es más típico revisar esas opciones y
15
construir de nuevo hasta quedar satisfecho. Para apoyar estos cambios, se
16
pueden utilizar scripts auto que garanticen que la configuración se mantiene
17
en un estado coherente.
19
3~ ¿Por qué utilizar scripts auto? ¿Qué hacen?
21
El comando #{lb config}# almacena las opciones que se le pasan en ficheros
22
en el directorio #{config/*}#, junto con muchas otras opciones que figuran
23
en sus valores predeterminados. Si se ejecuta #{lb config}# una vez más, no
24
restablecerá ninguna opción que se estableció como por defecto en función de
25
las opciones iniciales. Así, por ejemplo, si se ejecuta #{lb config}# otra
26
vez con un nuevo valor para #{--distribution}#, todas las opciones que se
27
establecieron como predeterminadas para la distribución anteriormente ya no
28
pueden funcionar con la nueva configuración. Estos archivos tampoco estan
29
destinados a ser leídos o editados. Almacenan valores para más de cien
30
opciones, para que nadie sea capaz de ver las opciones que se especificó
31
realmente. Y por último, si se ejecuta #{lb config}# y a continuación se
32
actualiza live-build y hay alguna opción que cambió de nombre, #{config/*}#
33
todavía tendrá variables con las opciones viejas que ya no son válidas.
35
Por todas estas razones, los scripts #{auto/*}# nos hacen la vida más
36
fácil. Son simples envoltorios para los comandos #{lb config}#, #{lb build}#
37
y #{lb clean}# diseñados para ayudar a administrar una configuración. El
38
script #{auto/config}# contiene el comando #{lb config}# con todas las
39
opciones que se desea, el script #{auto/clean}# elimina los ficheros que
40
contienen variables de configuración y el fichero #{auto/build}# crea un
41
#{build.log}# de cada creación. Cada uno de estos scripts se ejecuta
42
automáticamente cada vez que se ejecuta la orden #{lb}#
43
correspondiente. Mediante el uso de estos scripts, la configuración es más
44
fácil de leer y se mantiene internamente coherente de una revisión a la
45
siguiente. Además, será mucho más fácil identificar y corregir las opciones
46
que necesitan cambiarse tras actualizar live-build y leer la documentación
49
2~ Usar scripts auto de ejemplo
51
Para mayor comodidad, live-build contiene shell scripts auto de ejemplo que
52
se pueden copiar y editar. Iniciar una nueva configuración por defecto y a
53
continuación, copiar los ejemplos:
57
$ mkdir mylive && cd mylive && lb config
58
$ cp /usr/share/doc/live-build/examples/auto/* auto/
62
Editar #{auto/config}#, añadiendo las opciones que se desee. Por ejemplo:
68
--package-lists "standard" \
68
--architectures i386 \
69
--linux-flavours 686-pae \
71
--mirror-bootstrap http://ftp.es.debian.org/debian/ \
72
--mirror-binary http://ftp.es.debian.org/debian/ \
78
lb clean noauto "${@}"
79
rm -f config/binary config/bootstrap \
80
config/chroot config/common config/source
90
lb build noauto "${@}" 2>&1 | tee build.log
94
Estos scripts auto vienen de serie con las herramientas live-build. Bastaría
95
con copiar estos scripts como punto de partida.
99
$ cp /usr/share/doc/live-build/examples/auto/* auto/
103
Se puede editar el script #{auto/config}#, modificándolo o añadiendo
104
cualquier opción que se acomode a las necesidades requeridas. En el ejemplo
105
anterior, se asigna la opción por defecto #{--package-lists standard}#. Se
106
puede cambiar este valor por uno adecuado o simplemente eliminarlo si no es
107
necesario, añadiendo en las líneas siguientes cualquier otra opción que se
108
adecue a las necesidades requeridas para la imagen a crear.
77
Ahora, cada vez que se utilize #{lb config}#, #{auto/config}# reiniciará la
78
configuración basándose en estas opciones. Cuando se desee realizar cambios,
79
se deben editar las opciones en este fichero en lugar de pasarlas a #{lb
80
config}#. Cuando se utilize #{lb clean}#, #{auto/clean}# limpiará los
81
ficheros en #{config/*}# junto a los otros productos de construcción. Y, por
82
último, cuando se utilice #{lb build}#, #{auto/build}# creará un log del
83
proceso de construcción llamado #{build.log}#.
85
Nota: Aquí se utiliza #{noauto}#, un parámetro especial para suprimir otra
86
llamada a #{auto/config}#, evitando así una repetición infinita. Asegurarse
87
de no eliminarlo accidentalmente al hacer cambios en el fichero. Tener
88
cuidado al dividir el comando #{lb config}# en varias líneas para facilitar
89
la lectura, como se muestra en el ejemplo anterior, ya que no debe olvidarse
90
la barra invertida (\) al final de cada línea que sigue en la siguiente.
92
2~ Clonar una configuración publicada a través de Git
94
Utilizar la opción #{lb config --config}# para clonar un repositorio Git que
95
contenga una configuración de Debian Live. Si se desea basar la
96
configuración en una mantenida por el proyecto Debian Live, visitar los
97
repositorios con el prefijo #{config-}# en http://live.debian.net/gitweb
99
Por ejemplo, para construir una imagen de rescate, utilizar el repositorio
100
#{config-rescue}# de la siguiente manera:
104
$ mkdir live-rescue && cd live-rescue
105
$ lb config --config git://live.debian.net/git/config-rescue.git
109
Editar #{auto/config}#y cualquier otra cosa que se necesite en el árbol
110
#{config}# para adaptarlo a las propias necesidades.
112
Si se desea, se puede definir un método abreviado en la configuración de
113
Git, añadiendo lo siguiente al fichero #{${HOME}/.gitconfig}#:
117
[url "git://live.debian.net/git/"]
122
Esto permite utilizar #{ldn:}# en cualquier lugar en que se tenga que
123
especificar la dirección de un repositorio git de #{live.debian.net}#. Si se
124
omite el sufijo #{.git}#, comenzar una nueva imagen con esta configuración
129
$ lb config --config ldn:config-rescue