Manual Debian Live

Acerca de este manual

1. Acerca de este manual

1.1 Para el impaciente.
1.2 Términos
1.3 Autores
1.4 Cómo contribuir en este documento
1.4.1 Aplicar cambios
1.4.2 Traducción

2. Acerca del Proyecto Debian Live

2.1 Motivación
2.1.1 Desventajas en los sistemas Live actuales
2.1.2 El porqué de crear un Sistema Live propio.
2.2 Filosofía
2.2.1 Solamente paquetes sin modificación alguna de Debian «main»
2.2.2 Sin configuración especial para el Sistema Live
2.3 Contacto

Usuario

3. Instalación

3.1 Requisitos
3.2 Instalación de live-build
3.2.1 Desde el repositorio Debian.
3.2.2 A partir del código fuente
3.2.3 A partir de «instantáneas»
3.3 Instalación de live-boot y live-config
3.3.1 Desde el repositorio Debian.
3.3.2 A partir del código fuente
3.3.3 A partir de «instantáneas»

4. Conceptos básicos

4.1 ¿Qué es un sistema en vivo?
4.2 Primeros pasos: creación de una imagen ISO híbrida
4.3 Usar una imagen ISO híbrida
4.3.1 Grabar una imagen ISO en un medio físico.
4.3.2 Copiar una imagen ISO híbrida a un dispositivo USB
4.3.3 Arrancar los medios en vivo
4.4 Usar una máquina virtual para pruebas
4.4.1 Probar una imagen ISO con QEMU
4.4.2 Probar una imagen ISO con virtualbox-ose
4.5 Crear una imagen HDD
4.6 Utilizar una imágen HDD
4.6.1 Probar una imágen HDD con Qemu
4.6.2 Usar el espacio libre en el dispositivo USB
4.7 Creación de una imagen de arranque en red
4.7.1 Servidor DHCP
4.7.2 Servidor TFTP
4.7.3 Servidor NFS
4.7.4 Cómo probar el arranque en red
4.7.5 Qemu
4.7.6 VMWare Player

5. Descripción general de las herramientas

5.1 El paquete live-build
5.1.1 El comando lb config
5.1.2 El comando lb build
5.1.3 El comando lb clean
5.2 El paquete live-boot
5.3 El paquete live-config

6. Gestionar una configuración

6.1 Gestionar los cambios de configuración
6.1.1 ¿Por qué utilizar scripts auto? ¿Qué hacen?
6.2 Usar scripts auto de ejemplo
6.3 Clonar una configuración publicada a través de Git

7. Descripción general de la personalización.

7.1 Configuración en el momento de la creación vs en el momento del arranque
7.2 Etapas de la creación
7.3 Opciones para lb config en ficheros
7.4 Tareas de personalización

8. Personalización de la instalación de paquetes

8.1 Origen de los paquetes
8.1.1 Distribución, áreas de archivo y modo
8.1.2 Réplicas de Distribución Debian
8.1.3 Réplicas de Distribution utilizadas durante la creación
8.1.4 Réplicas de distribución Debian utilizadas en la ejecución.
8.1.5 Repositorios adicionales
8.2 Selección de los paquetes a instalar
8.2.1 Listas de paquetes
8.2.2 Using metapackages
8.2.3 Listas de paquetes locales
8.2.4 Listas de paquetes locales para binary
8.2.5 Generar listas de paquetes
8.2.6 Utilización de condiciones dentro de las listas de paquetes
8.2.7 Tareas de Escritorio e Idioma
8.3 Instalar paquetes modificados o de terceros
8.3.1 Método packages.chroot para instalar paquetes personalizados
8.3.2 Método de repositorio APT para instalar paquetes personalizados
8.3.3 Paquetes personalizados y APT
8.4 Configurar APT en la creación
8.4.1 Utilizar apt o aptitude
8.4.2 Utilización de un proxy con APT
8.4.3 Tweaking APT to save space
8.4.4 Pasar opciones a apt o a aptitude
8.4.5 APT pinning

