Live manual Debian Live

# Debian Live Manual

# Personalizzare l'installazione dei pacchetti

367

# 8. Personalizzare l'installazione dei pacchetti

368

Perhaps the most basic customization of a live system is the selection of packages to be included in the image. This chapter guides you through the various build-time options to customize live-build's installation of packages. The broadest choices influencing which packages are available to install in the image are the distribution and archive areas. To ensure decent download speeds, you should choose a nearby distribution mirror. You can also add your own repositories for backports, experimental or custom packages, or include packages directly as files. You can define lists of packages, including metapackages which will install many related packages at once, such as packages for a particular desktop or language. Finally, a number of options give some control over apt, or if you prefer, aptitude, at build time when packages are installed. You may find these handy if you use a proxy, want to disable installation of recommended packages to save space, or need to control which versions of packages are installed via APT pinning, to name a few possibilities.

369

8.1 Sorgenti dei pacchetti

370

8.1.1 Distribuzione, le aree di archivio e le modalità

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

All'interno dell'archivio dei pacchetti, le aree sono le principali divisioni dello stesso. In Debian queste sono `main`, `contrib` e `non-free`; soltanto `main` contiene il software che è parte di Debian, perciò questa è la predefinita. Possono essere specificati uno o più valori:

377

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

378

Attraverso l'opzione `--mode` è disponibile un supporto sperimentale per alcune derivate di Debian; per impostazione predefinita, questa opzione è impostata su `debian` solo se si sta costruendo su un sistema Debian o sconosciuto. Invocando `lb config` su una delle derivate supportate, verrà creata un'immagine di quella derivata in modo predefinito. Se `lb config` viene ad esempio eseguito in modalità `ubuntu`, saranno gestiti i nomi della distribuzione e le aree di archivio per la derivata specificata e non quelli di Debian. La modalità cambia anche il comportamento di live-build per adattarlo alle derivate.

379

Note: The projects for whom these modes were added are primarily responsible for supporting users of these options. The Debian Live Project, in turn, provides development support on a best-effort basis only, based on feedback from the derivative projects as we do not develop or support these derivatives ourselves.

380

8.1.2 Mirror delle distribuzioni

381

L'archivio Debian è replicato attraverso una vasta rete di mirror in tutto il mondo cosicché chiunque in ogni nazione può selezionare il mirror più vicino per una migliore velocità di scaricamento. Ciascuna delle opzioni `--mirror-*` determina quale mirror della distribuzione è usato nei vari stadi della compilazione. Ricordando dalle Fasi della creazione che la fase di avvio è quando il chroot è inizialmente popolato da debootstrap con un sistema minimale e quella di chroot è quando viene creato il chroot usato per costruire il file system del sistema live. Perciò per queste fasi vengono usati i corrispondenti cambi di mirror, e in seguito, nella fase binaria vengono usati i valori di `--mirror-binary` e `--mirror-binary-security` sostituendo qualsiasi altro mirror usato nelle fasi iniziali.

382

8.1.3 Mirror delle distribuzioni usati in fase di compilazione

383

To set the distribution mirrors used at build time to point at a local mirror, it is sufficient to set `--mirror-bootstrap` and `--mirror-chroot-security` as follows.

384

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

385

Il mirror chroot, specificato da `--mirror-chroot`, è impostato al valore di `--mirror-bootstrap` in modo predefinito.

386

8.1.4 Mirror delle distribuzioni usate durante l'esecuzione

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 Repository addizionali

390

Si possono aggiungere altri repository, ampliando così la scelta dei pacchetti al di là di quelli disponibili nella distribuzione di destinazione. Questi possono essere, per esempio, pacchetti di backport, sperimentali o personalizzati. Per configurare repository aggiuntivi, creare i file `config/archives/vostro-repository.list.chroot`, o `config/archives/vostro-repository.list.binary`. Come per le opzioni `--mirror-*`, queste controlleranno i repository usati nella fase chroot quando si compila l'immagine, e nella fase binary, ad esempio per usarli quando il sistema live è avviato.

391

Per esempio, `config/archives/live.list.chroot` permette di installare pacchetti dal repository snapshot debian-live al momento della creazione del sistema live.

392

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

393

Se si aggiunge la stessa riga in `config/archives/live.list.binary`, il repository verrà aggiunto alla directory `/etc/apt/sources.list.d/` del sistema live.

