Live manual Debian Live

# Debian Live Manual

# Personalización de la instalación de paquetes

367

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

368

Quizás la tarea más básica de personalización de un sistema en vivo 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 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 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.

369

8.1 Origen de los paquetes

370

8.1.1 Distribución, áreas de archivo y modo

371

The distribution you choose has the broadest impact on which packages are available to include in your live image. Specify the codename, which defaults to testing. Any current distribution carried in the archive may be specified by its codename here. (See Terms for more details.) The `--distribution` option not only influences the source of packages within the archive, but also instructs live-build to enable other sources.

372

For example, to build against the stable release, with security, updates (enabled per default) and additionally proposed-updates and backports, specify:

373

$ lb config --distribution stable --proposed-updates true --backports true

374

Similarly, for the unstable release, sid, which has neither security nor updates, specify:

375

$ lb config --distribution sid

376

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:

377

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

378

Experimentalmente se da soporte a alguna distribución derivada de Debian mediante la opción `--mode`. Por defecto, esta opción toma el valor `debian` sólo si se está construyendo en un sistema Debian o en un sistema desconocido. Si se utiliza `lb config` en cualquiera de las distribuciones derivadas a las que se da soporte, por defecto se construirá una imagen de esa distribución derivada. Por ejemplo, si `lb config` se ejecuta en modo `ubuntu` se utilizará el nombre de esa distribución y las áreas de archivos específicas de esa distribución derivada en lugar de los propios de Debian y live-build modificará su comportamiento para adecuarlo al modo seleccionado.

379

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 Debian Live Project 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.

380

8.1.2 Réplicas de Distribución Debian

381

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 bootstrap es cuando se crea el directorio chroot 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.

382

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

383

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

384

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

385

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

386

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

387

The `--mirror-binary*` options govern the distribution mirrors placed in the binary image. These may be used to install additional packages while running the live system. The defaults employ `deb.debian.org`, a service that chooses a geographically close mirror based, among other things, on the user's IP family and the availability of the mirrors. This is a suitable choice when you cannot predict which mirror will be best for all of your users. Or you may specify your own values as shown in the example below. An image built from this configuration would only be suitable for users on a network where "`mirror`" is reachable.

388

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

389

8.1.5 Repositorios adicionales

390

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.

391

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.

392

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

393

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.

394

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

395

You should also put the ASCII-armored GPG key used to sign the repository into `config/archives/your-repository.key.{binary,chroot}` files.

396

En caso de necesitar un APT pinning personalizado, las preferencias de APT se pueden colocar mediante ficheros `config/archives/your-repository.pref.{binary,chroot}`, y serán añadidos automáticamente al sistema en vivo en el directorio `/etc/apt/preferences.d/`.

397

Similarly, if you need custom APT_AUTH.CONF(5) authentication configuration, this can be placed in `config/archives/your-repository.auth.{binary,chroot}` files and will be automatically added to your live system's `/etc/apt/auth.conf.d/` directory

398

8.2 Selección de los paquetes a instalar

399

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/`.

400

8.2.1 Listas de paquetes

401

Las listas de paquetes proporcionan una potente forma de expresar qué paquetes deberían ser instalados. La sintaxis de las listas soporta las expresiones condicionales, que facilitan la creación de 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.

402

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.

403

8.2.2 Utilizar metapaquetes

404

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

405

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

406

This supersedes the older predefined list method supported in `live-build` 2.x. Unlike predefined lists, task metapackages are not specific to the Live System project. Instead, they are maintained by specialist working groups within the distribution and therefore reflect the consensus of each group about which packages best serve the needs of the intended users. They also cover a much broader range of use cases than the predefined lists they replace.

407

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:

408

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

409

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:

410

$ debtags search role::metapackage

411

8.2.3 Listas de paquetes locales

412

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.

413

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.

414

The packages in the `.list.chroot_install` list are present both in the live system and in the installed system.

415

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`.

416

8.2.4 Listas de paquetes locales para la etapa binary

417

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`

418

8.2.5 Generar listas de paquetes

419

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`.

420

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:

421

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

422

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