9. Personalización de contenidos

9.1 Includes
9.1.1 Includes locales en Live/chroot
9.1.2 Includes locales en Binary
9.2 Scripts gancho (Hooks)
9.2.1 Scripts gancho locales en Live/chroot
9.2.2 Scripts gancho en tiempo de arranque
9.2.3 Scripts gancho locales en Binary
9.3 Preconfiguración de las preguntas de Debconf

10. Personalización del comportamiento en tiempo de ejecución.

10.1 Personalización del usuario por defecto del sistema en vivo
10.2 Personalización de las variantes locales e idioma
10.3 Persistencia
10.3.1 El fichero live-persistence.conf
10.3.2 Utilizar varios medios persistentes

11. Personalización de la imagen binaria

11.1 Gestor de arranque
11.2 Metadatos ISO

12. Personalización del Instalador de Debian

12.1 Tipos de imágenes según el instalador
12.2 Personalizando el Instalador de Debian mediante preconfiguración
12.3 Personalizar el contenido del Instalador de Debian

Proyecto

13. Informes de errores.

13.1 Problemas conocidos
13.2 Reconstruir desde cero
13.3 Utilizar paquetes actualizados
13.4 Recopilar información
13.5 Aislar el fallo si es posible
13.6 Utilizar el paquete correcto sobre el que informar del error
13.6.1 En la preinstalación (bootstrap) en tiempo de creación.
13.6.2 Mientras se instalan paquetes en tiempo de creación.
13.6.3 En tiempo de arranque
13.6.4 En tiempo de ejecución
13.7 Hacer la investigación
13.8 Dónde informar de los fallos

14. Estilo de código

14.1 Compatibilidad
14.2 Sangrado
14.3 Ajuste de líneas
14.4 Variables
14.5 Miscelánea

15. Procedimientos

15.1 Subir Udebs
15.2 Principales lanzamientos
15.3 Nuevas versiones
15.3.1 Última actualización de una versión Debian
15.3.2 Plantilla para anunciar nuevas versiones.

Ejemplos

16. Ejemplos

16.1 Uso de los ejemplos
16.2 Tutorial 1: Una imagen estándar
16.3 Tutorial 2: Una utilidad de navegador web
16.4 Tutorial 3: Una imagen personalizada
16.4.1 Primera revisión
16.4.2 Segunda revisión
16.5 Un cliente VNC kiosk
16.6 Una imagen básica para un pendrive USB de 128M
16.7 Un escritorio KDE con variante local e instalador

Apéndice

17. Style guide

17.1 Guidelines for authors
17.1.1 Linguistic features
17.1.2 Procedures
17.2 Guidelines for translators
17.2.1 Translation hints

Manual Debian Live

Usuario

8. Personalización de la instalación de paquetes

Quizás la tarea más básica de personalización en Debian Live es la selección de paquetes que serán incluidos en la imagen. Este capítulo orienta a través de las diferentes opciones de live-build que, en el momento de la creación de la imagen, personalizan la instalación de paquetes. Las opciones que seleccionan la distribucion base y las áreas del archivo Debian a utilizar son las que más influyen a la hora de conocer qué paquetes estarán disponibles para su instalación en la imagen. Para asegurar una buena velocidad de descarga de paquetes, se debería elegir el repositorio Debian más cercano. Se pueden añadir repositorios para backports, experimentales, paquetes personalizados o incluir ficheros de paquetes directamente. Se pueden definir listas de paquetes personalizadas, incluyendo metapaquetes que instalarán muchos paquetes relacionados, como por ejemplo paquetes de un entorno de escritorio o lenguaje particular. Por último existen varias opciones que dan algún control sobre cuando son instalados los paquetes por la herramienta apt o la herramienta aptitude, según sea la elegida. Estas opciones pueden ser útiles si se utiliza un proxy, se quiere desactivar la instalación de paquetes recomendados para ahorrar espacio o se necesita controlar las versiones de los paquetes a instalar mediante APT pinning, por nombrar algunas posibilidades.