394

Se questi file esistono saranno prelevati automaticamente.

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

Se si necessita di personalizzare il pinning di APT, le sezioni di APT preferences possono essere inserite nei file `config/archives/mio-repository.pref.{binary,chroot}` e verranno automaticamente aggiunte nella directory `/etc/apt/preferences.d/` del sistema live.

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 Scegliere i pacchetti da installare

399

Ci sono diversi modi per scegliere quali pacchetti live-build installerà nell'immagine, coprendo una gamma di esigenze diverse. Si possono richiamare i singoli pacchetti da un elenco, usare i metapacchetti o selezionarli tramite il file control. E infine inserire i file dei pacchetti nell'albero `config/`, che ben si adatta a provare pacchetti nuovi o sperimentali prima che siano disponibili in un repository.

400

8.2.1 Elenchi di pacchetti

401

Gli elenchi di pacchetti sono un potente mezzo per esprimere quali pacchetti devono essere installati. La sintassi gestisce sezioni condizionali rendendo semplice la creazione di elenchi e adattarli per l'uso in molteplici configurazioni. I nomi dei pacchetti possono inoltre essere inseriti nell'elenco utilizzando script shell in fase di compilazione.

402

Nota: quando si specifica un pacchetto che non esiste, il comportamento di live-build è determinato dalla scelta delle utilità di APT. Per ulteriori dettagli si veda Scegliere apt o aptitude.

403

8.2.2 Usare metapacchetti

404

Il metodo più semplice per popolare una lista di pacchetti è utilizzare un metapacchetto task manutenuto dalla distribuzione. Ad esempio:

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

Tutti i metapacchetti task iniziano per `task-`, un modo per determinare quali siano disponibili (sebbene possa contenere alcuni falsi positivi che corrispondono al nome ma non sono metapacchetti) è di controllare il nome del pacchetto con:

408

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

409

In aggiunta a questi si trovano altri metapacchetti per vari scopi. Alcuni sono dei sottoinsiemi dei pacchetti task generici, come `gnome-core`, mentre altri sono parti individuali di un Debian Pure Blend, come il metapacchetto `education-*`. Per elencarli tutti installare il pacchetto `debtags` e usare il tag `role::metapackage` come segue:

410

$ debtags search role::metapackage

411

8.2.3 Elenchi locali dei pacchetti

412

Se si richiede l'elenco di metapacchetti, pacchetti individuali o una combinazione di entrambi tutte le liste dei pacchetti locali vengono salvate in `config/package-lists/`. Giacché è possibile usare più di una lista, ciò si presta bene a progetti modulari. Si può ad esempio decidere di dedicare un elenco ad un particolare desktop, un altro ad un insieme di pacchetti correlati utilizzabili con desktop differenti. Questo permette di sperimentare diverse combinazioni di insiemi di pacchetti con il minimo sforzo condividendo gli elenchi tra progetti live differenti.

413

Per essere processati, gli elenchi dei pacchetti che si trovano in questa directory devono avere un suffisso `.list` e un suffisso `.chroot` o `.binary` aggiuntivo per indicare per quale fase sia l'elenco.

414

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

415

Nota: se non si specifica il suffisso l'elenco sarà usato per entrambe le fasi. Normalmente è preferibile specificare `.list.chroot` in modo che i pacchetti vengono installati solo nel filesystem live evitando di avere una copia extra del `.deb` sul dispositivo.

416

8.2.4 Elenchi locali di pacchetti binari

417

Per creare un elenco di binari inserire un file con suffisso `.list.binary` in `config/package-lists/`; questi pacchetti non sono installati nel filesystem ma inclusi sul dispositivo live sotto `pool/`. Solitamente questo elenco si usa con una delle varianti non-live dell'installatore; come detto sopra, se si vuole che questo sia identico all'elenco della fase chroot, usare semplicemente il suffisso `.list`.

418

8.2.5 Elenchi di pacchetti generati

419

Talvolta succede che il modo migliore per ottenere un elenco è di generarlo con uno script. Ogni riga che inizia con un punto esclamativo indica un comando da eseguire nel chroot quando viene creata l'immagine. Ad esempio si potrebbe includere la riga `! grep-aptavail -n -sPackage -FPriority standard | sort` in una lista di pacchetti per produrne una contenente i pacchetti con `Priority: standard` disponibili.