423

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 barras bajas. 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`.

424

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

425

#if ARCHITECTURES amd64
ia32-libs
#endif

426

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:

427

#if ARCHITECTURES i386 amd64
memtest86+
#endif

428

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:

429

#if ARCHIVE_AREAS contrib non-free
vrms
#endif

430

No se permite el anidamiento de estructuras condicionales.

431

8.2.7 Eliminación paquetes durante la instalación

432

Se puede crear listas de paquetes en ficheros con los sufijos `.list.chroot_live` y `.list.chroot_install` dentro del directorio `config/package-lists`. Si existe una lista «live» y una lista «install» los paquetes de la lista `.list.chroot_live` se eliminan con un script gancho después de la instalación (si el usuario utiliza el instalador). Los paquetes de la lista `.list.chroot_install` estarán presentes tanto en el sistema en vivo como en el sistema instalado. Este es un caso especial para el instalador y puede ser útil si se tiene `--debian-installer live` establecido en la configuración y se desea eliminar paquetes específicos del sistema en vivo durante la instalación.

433

8.2.8 Summary

434

The table below shows which configuration files are required to achieve the desired availability of the package.

435

| X.chroot | X.chroot_live | X | X.binary
--- | --- | --- | --- | ---
Package is installed in the live system | Yes | Yes | Yes | No
Package is removed after installing the live system | No | Yes | No | N/A
Package can be installed from the live system without network | N/A | N/A | Yes *1 | Yes

436

*1: Because the installer needs this package

437

`X` = `config/package-lists/custom_name.list`

438

8.2.9 Tareas de Escritorio e Idioma

439

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.

440

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.

441

Ya que no se ha previsto la instalación automática de tareas de idiomas, que incluyen cosas tales como tipos de letra específicos de cada lengua o paquetes de métodos de entrada, si se quiere incluirlos, es necesario especificarlo en la configuración. Por ejemplo, una imagen de escritorio GNOME que contenga soporte para el alemán podría incluir los siguientes metapaquetes de tareas:

442

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

443

8.2.10 Versión y tipo de kernel

444

Dependiendo de la arquitectura, se incluyen por defecto en las imágenes uno o más tipos de kernels. Se puede elegir entre diferentes tipos utilizando la opción `--linux-flavours`. Cada tipo tiene el sufijo de la raíz predeterminada `linux-image` para formar el nombre de cada metapaquete que a su vez depende del paquete del kernel exacto que debe incluirse en la imagen.

445

Así, por defecto, una imagen de arquitectura `amd64` incluirá el metapaquete `linux-image-amd64` y una imagen de arquitectura `i386` incluirá el metapaquete `linux-image-586`.

446

Cuando hay más de una versión diferente del paquete del kernel disponible en los archivos configurados, se puede especificar el nombre de un paquete del kernel diferente con la opción `--linux-packages`. Por ejemplo, suponer que se está construyendo una image de arquitectura `amd64` y se quiere añadir el archivo experimental a fin de realizar pruebas. Para que se pueda instalar el kernel `linux-image-3.18.0-trunk-amd64`, se podría configurar la imagen de la siguiente manera:

447

$ lb config --linux-packages linux-image-3.18.0-trunk
$ echo "deb http://deb.debian.org/debian/ experimental main" > config/archives/experimental.list.chroot

448

8.2.11 Kernels personalizados

449

Se pueden crear e incluir kernels personalizados, pero hay que tener en cuenta que live-build sólo soporta los kernels que se integran en el sistema de gestión de paquetes de Debian y no es compatible con kernels que no esten en paquetes `.deb`.

450

La manera apropiada y recomendada de implementar los propios paquetes del kernel es seguir las instrucciones del `kernel-handbook`. Recordar modificar el ABI y los sufijos de los tipos del kernel e incluir los paquetes del kernel completo en un repositorio que coincidan con los paquetes `linux` y `linux-latest`.

451

Si se opta por construir los paquetes del kernel sin los metapaquetes adecuados, es necesario especificar una raíz `--linux-packages` apropiada como se indica en Versión y tipo de kernel. Tal y como se explica en Instalar paquetes modificados o de terceros, es mejor si se incluyen los paquetes del kernel personalizado en un repositorio propio, aunque las alternativas discutidas en esa sección también funcionan.

452

Está más allá del alcance de este documento dar consejos sobre cómo personalizar un kernel. Sin embargo, se debe por lo menos, asegurarse de que la configuración cumple los siguientes requisitos mínimos:

453

- Utilizar un ramdisk inicial.

454

- Include the union filesystem module (i.e. usually `OverlayFS`).

455

- Incluir todos los módulos de sistemas de ficheros requeridos por la configuración (normalmente `squashfs`).

456

8.3 Instalar paquetes modificados o de terceros

457

Si bien está en contra de la filosofía de un sistema en vivo, en ocasiones es necesario crear un sistema 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 marcas, 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.

458

This section does not cover advice regarding building or maintaining modified packages. Joachim Breitner's 'How to fork privately' method from ‹http://www.joachim-breitner.de/blog/archives/282-How-to-fork-privately.html› may be of interest, however. The creation of bespoke packages is covered in the Debian New Maintainers' Guide at ‹https://www.debian.org/doc/manuals/maint-guide/› and elsewhere.

459

Existen dos formas de instalar paquetes personalizados:

460

- `packages.chroot`

461

- Utilizando un repositorio APT personalizado

462

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

463

8.3.1 Método `packages.chroot` para instalar paquetes personalizados

464

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 nada más.

465

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

466

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

467

- No es posible utilizar secure APT.

468

- Se deben depositar todos los paquetes apropiados en el directorio `config/packages.chroot/`.

469

- No es adecuado para almacenar configuraciones en vivo en un control de versiones.

470

8.3.2 Método de repositorio APT para instalar paquetes personalizados

471

A diferencia 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.

472

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.

473

The APT repository does not necessarily need to be online, you can use a local repository instead. However, in both cases the repository needs to be signed.

474

Example:

475

$ gpg --armor --output config/archives/custom_repo.gpg.key${EXTENSION} --export-options export-minimal --export ${SIGNING_KEY}
$ cat << EOF > config/archives/custom_repo.list${EXTENSION}
deb [signed-by=/etc/apt/trusted.gpg.d/custom_repo.gpg.key${EXTENSION}.asc] ${URI} ${SUITE} ${COMPONENTS}
EOF
$ echo "${PACKAGES_FROM_REPOSITORY}" > config/package-lists/custom_repo.list${EXTENSION}

476

Where:

477

- `${EXTENSION}` : the optional stage suffix, see the summary

478

- `${SIGNING_KEY}`: the keyID of the signature of the repository

479

- `${URI}`: the URI to the repository, e.g. `http://deb.debian.org/debian/` or `file://$(pwd)/my_local_repository`