8.1 Origen de los paquetes

8.1.1 Distribución, áreas de archivo y modo

La distribución seleccionada tiene gran impacto en qué paquetes están disponibles para incluir en la imagen. Se debe indicar el nombre en clave de la distribución, que por defecto es wheezy para la versión wheezy de live-build. Se puede especificar cualquier nombre de distribución disponible en los repositorios Debian indicando su nombre en clave. (Para más detalles ver Términos). La opción --distribution no solamente influencia la fuente de los paquetes dentro del archivo Debian, sino que instruye a live-build a comportarse tal y como se necesita para construir cada una de las distribuciones. Por ejemplo, para construir contra la versión inestable, sid, se debe indicar:

$ lb config --distribution sid

Las áreas del archivo Debian son la principal división de paquetes dentro de una distribución dada. En Debian las áreas del archivo establecidas son main, contrib y non-free. Solamente los paquetes contenidos en main son parte de la distribución Debian. Ésta es el área definida por defecto en live-build. Se pueden indicar uno o más valores tal y como se muestra en el siguiente ejemplo:

$ lb config --archive-areas "main contrib"

Experimentalmente hay soporte para alguna distribución derivada de Debian mediante la opción --mode. Por defecto, esta opción toma el valor de debian incluso si live-build se está ejecutando en un sistema no Debian. Si se especifica --mode ubuntu o --mode emdebian se utilizará el nombre de la distribución y las áreas de archivos específicas de la distribución derivada en lugar de los propios de Debian y live-build modificará su comportamiento para adecuarlo al modo seleccionado.

Nota: La ayuda a los usuarios de las distribuciones para las cuales se añadieron estos modos son responsabilidad de los desarrolladores de dichas distribuciones. El proyecto Debian Live proporciona ayuda al desarrollo de la mejor manera posible, basándose en la información recogida de dichas distribuciones derivadas a pesar de que no desarrolla ni da soporte a las mismas.

8.1.2 Réplicas de Distribución Debian

Los repositorios de Debian están replicados en una gran red alrededor del mundo, de manera que se puede seleccionar la réplica más cercana con el fin de obtener la mejor velocidad de descarga. Cada una de las opciones --mirror-* gobierna qué réplica de repositorio Debian se utiliza en las diferentes etapas de creación. Si se recuerda de Etapas de la creación, en la etapa de preinstalación (bootstrap) es cuando se crea el directorio chroot y se rellena con un sistema mínimo mediante la herramienta debootstrap, y en la etapa chroot es cuando el directorio chroot es completado con los paquetes necesarios para crear el sistema de ficheros que será utilizado en el sistema en vivo. A cada una de estas etapas le corresponde su propia opción --mirror-*. Posteriormente, en la etapa binary se utilizarán las réplicas Debian indicadas en los valores de las opciones --mirror-binary y --mirror-binary-security en lugar de utilizar los indicados para las etapas anteriores.

8.1.3 Réplicas de Distribution utilizadas durante la creación

Para indicar qué réplicas deben ser utilizadas en el momento de crear la imagen es suficiente con utilizar las opciones --mirror-bootstrap , --mirror-chroot-security y --mirror-chroot-backports como se muestra a continuación.

$ lb config --mirror-bootstrap http://localhost/debian/ \
             --mirror-chroot-security http://localhost/debian-security/ \
      --mirror-chroot-backports http://localhost/debian-backports/

El valor indicado en --mirror-chroot es utilizado como valor por defecto para la opción --mirror-bootstrap si esta no es indicada.

8.1.4 Réplicas de distribución Debian utilizadas en la ejecución.