420

Infatti selezionare i pacchetti con il comando `grep-aptavail` (presente nel pacchetto `dctrl-tools`) è talmente utile che `live-build` fornisce uno script `Packages` per comodità; accetta due argomenti: `field` e `pattern`. Per cui si può creare un elenco con il seguente contenuto:

421

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

422

8.2.6 Usare condizioni all'interno degli elenchi di pacchetti

423

Ognuna delle variabili di configurazione di live-build situate in `config/*` (senza il prefisso `LB_`) possono essere utilizzate per istruzioni condizionali nell'elenco dei pacchetti. In genere questo significa qualsiasi opzione di `lb config` in maiuscolo e con trattini cambiati in trattini bassi; ma in pratica è la sola ad influenzare la selezione dei pacchetti che abbia senso, come `DISTRIBUTION`, `ARCHITECTURES` o `ARCHIVE_AREAS`.

424

Per esempio, per installare `ia32-libs` se è specificata `--architectures amd64`:

425

#if ARCHITECTURES amd64
ia32-libs
#endif

426

Si può provare per ognuna di una serie di valori, ad esempio per installare memtest86+ specificando sia `--architectures i386` sia `--architectures amd64`:

427

#if ARCHITECTURES i386 amd64
memtest86+
#endif

428

È possibile provare altre variabili che contengano più di un valore, ad esempio per installare vrms specificando sia da `contrib` sia da `non-free` tramite `--archive-areas`:

429

#if ARCHIVE_AREAS contrib non-free
vrms
#endif

430

Le condizioni nidificate non sono supportate.

431

8.2.7 Removing packages at install time

432

You can list packages in files with `.list.chroot_live` and `.list.chroot_install` suffixes inside the `config/package-lists` directory. If both a live and an install list exist, the packages in the `.list.chroot_live` list are removed with a hook after the installation (if the user uses the installer). The packages in the `.list.chroot_install` list are present both in the live system and in the installed system. This is a special tweak for the installer and may be useful if you have `--debian-installer live` set in your config, and wish to remove live system-specific packages at install time.

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 Task per desktop e lingua

439

I task per i desktop e la lingua sono un caso particolare che necessita di ulteriori pianificazioni e configurazioni e in questo senso le immagini live sono diverse da quelle dell'Installatore Debian. Nell'Installatore Debian, se il supporto è stato preparato per un particolare ambiente desktop, il corrispondente task verrà automaticamente installato. Perciò ci sono task `gnome-desktop`, `kde-desktop`, `lxde-desktop` e `xfce-desktop` interni, nessuno dei quali è offerto nel menu di `tasksel`. Allo stesso modo, non c'è nessuna voce nel menu per i task delle lingue, ma la scelta della lingua dell'utente durante l'installazione influenza la selezione dei corrispondenti task della lingua.

440

Sviluppando un'immagine live per desktop, questa si avvia direttamente su un'area di lavoro, le scelte del desktop e della lingua predefinita sono state fatte al momento della compilazione e non al volo come nel caso dell'installatore Debian. Questo non per dire che un'immagine live non possa essere creata con un supporto per desktop o lingue multipli per offrire all'utente una scelta, ma che non è il comportamento predefinito nella creazione di una live.

441

Poiché automaticamente non viene fatta alcuna preparazione sui task della lingua, i quali includono cose come caratteri specifici per la lingua e pacchetti per i metodi di input, se li si vogliono, vanno specificati nella configurazione. Per esempio, un'immagine del desktop GNOME contenente il supporto per il tedesco può includere questi metapacchetti task:

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 Tipi e versioni del kernel

444

A seconda dell'architettura, nell'immagine verranno inclusi uno o più tipi di kernel in modo predefinito. È possibile scegliere tipi differenti tramite l'opzione `--linux-flavours`, ognuno ha come suffisso `linux-image` che costituisce il nome del metapaccchetto che a sua volta dipende dall'esatto pacchetto del kernel da inserire nell'immagine.

445

Thus by default, an `amd64` architecture image will include the `linux-image-amd64` flavour metapackage, and an `i386` architecture image will include the `linux-image-586` metapackage.

446