480

- `${SUITE}`: the suite within the repository, e.g. `my-debian-based-distro`

481

- `${COMPONENTS}`: the components within the repository, e.g. `main`

482

- `${PACKAGES_FROM_REPOSITORY}`: the names of the packages to install (dependencies will automatically be installed as well)

483

8.3.3 Paquetes personalizados y APT

484

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.

485

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.

486

8.4 Configurar APT en la creación

487

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`.

488

8.4.1 Utilizar apt o aptitude

489

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.

490

- `apt`: Con este método, si se especifica un paquete no existente, la instalación fallará. Es el comportamiento por defecto.

491

- `aptitude`: Con este método, si se especifica un paquete no existente, la instalación continuará sin error.

492

8.4.2 Utilización de un proxy con APT

493

One commonly required APT configuration is to deal with building an image behind a proxy. You may specify your APT proxy with the `--apt-http-proxy` option as needed, e.g.

494

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

495

8.4.3 Ajuste de APT para ahorrar espacio

496

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.

497

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

498

$ lb config --apt-indices false

499

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`.

500

Si la instalación de los paquetes recomendados aumenta demasiado el tamaño de la imagen, siempre y cuando se esté preparado para hacer frente a las consecuencias que se mencionan a continuación, se puede desactivar el valor por defecto de esta opción de APT con:

501

$ lb config --apt-recommends false

502

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.

503

Two packages which you most probably will want to add again are:

504

- `user-setup` which `live-config` recommends is used to create the live user.

505

- `sudo` which `live-config` recommends is used to obtain root access in the live-image, which is needed to shutdown the computer.

506

$ lb config --apt-recommends false
$ echo "user-setup sudo" > config/package-lists/recommends.list.chroot

507

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.

508

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.

509

8.4.4 Pasar opciones a apt o a aptitude

510

Si no hay una opción `lb config` para modificar el comportamiento de APT en la forma que se necesita, utilizar `--apt-options` o `--aptitude-options` para pasar opciones a la herramienta APT configurada. Consultar las páginas de manual `apt` y `aptitude` para más detalles. Tener en cuenta que ambas opciones tienen valores por defecto que tendran que mantenerse, además de las opciones que se pueden especificar. Así, por ejemplo, supongamos que se ha incluido algo con fines de prueba de `snapshot.debian.org` y se desea especificar `Acquire::Check-Valid-Until=false` para que APT esté feliz con el fichero `Release` caducado, se haría como en el ejemplo siguiente, añadiendo la opción de nuevo después del valor por defecto `--yes`:

511

$ lb config --apt-options "--yes -oAcquire::Check-Valid-Until=false"

512

Consultar las páginas de manual para entender completamente estas opciones y cuándo utilizarlas. Esto es sólo un ejemplo y no debe ser interpretado como consejo para configurar la imagen. Esta opción no sería apropiada para, por ejemplo, una versión final de una imagen en vivo.

513

Para configuraciones más complicadas que implican opciones `apt.conf` puede ser necesario crear un fichero `config/apt/apt.conf`. Ver tambien las otras opciones `apt-*` para tener algunos atajos convenientes para las opciones que se necesitan con frecuencia.

514

8.4.5 APT pinning

515

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 los ficheros `config/archives/*.pref`, `config/archives/*.pref.chroot`, y `config/apt/preferences`. o en tiempo de ejecución del sistema en vivo creando el fichero `config/includes.chroot/etc/apt/preferences`.

516

Supongamos que se está creando un sistema en vivo basado en trixie 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 fijar (pin) los paquetes live con una prioridad más alta pero todos los otros paquetes con una prioridad más baja que la prioridad por defecto de manera que solamente los paquetes fijados sean instalados desde sid mientras que el resto será obtenido desde la distribución base, trixie. Esto se puede realizar de la siguiente forma:

517

$ echo "deb http://mirror/debian/ sid main" > config/archives/sid.list.chroot
$ cat >> config/archives/sid.pref.chroot << EOF
Package: live-*
Pin: release n=sid
Pin-Priority: 600
Package: *
Pin: release n=sid
Pin-Priority: 1
EOF

518

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/desktop.list.chroot`, pero no se desea preguntar al usuario si desea almacenar las claves wifi en el keyring. 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/apt/preferences`:

519

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