Las opciones --mirror-binary* gobiernan las réplicas configuradas en la imagen binaria que serán utilizadas para instalar paquetes adicionales mientras se ejecuta el sistema en vivo. Por defecto se utiliza cdn.debian.net, que es un servicio que selecciona la réplica más cercana basándose en el número de IP. Es una elección bastante acertada siempre que no se pueda predecir que réplica será la mejor para todos los usuarios. También se puede especificar valores personalizados como se muestra en el siguiente ejemplo. Una imagen construida con esta configuración solamente sería accesible a los usuarios de una red donde "mirror" fuese alcanzable.

$ lb config --mirror-binary http://mirror/debian/ \
             --mirror-binary-security http://mirror/debian-security/

8.1.5 Repositorios adicionales

Se pueden añadir más repositorios, ampliando la lista de paquetes seleccionables más alla de aquellos disponibles para la distribución indicada, como pueden ser paquetes de backports, paquetes experimentales o personalizados. Para configurar repositorios adicionales se debe crear los ficheros config/archives/your-repository.list.chroot y/o config/archives/your-repository.list.binary. Al igual que en las opciones --mirror-*, estos ficheros gobiernan los repositorios utilizados en las etapas chroot y binary respectivamente, esto es, los repositorios que serán utilizados cuando se ejecute el sistema en vivo.

Por ejemplo, config/archives/live.list.chroot permite instalar paquetes de las instantáneas del repositorio Debian Live en el momento de crear la imagen.

deb http://live.debian.net/ sid-snapshots main contrib non-free

Si se añade la misma línea a config/archives/live.list.binary, el repositorio será añadido al directorio /etc/apt/sources.list.d/ del sistema en vivo.

Estos ficheros serán seleccionados automáticamente si existen.

Se debería también incluir en el fichero config/archives/your-repository.key.{binary,chroot} la clave GPG a utilizar para firmar dicho repositorio.

Nota: Existen algunos repositorios de paquetes ya preconfigurados para facilitar la selección mediante la opción --archives. Por ejemplo, para utilizar las instantáneas del repositorio de Debian Live, sería suficiente con activarlo mediante:

$ lb config --archives live.debian.net

8.2 Selección de los paquetes a instalar

Hay varias maneras de seleccionar qué paquetes serán instalados por live-build en la imagen que cubren una variedad de necesidades diversas. Se puede nombrar paquetes individuales para instalar en una lista de paquetes. También se puede utilizar metapaquetes en esas listas, o selecionarlas utilizando campos de ficheros de control de paquetes. Por último, también se pueden utilizar ficheros de paquetes de prueba o experimentales obtenidos antes de que aparezcan en los repositorios oficiales simplemente depositando estos ficheros directamente en el árbol de directorios config/.

8.2.1 Listas de paquetes

Las listas de paquetes proporcionan una potente forma de expresar qué paquetes deberían ser instalados. La sintaxis de la listas soporta la inclusión de ficheros y secciones condicionales, que facilitan la creación de listas a partir de otras listas, adaptando su utilización a diversas configuraciones. También se pueden añadir nombre de paquetes en la listas utilizando shell helpers en tiempo de construcción.

Nota: El comportamiento de live-build cuando se especifica un paquete que no existe es determinado por lo que se haya configurado en la utilidad APT. Para más detalles ver Utilizar apt o aptitude.

8.2.2 Using metapackages

La manera más sencilla de rellenar una lista de paquetes es utilizar una tarea metapaquete mantenida por una distribución. Por ejemplo:

$ lb config
$ echo task-gnome-desktop > config/package-lists/gnome-desktop.list.chroot

Esto reemplaza el antiguo método de listas predefinidas compatible con live-build 2.x. A diferencia de las listas predefinidas, los metapaquetes de tareas no son específicos del proyecto Debian Live. Por el contrario, son mantenidas por grupos de especialistas que trabajan en la distribución y por lo tanto, reflejan el consenso de cada grupo acerca de qué paquetes sirven mejor a las necesidades de los usuarios. Además, abarcan una gama mucho más amplia de casos de uso que las listas predefinidas a las que sustituyen.