When more than one kernel package version is available in your configured archives, you can specify a different kernel package name stub with the `--linux-packages` option. For example, supposing you are building an `amd64` architecture image and add the experimental archive for testing purposes so you can install the `linux-image-3.18.0-trunk-amd64` kernel. You would configure that image as follows:

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 Kernel personalizzati

449

Si può compilare e includere i propri kernel personalizzati a patto che siano integrati nel sistema di gestione dei pacchetti di Debian. Il sistema live-build non supporta i kernel né crea pacchetti `.deb`.

450

La maniera corretta e raccommandata per collocare i propri pacchetti è di seguire le istruzioni nel `kernel-handbook`. Ricordarsi di modificare i suffissi per ABI e tipologia in modo appropriato quindi includere una compilazione completa del pacchetto `linux` e del corrispondente `linux-latest` nel reposistory.

451

Se si opta per creare i pacchetti del kernel senza i metapacchetti corrispondenti, bisogna specificare un suffisso `--linux-packages` appropriato come discusso in Tipi e versioni del kernel. Come spiegato in Installare pacchetti modificati o di terze parti, è meglio includere i propri pacchetti del kernel nel proprio repository, sebbene funzionino anche le alternative discusse in tale sezione.

452

Fornire suggerimenti sul come personalizzare il proprio kernel va oltre lo scopo di questa documentazione, tuttavia è necessario assicurarsi che la configurazione soddisfi almeno i seguenti requisiti minimi:

453

- Utilizzare un ramdisk iniziale;

454

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

455

- includere qualsiasi altro modulo del filesystem necessario alla configurazione (solitamente `squashfs`).

456

8.3 Installare pacchetti modificati o di terze parti

457

While it is against the philosophy of a live system, it may sometimes be necessary to build a live system with modified versions of packages that are in the Debian repository. This may be to modify or support additional features, languages and branding, or even to remove elements of existing packages that are undesirable. Similarly, "third-party" packages may be used to add bespoke and/or proprietary functionality.

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

Ci sono due modi per installare pacchetti personalizzati:

460

- `packages.chroot`

461

- utilizzare repository APT personalizzati

462

Usando `packages.chroot` è più semplice da ottenere e utile per una personalizzazione "una tantum" ma ha una serie di svantaggi, mentre un repository APT personalizzato è più laborioso da configurare.

463

8.3.1 Utilizzare `packages.chroot` per installare pacchetti personalizzati

464

Per installare un pacchetto personalizzato copiarlo nella directory `config/packages.chroot/`; i pacchetti al suo interno verranno installati automaticamente durante la creazione del sistema live, non è necessario specificarli altrove.

465

I pacchetti devono essere nominati nel modo prescritto, un metodo semplice per farlo è usare `dpkg-name`.

466

L'utilizzo di `packages.chroot` per l'installazione di pacchetti personalizzati presenta degli svantaggi:

467

- non è possibile usare secure APT,

468

- è necessario installare i pacchetti adeguati nella directory `config/packages.chroot/`,

469

- It does not lend itself to storing live system configurations in revision control.

470

8.3.2 Utilizzare un repository APT per installare pacchetti personalizzati

471

A differenza di `packages.chroot`, quando si usa un repository APT personalizzato è necessario assicurarsi di specificare altrove i pacchetti. Per i dettagli si veda Scegliere i pacchetti da installare.

472

Sebbene creare un repository APT possa sembrare uno sforzo inutile, l'infrastruttura può facilmente essere riutilizzata in un secondo momento per offrire aggiornamenti dei pacchetti modificati.

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 Pacchetti personalizzati e APT

484

live-build utilizza APT per installare tutti i pacchetti nel sistema live in modo da ereditare i comportamenti di questo programma. Un esempio rilevante è che (considerando una configurazione predefinita) dato un pacchetto disponibile in due repository differenti con numeri di versione diversi, APT sceglie di installare quello con il numero di versione più alto.

485

A causa di questo si può voler incrementare il numero della versione nei file `debian/changelog` dei pacchetti personalizzati per accertare che la propria versione avrà la precedenza sui repository Debian ufficiali. È anche ottenibile modificando le preferenze del APT pinning del sistema live, si veda APT pinning per maggiori informazioni.

486

8.4 Configurare APT in fase di compilazione

487