Todos los metapaquetes de tareas tienen el prefijo task-, por lo que una forma rápida de determinar cuales están disponibles (aunque puede contener un puñado de entradas falsas que coincidan con el nombre, pero que no son metapaquetes) es buscar el nombre del paquete con:

$ apt-cache search --names-only ^task-

Además de éstos, se encuentran otros metapaquetes con diversos fines. Algunos son subconjuntos de paquetes de tareas más amplias, como gnome-core, mientras que otros son partes especializadas individuales de un Debian Pure Blend, como los metapaquetes education-*. Para tener una lista de todos los metapaquetes en el archivo, instalar el paquete debtags y listar todos los paquetes con la etiqueta role::metapackage de la siguiente manera:

$ debtags search role::metapackage

8.2.3 Listas de paquetes locales

Ya sea incluyendo metapaquetes en una lista, paquetes individuales, o una combinación de ambos, todas las listas de paquetes locales se deben almacenar en config/package-lists/. Ya que se puede utilizar más de una lista, esto se presta muy bien a los diseños modulares. Por ejemplo, se puede dedicar una lista a una elección particular de escritorio, la otra a una colección de paquetes relacionados que puedan ser fácilmente utilizados sobre un escritorio diferente. Esto permite experimentar con diferentes combinaciones de conjuntos de paquetes con un mínimo esfuerzo, así como compartir listas comunes entre diferentes proyectos de imágenes en vivo.

Para que sean procesadas, las listas de paquetes que se depositen en este directorio deben tener la extensión .list además de la extensión de la etapa .chroot o .binary para indicar a qué etapa corresponde la lista.

Nota: Si no se especifica el sufijo, la lista será usada en las dos etapas. En consecuencia, es conveniente especificar .list.chroot de modo que los paquetes se instalen únicamente en el sistema en vivo y no exista otra copia extra del paquete .deb.

8.2.4 Listas de paquetes locales para binary

Para crear una lista para la etapa «binary» crear un fichero con el sufijo .list.binary en config/package-lists/. Estos paquetes no son instalados en el sistema en vivo, pero son incluidos en pool/. El uso típico de una de estas lista sería para una de las variantes de instalador normal («non-live» N.del T.). Tal y como se mencionaba anteriormente, si se desea usar la misma lista para la etapa «chroot» basta con solamente añadir el sufijo .list

8.2.5 Generar listas de paquetes

A veces ocurre que la mejor manera de crear una lista es generarla con un script. Cualquier línea que comience con un signo de exclamación indica un comando que se ejecutará dentro del chroot cuando la imagen se construya. Por ejemplo, se podría incluir la línea ! grep-aptavail -n -sPackage -FPriority standard | sort en una lista de paquetes para producir una lista ordenada de los paquetes disponibles con Priority: standard.

De hecho, la selección de paquetes con la orden grep-aptavail (del paquete dctrl-tools) es tan útil que live-build proporciona un script de ayuda llamado Packages. Este script acepta dos argumentos: field y pattern. Por lo tanto, se puede crear una lista con los siguientes contenidos:

$ lb config
$ echo '! Packages Priority standard' > config/package-lists/standard.list.chroot

8.2.6 Utilización de condiciones dentro de las listas de paquetes