APT è configurabile tramite una serie di opzioni applicate solo in fase di costruzione (la configurazione di APT utilizzata nel sistema live in esecuzione può essere configurata nel solito modo, ovvero includendo le impostazioni appropriate attraverso `config/includes.chroot/`). Per un elenco completo, cercare nel manuale di `lb_config` le opzioni che iniziano con `apt`.

488

8.4.1 Scegliere apt o aptitude

489

Per installare pacchetti in fase di compilazione si può optare sia per apt sia per aptitude, l'argomento `--apt` di `lb config` determina quale usare. Sceglie il metodo implementando il comportamento preferito per l'installazione dei pacchetti, la notevole differenza è come vengono gestiti quelli mancanti.

490

- `apt`: se viene specificato un pacchetto mancante, l'installazione avrà esito negativo; questo è l'impostazine predefinita.

491

- `aptitude`: se viene specificato un pacchetto mancante, l'installazione avrà successo.

492

8.4.2 Utilizzare 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 Modificare APT per risparmiare spazio

496

Si può aver bisogno di risparmiare dello spazio sul supporto dell'immagine, in tal caso una o entrambe delle seguenti opzioni possono essere d'interesse.

497

È possibile non includere gli indici di APT con:

498

$ lb config --apt-indices false

499

Questo non influenzerà le voci in `/etc/apt/sources.list`, determina solo se /#{var/lib/apt}# contiene o meno i file degli indici. Il compromesso è che APT necessita di quegli indici per operar enel sistema live, perciò prima di eseguire `apt-cache search` o `apt-get install`, per esempio, l'utente deve usare prima `apt-get update` per crearli.

500

In caso si trovi che l'installazione dei pacchetti raccomandati appesantisca troppo l'immagine, a patto si è preparati ad affrontare le conseguenze discusse prima, si può disabilitare l'opzione predefinita di 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 Passare opzioni ad apt o aptitude

510

Se non esiste un'opzione di `lb config` per modificare il comportamento di APT come si desidera, utilizzare `--apt-options` o `--aptitude-options` per passare qualsiasi argomento tramite lo strumento APT scelto. Per i dettagli consultare le pagine di manuale di `apt` e `aptitude`. Notare che entrambe le opzioni hanno valori predefiniti che servirà mantenere in aggiunta a qualsiasi altra fornita. Per cui supponendo di aver incluso qualcosa da `snapshot.debian.org` per fare dei test e volendo specificare `Acquire::Check-Valid-Until=false` per soddisfare APT con il vecchio file `Release`, si procederà come nell'esempio riportato di seguito, appendendo la nuova opzione al valore predefinito `--yes`:

511

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

512

Per apprendere a pieno queste opzioni e sapere quando usarle consultare i manuali. Questo è solo un esempio e non va interpretato come il modo per configurare la propria immagine, non sarebbe appropriato per il rilascio finale.

513

Per configurazioni di APT più complesse che comportano l'uso di opzioni in `apt.conf` si può voler creare invece il file `config/apt/apt.conf`. Vedere anche le altre opzioni `apt-*` per alcune comode scorciatoie di operazioni di uso frequente.

514

8.4.5 APT pinning

515

Si prega di leggere prima il manuale di `apt_preferences(5)`. Il pinning può essere configurato sia in fase di costruzione sia di esecuzione; per la prima creare `config/archives/*.pref`, `config/archives/*.pref.chroot`, e `config/apt/preferences` mentre per l'ultima creare `config/includes.chroot/etc/apt/preferences`.

516

Let's say you are building a trixie live system but need all the live packages that end up in the binary image to be installed from sid at build time. You need to add sid to your APT sources and pin the live packages from it higher, but all other packages from it lower, than the default priority. Thus, only the packages you want are installed from sid at build time and all others are taken from the target system distribution, trixie. The following will accomplish this:

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

Un valore negativo della priorità evita che un pacchetto venga installato, come nel caso in cui non se ne voglia uno raccomandato da un altro. Supponiamo di costruire un'immagine di LXDE utilizzando l'opzione `task-lxde-desktop` in `config/package-lists/desktop.list.chroot} ma non si desidera che all'utente venga richiesto di salvare la password del wifi nel portachiavi. Questo metapacchetto dipende da lxde-core che raccomanda gksu e che a sua volta raccomanda gnome-keyring, in questo caso si vorrà omettere il pacchetto gnome-keyring aggiungendo a #{config/apt/preferences` la seguente istruzione:

519

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