En las sentencias condicionales de las listas de paquetes pueden utilizarse cualquier variable disponible en config/* (excepto las que tienen el prefijo LB_). En general esto significa que puede utilizarse cualquier opción válida para lb config cambiando las letras minúsculas por mayúsculas y los guiones por subrayados. En la práctica solamente tiene sentido utilizar aquellas variables relacionadas con la selección de paquetes, como pueden ser DISTRIBUTION, ARCHITECTURES o ARCHIVE_AREAS.

Por ejemplo, para instalar el paquete ia32-libs si se ha especificado la arquitectura amd64 (--architectures amd64) se puede utilizar:

#if ARCHITECTURES amd64
ia32-libs
#endif

En la expresión condicional pueden utilizarse varios valores. Por ejemplo para instalar el paquete memtest86+ si la arquitectura es i386 (--architectures i386) o es amd64 (--architectures amd64) se puede especificar:

#if ARCHITECTURES i386 amd64
memtest86+
#endif

En la expresión condicional también pueden utilizarse variables que pueden contener más de un valor. Por ejemplo para instalar vrms si se utilizan las áreas del archivo contrib o non-free mediante la opción --archive-areas se puede indicar:

#if ARCHIVE_AREAS contrib non-free
vrms
#endif

Es habitual que una condición incluya una directiva «include»:

  #if ARCHITECTURES amd64
#include <gnome-full>
#endif

No se permite el anidamiento de estructuras condicionales.

8.2.7 Tareas de Escritorio e Idioma

Las tareas de escritorio y de idioma son casos especiales que necesitan un poco de planificación y configuración extra. Si el medio de instalación fue preparado para una clase particular de entorno de escritorio, el Instalador de Debian instalará automáticamente la tarea de entorno de escritorio correspondiente. Para ello existen las tareas internas gnome-desktop, kde-desktop, lxde-desktop y xfce-desktop pero ninguna de ellas son presentadas en el menú de tasksel. De igual forma, las tareas para idiomas tampoco son presentadas en el menú de tasksel, pero la selección del idioma, al inicio de la instalación repercute en la selección de las correspondientes tareas del idioma.

Cuando se desarolla una imagen de escritorio, la imagen normalmente arranca directamente a un escritorio de trabajo, las opciones de escritorio y de idioma por defecto han sido elegidas en tiempo de creación, no en tiempo de ejecución como en el caso del instalador de Debian. Eso no quiere decir que una imagen en vivo no pueda ser creada para admitir múltiples escritorios o varios idiomas y ofrecer al usuario una elección, pero ese no es un comportamiento por defecto de live-build.

Because there is no provision made automatically for language tasks, which include such things as language-specific fonts and input-method packages, if you want them, you need to specify them in your configuration. For example, a GNOME desktop image containing support for Japanese might include these task metapackages:

$ lb config
$ echo "task-gnome-desktop task-laptop" >> config/package-lists/my.list.chroot
$ echo "task-japanese task-japanese-desktop task-japanese-gnome-desktop" >> config/package-lists/my.list.chroot

8.3 Instalar paquetes modificados o de terceros

Si bien está en contra de la filosofía de Debian Live, en ocasiones es necesario crear un sistema en vivo con versiones de paquetes modificados a partir de los disponibles en el repositorio de Debian. Estos paquetes pueden modificar características existentes o dar soporte a características adicionales, idiomas y derivados (branding), o eliminar elementos existentes en los paquetes que no son de interes. De manera similar, se pueden incluir paquetes «de terceros» para añadir funcionalidades a medida o propietarias.

En esta sección no se describe la creación o mantenimiento de paquetes personalizados. Puede ser interesante una lectura del método descrito por Joachim Breitner 'How to fork privately' en ‹http://www.joachim-breitner.de/blog/archives/282-How-to-fork-privately.html›. La guía del nuevo desarrollador de Debian en ‹http://www.debian.org/doc/maint-guide/› describe la creación de paquetes a medida.

Existen dos formas de instalar paquetes personalizados:

  • packages.chroot
  • Utilizando un repositorio APT personalizado
  • El método packages.chroot es el más simple para añadir paquetes personalizados. Es muy útil para personalizaciones «rápidas» (one-off) pero tiene unos cuantos inconvenientes mientras que la utilización de un repositorio APT personalizado es más lento de poner en marcha.

    8.3.1 Método packages.chroot para instalar paquetes personalizados

    Para instalar paquetes personalizados solamente hay que copiar el paquete en el directorio config/packages.chroot/. Los paquetes contenidos en este directorio serán automáticamente instalados en el sistema en vivo durante el proceso de creación. No es necesario especificar de dónde se deben obtener los paquetes.

    Los paquetes deben nombrarse de la forma prescrita. La forma más simple es usar dpkg-name.

    El método packages.chroot para la instalación de paquetes personalizados tiene desventajas:

  • No es posible utilizar secure APT.
  • Se deben depositar todos los paquetes apropiados en el directorio config/packages.chroot/.
  • No es adecuado para almacenar configuraciones de Debian Live en un control de versiones.
  • 8.3.2 Método de repositorio APT para instalar paquetes personalizados

    Al contrario del método packages.chroot, cuando se utiliza el método de repositorio APT personalizado se debe asegurar que se especifica dónde se deben buscar los paquetes a instalar. Para más información ver Selección de los paquetes a instalar.

    Aunque crear un repositorio APT para instalar paquetes personalizados puede parecer un esfuerzo innecesaro, la infraestructurar puede ser fácilmente reutilizada posteriormente para ofrecer nuevas versiones de los paquetes.

    8.3.3 Paquetes personalizados y APT

    live-build utiliza APT para instalar todos los paquetes en el sistema en vivo, así que hereda sus comportamientos. Un punto a resaltar es que (asumiendo una configuración de APT por defecto) dado un paquete en dos repositorios diferentes con diferentes números de versiones, APT seleccionará para instalar el paquete con número de versión superior.

    Esta sería una buena razón para incrementar el número de version en los ficheros debian/changelog de los paquetes personalizados y así asegurar que serán estos los paquetes instalados en lugar de los contenidos en los repositorios oficiales de Debian. Esto puede también lograrse alterando las preferencias de pinning de APT del sistema en vivo. Para más información ver APT pinning.

    8.4 Configurar APT en la creación

    Se puede configurar APT mediante varias opciones que se aplicarán en el momento de crear la imagen. (La configuración que APT utilizará cuando se ejecute el sistema en vivo puede ser configurada de la manera que habitualmente se utiliza para introducir contenidos del sistema en vivo, esto es, incluyendo las configuraciones apropiadas en el directorio config/includes.chroot/.) Se puede encontrar una lista completa de las opciones para configurar APT en la página de manual de lb_config. Son aquellas opciones que comienzan con apt.

    8.4.1 Utilizar apt o aptitude

    Se puede seleccionar qué herramienta se utilizará para instalar paquetes, apt o aptitude, en el momento de crear la imagen mediante la opción --apt de lb config. Esta selección definirá el comportamiento preferido en la instalación de paquetes, siendo la mayor diferencia la manera de tratar los paquetes no disponibles.

  • apt: Con este método, si se especifica un paquete no existente, la instalación fallará. Es el comportamiento por defecto.
  • aptitude: Con este método, si se especifica un paquete no existente, la instalación continuará sin error.
  • 8.4.2 Utilización de un proxy con APT

    Un problema habitual en la configuración de APT es tratar con la creación de una imagen desde detras de un proxy. Se puede especificar dicho proxy con las opciones --apt-ftp-proxy o --apt-http-proxy. Por ejemplo:

    $ lb config --apt-http-proxy http://proxy/

    8.4.3 Tweaking APT to save space

    En ocasiones es necesario ahorrar un poco de espacio en el medio de instalación. Las dos opciones descritas a continuación pueden ser de interes.

    Si no se desea incluir los índices de APT en la imagen creada se puede utilizar la siguiente opción:

    $ lb config --apt-indices false

    Esto no modificará el comportamiento de las entradas definidas en /etc/apt/sources.list, sino que solo afecta a si exitirán o no ficheros de índice en el directorio /var/lib/apt. El compromiso viene de que APT necesita estos ficheros índices para funcionar en el sistema en vivo, así que, si no existen, el usuario deberá ejecutar la orden apt-get update para crear estos índices antes de poder ejecutar una orden del tipo apt-cache search o apt-get install.

    If you find the installation of recommended packages bloats your image too much, provided you are prepared to deal with the consequences discussed below, you may disable that default option of APT with:

    $ lb config --apt-recommends false

    The most important consequence of turning off recommends is that live-boot and live-config themselves recommend some packages that provide important functionality used by most Live configurations, such as user-setup which live-config recommends and is used to create the live user. In all but the most exceptional circumstances you need to add back at least some of these recommends to your package lists or else your image will not work as expected, if at all. Look at the recommended packages for each of the live-* packages included in your build and if you are not certain you can omit them, add them back into your package lists.

    The more general consequence is that if you don't install recommended packages for any given package, that is, "packages that would be found together with this one in all but unusual installations" (Debian Policy Manual, section 7.2), some packages that users of your Live system actually need may be omitted. Therefore, we suggest you review the difference turning off recommends makes to your packages list (see the binary.packages file generated by lb build) and re-include in your list any missing packages that you still want installed. Alternatively, if you find you only want a small number of recommended packages left out, leave recommends enabled and set a negative APT pin priority on selected packages to prevent them from being installed, as explained in APT pinning.

    8.4.4 Pasar opciones a apt o a aptitude

    Si no existe ninguna opción de lb config para alterar el comportamiento de APT tal y como se desea, se puede utilizar las opciones --apt-options o --aptitude-options para pasar cualquier opción que se desee a la herramienta APT. Para más información, ver las páginas de manual de apt y aptitude.

    8.4.5 APT pinning

    Como información básica, sería recomendable leer la página de manual apt_preferences(5). APT pinning puede ser configurado o en tiempo de creación de la imagen, creando el fichero config/chroot_apt/preferences o en tiempo de ejecución del sistema en vivo creando el fichero config/includes.chroot/etc/apt/preferences.

    Supongamos que se está creando un sistema en vivo basado en wheezy pero se necesita instalar todos los paquetes "live" que terminan instalados en la imagen binaria final desde la versión inestable «sid» en el momento de crear la imagen. Se deberá añadir sid a los orígenes (sources) de APT y fijarlo (pin) de manera que solamente los paquetes fijados sean instalados desde sid mientras que el resto será obtenido desde la distribución base, wheezy. Esto se puede realizar de la siguiente forma:

    $ echo "deb http://mirror/debian sid main" > config/archives/sid.list.chroot
    $ cat >> config/chroot_apt/preferences << END
    Package: live-boot live-boot-initramfs-tools live-config live-config-sysvinit
    Pin: release n=sid
    Pin-Priority: 600

    Package: *
    Pin: release n=sid
    Pin-Priority: 1
    END

    Nota: Se pueden usar comodines en los nombres de los paquetes a fijar (p.ej. Package: live-*) si se usa una versión de apt igual o superior a 0.8.14. Esto significa que funciona con wheezy usando:

    $ lb config --distribution wheezy

    Una prioridad pin negativa previene la instalación de un paquete, como puede ser el caso de que no se desee que un paquete recomendado por otro sea instalado al instalar el primero. Supongamos que se está creando una imagen LXDE añadiendo task-lxde-desktop en config/package-lists/lxde-desktop.list.chroot, pero no se desea preguntar al usuario si desea almacenar las claves wifi en el almacen de claves. Este metapaquete depende de lxde-core, el cual recomienda gksu que a su vez recomienda gnome-keyring. Así que el objetivo es omitir la instalación del paquete gnome-keyring, que puede conseguirse añadiendo un fichero con el siguiente contenido a config/chroot_apt/preferences:

    Package: gnome-keyring
    Pin: version *
    Pin-Priority: -1