Manuale di Debian Live

A proposito

1. A proposito di questo manuale

1.1 Per gli impazienti
1.2 Glossario
1.3 Autori
1.4 Contribuire a questo documento
1.4.1 Applicare le modifiche
1.4.2 Traduzione

2. A proposito del progetto Debian Live

2.1 Motivazioni
2.1.1 Cosa c'è di sbagliato con gli attuali sistemi live
2.1.2 Perché creare il proprio sistema live?
2.2 Filosofia
2.2.1 Solamente pacchetti da Debian "main", inalterati.
2.2.2 Nessun pacchetto di configurazione per il sistema live
2.3 Contatti

Utente

3. Installazione

3.1 Requisiti
3.2 Installare live-build
3.2.1 Dal repository Debian
3.2.2 Da sorgenti
3.2.3 Da "istantanee"
3.3 Installare live-boot e live-config
3.3.1 Dal repository Debian
3.3.2 Da sorgenti
3.3.3 Da "istantanee"

4. Nozioni di base

4.1 Che cos'è un sistema live?
4.2 Primi passi: creare un'immagine ISO ibrida
4.3 Utilizzare un'immagine ISO live ibrida
4.3.1 Masterizzare un'immagine ISO su un supporto fisico
4.3.2 Copiare un'immagine ISO ibrida su una penna USB
4.3.3 Avviare il supporto live
4.4 Utilizzare una macchina virtuale per le prove
4.4.1 Provare un'immagine ISO con QEMU
4.4.2 Provare un'immagine ISO con virtualbox-ose
4.5 Creare un'immagine HDD
4.6 Utilizzare un'immagine HDD
4.6.1 Provare un'immagine HDD con Qemu
4.6.2 Usare lo spazio rimanente su una penna USB
4.7 Creare un'immagine netboot
4.7.1 Server DHCP
4.7.2 Server TFTP
4.7.3 Server NFS
4.7.4 Come provare una netboot
4.7.5 Qemu
4.7.6 VMWare Player

5. Panoramica degli strumenti

5.1 Il pacchetto live-build
5.1.1 Il comando lb config
5.1.2 Il comando lb build
5.1.3 Il comando lb clean
5.2 Il pacchetto live-boot
5.3 Il pacchetto live-config

6. Gestire una configurazione

6.1 Utilizzare auto per gestire i cambiamenti di configurazione
6.2 Esempi di script automatici

7. Panoramica sulla personalizzazione

7.1 Configurazione in fase di compilazione e di avvio
7.2 Fasi della creazione
7.3 Integrare la configurazione di lb con dei file
7.4 Personalizzazione dei compiti

8. Personalizzare l'installazione dei pacchetti

8.1 Sorgenti dei pacchetti
8.1.1 Distribuzione, le aree di archivio e le modalità
8.1.2 Mirror delle distribuzioni
8.1.3 Mirror delle distribuzioni usati in fase di compilazione
8.1.4 Mirror delle distribuzioni usate durante l'esecuzione
8.1.5 Repository addizionali
8.2 Scegliere i pacchetti da installare
8.2.1 Elenchi di pacchetti
8.2.2 Elenchi predefiniti di pacchetti
8.2.3 Elenchi locali dei pacchetti
8.2.4 Elenchi locali di pacchetti binari
8.2.5 Estendere un'elenco di pacchetti usando gli include
8.2.6 Usare condizioni all'interno degli elenchi di pacchetti
8.2.7 Task
8.2.8 Task per desktop e lingua
8.3 Installare pacchetti modificati o di terze parti
8.3.1 Utilizzare packages.chroot per installare pacchetti personalizzati
8.3.2 Utilizzare un repository APT per installare pacchetti personalizzati
8.3.3 Pacchetti personalizzati e APT
8.4 Configurare APT in fase di costruzione
8.4.1 Scegliere apt o aptitude
8.4.2 Utilizzare un proxy con APT
8.4.3 Modificare APT per risparmiare spazio
8.4.4 Passare opzioni ad apt o aptitude
8.4.5 APT pinning

9. Personalizzazione dei contenuti

9.1 Include
9.1.1 Live/chroot include locali
9.1.2 Include locali binari
9.1.3 Include binari
9.2 Hook
9.2.1 Live/chroot hook locali
9.2.2 Hook in fase di avvio
9.2.3 Hook binari locali
9.3 Preconfigurare le domande di Debconf

10. Personalizzare i comportamenti durante l'esecuzione

10.1 Personalizzare l'utente live
10.2 Personalizzare la localizzazione e la lingua
10.3 Persistenza
10.3.1 The live-persistence.conf file
10.3.2 Sottotesto persistente

11. Personalizzare l'immagine binaria

11.1 Bootloader
11.2 Metadati ISO

12. Personalizzare l'Installatore Debian

12.1 Tipologie dell'Installatore Debian
12.2 Personalizzare il Debian Installer con la preconfigurazione
12.3 Personalizzare il contenuto dell'Installatore Debian

Progetto

13. Segnalare bug

13.1 Problemi noti
13.2 Ricostruire da zero
13.3 Usare pacchetti aggiornati
13.4 Raccogliere informazioni
13.5 Se possibile isolare il caso non andato a buon fine
13.6 Segnalare il bug del pacchetto giusto
13.6.1 Durante la compilazione mentre esegue il bootstrap
13.6.2 Durante la compilazione mentre installa i pacchetti
13.6.3 In fase di avvio
13.6.4 In fase di esecuzione
13.7 Fare la ricerca
13.8 Dove segnalare i bug

14. Lo stile nello scrivere codice

14.1 Compatibilità
14.2 Rientri
14.3 Ritorno a capo
14.4 Variabili
14.5 Varie

15. Procedure

15.1 Aggiornamenti degli udeb
15.2 Rilasci importanti
15.3 Rilasci minori
15.3.1 Ultimo rilascio minore di un rilascio di Debian.
15.3.2 Modello per l'annuncio di un rilascio minore.

Esempi

16. Esempi

16.1 Usare gli esempi
16.2 Tutorial 1: un'immagine standard
16.3 Tutorial 2: servizio browser web
16.4 Tutorial 3: un'immagine personalizzata
16.4.1 Prima revisione
16.4.2 Seconda revisione
16.5 Un client Kiosk VNC
16.6 Un'immagine base per una chiavetta USB da 128M
16.7 Un desktop KDE localizzato e l'installer

Appendix

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

Manuale di Debian Live

Utente

8. Personalizzare l'installazione dei pacchetti

Probabilmente la personalizzazione basilare di un sistema Debian Live è la scelta dei pacchetti da includere nell'immagine. Questo capitolo vi guiderà tra le varie opzioni in fase di costruzione per personalizzare l'installazione dei pacchetti di live-build. Le ampie scelte che influenzano quali pacchetti siano disponibili da installare nell'immagine sono le aree di distribuzione e archivio. Per essere sicuri di avere una ragionevole velocità di scaricamento, dovreste usare un mirror a voi vicino. Si possono inoltre aggiungere i propri repository per pacchetti di backport, sperimentali o personalizzati, o aggiungere i pacchetti direttamente come file. È possibile definire una propria lista di pacchetti da includere, usarne una predefinita di live-build, usare task di tasksel, o una combinazione di tutti e tre. Infine una serie di opzioni fornisce un certo controllo su apt, o aptitude se si preferisce, in fase di compilazione quando i pacchetti sono installati. Ciò può tornare utile se si usa un proxy, se si vuole disabilitare l'installazione dei pacchetti raccomandati per risparmiare spazio o controllare quali versioni dei pacchetti vengono installate con il pinning, giusto per citare alcune possibilità.

8.1 Sorgenti dei pacchetti

8.1.1 Distribuzione, le aree di archivio e le modalità

La distribuzione che viene scelta ha un ampio impatto su quali pacchetti siano disponibili per essere inclusi nell'immagine live. Specificare il nome in codice, il predefinito per la versione wheezy di live-build è wheezy; qualsiasi attuale distribuzione mantenuta negli archivi Debian può essere qui specificata con il suo nome in codice. (Per ulteriori dettagli consultare il Glossario). L'opzione --distribution non solo influenza la sorgente dei pacchetti nell'archivio, ma indica a live-build di comportarsi secondo la necessità per compilare ciascuna distribuzione supportata. Ad esempio se si vuole costruire un rilascio unstable, sid, specificare:

$ lb config --distribution sid

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:

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

Attraverso l'opzione --mode è disponibile un supporto sperimentale per alcune derivate di Debian; per impostazione predefinita, questa opzione è impostata su debian, anche se si sta costruendo un sistema diverso da Debian. Se si specifica --mode ubuntu o --mode emdebian, 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.

Nota: i progetti per i quali sono state aggiunte tali modalità sono i principali responsabili nel supportare gli utenti di queste opzioni. Il progetto Debian Live, a sua volta, fornisce sostegno allo sviluppo solamente sulla base dell'impegno migliore, sui feedback dei progetti derivati così come non sviluppiamo o sosteniamo queste derivate.

8.1.2 Mirror delle distribuzioni

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

8.1.3 Mirror delle distribuzioni usati in fase di compilazione

Per impostare i mirror delle distribuzioni usati in fase di compilazione ad uno locale, è sufficiente impostare --mirror-bootstrap, --mirror-chroot-security e --mirror-chroot-backports come segue.

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

Il mirror chroot, specificato da --mirror-chroot, è impostato al valore di --mirror-bootstrap.

8.1.4 Mirror delle distribuzioni usate durante l'esecuzione

Le opzioni --mirror-binary* determinano i mirror delle distribuzioni inseriti nell'immagine binaria. Questi possono essere usati per installare pacchetti aggiuntivi mentre il sistema live è in funzione. Le impostazioni predefinite impiegano cdn.debian.net, un servizio che sceglie un mirror geograficamente vicino basandosi sul numero IP dell'utente. Questo è una scelta conveniente quando non si può pronosticare quale sarà il mirror migliore per tutti gli utenti. Oppure si può specificare il proprio valore come mostrato nell'esempio qui sotto. Un'immagine compilata con questa configurazione sarebbe adatta solamente ad utenti di una rete dove sia raggiungibile il "mirror".

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

8.1.5 Repository addizionali

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.

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

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

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.

Se il file esiste, saranno prelevati automaticamente.

Bisogna inoltre inserire la chiave GPG usata per firmare il repository nei file config/archives/vostro-repository.key.{binary,chroot}.

Nota: alcuni repository di pacchetti preconfigurati sono disponibili per una facile selezione attraverso l'opzione --archives, per abilitare gli snapshot live è sufficiente un semplice comando:

$ lb config --archives live.debian.net

8.2 Scegliere i pacchetti da installare

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 o scegliere elenchi predefiniti di pacchetti oppure utilizzare i task di APT. 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.

8.2.1 Elenchi di pacchetti

Gli elenchi di pacchetti sono un potente mezzo per esprimere quali pacchetti devono essere installati. La sintassi gestisce file inclusi e sezioni condizionali rendendo semplice la creazione di elenchi da altri elenchi e adattarli per l'uso in molteplici configurazioni. Si può usare un elenco predefinito fornendo una selezione modulare dei pacchetti da ciascuno dei principali ambienti desktop e alcuni elenchi per uso speciale, così come elenchi standard sui quali vi si basano altri. È inoltre possibile fornire i propri elenchi o usare una combinazione di entrambi.

8.2.2 Elenchi predefiniti di pacchetti

Il modo più semplice per usare gli elenchi è di specificarne uno o più con l'opzione --package-lists. Per esempio:

$ lb config --package-lists "gnome rescue"

Il percorso predefinito per i file elenco sul sistema è /usr/share/live/build/package-lists/. Per determinare i pacchetti in un dato elenco, si legga il file corrispondente, prestando attenzione ai file inclusi e condizionali come descritto nella sezioni seguenti.

8.2.3 Elenchi locali dei pacchetti

Gli elenchi predefiniti si possono integrare usando quelli locali dei pacchetti in config/package-lists/.

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.

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.

8.2.4 Elenchi locali di pacchetti binari

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.

8.2.5 Estendere un'elenco di pacchetti usando gli include

Gli elenchi di pacchetti inclusi in live-build fanno un notevole uso di include. Far riferimento a questi nella directory /usr/share/live/build/package-lists/, in quanto portano ottimi esempi su come scriverne di propri.

Per esempio, per creare un elenco che includa quello predefinito di gnomepiù iceweasel, creare config/package-lists/mio.elenco.chroot con i seguenti contenuti:

#include <gnome>
iceweasel

8.2.6 Usare condizioni all'interno degli elenchi di pacchetti

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.

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

#if ARCHITECTURES amd64
ia32-libs
#endif

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

#if ARCHITECTURES i386 amd64
memtest86+
#endif

È 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:

#if ARCHIVE_AREAS contrib non-free
vrms
#endif

Una condizione può coinvolegere una direttiva #include:

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

Le condizioni nidificate non sono supportate.

8.2.7 Task

L'installatore Debian offre all'utente la scelta di vari elenchi di pacchetti pre-selezionati, ognuno dei quali focalizzato su un particolare tipo di sistema, o il tipo di attività per cui utilizzarlo, come "Graphical desktop environment", "Mail server" o "Laptop". Questi elenchi sono chiamati "task" e sono gestiti da APT attraverso il campo"Task:". In live-build si possono specificare uno o più task inserendoli in una lista in config/task-lists/, come nell'esempio seguente.

$ lb config
$ echo "mail-server file-server" >> config/task-lists/my.list.chroot

I task principali disponibili nell'installatore Debian possono essere elencati nel sistema live con tasksel --list-tasks. I contenuti di ogni task, inclusi quelli non inclusi in questo elenco, possono essere esaminati con tasksel --task-packages.

8.2.8 Task per desktop e lingua

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.

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.

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 giapponese può includere questi task:

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

Dal momento che i task desktop sono "interni", bisogna preconfigurare ogni altro desktop da includere nell'immagine e diverso dal predefinito "gnome" nella variabile debconf "tasksel/desktop", altrimenti tasksel non li installerà:

$ lb config
$ echo 'tasksel tasksel/desktop multiselect kde' >> config/preseed/my.preseed.chroot

Questo parametro supporta valori multipli, ad esempio "lxde xfce" invece di "kde".

8.3 Installare pacchetti modificati o di terze parti

Nonostante sia contro la filosofia di Debian Live, a volte può essere necessario creare un sistema live con versioni modificate dei pacchetti nel repository Debian. Questo per modificare o gestire funzionalità aggiuntive, lingue e marchi, o anche rimuovere elementi non desiderati da pacchetti esistenti. Allo stesso modo, i pacchetti di "terze parti" possono essere utilizzati per aggiungere funzionalità proprietarie o su misura.

Questa sezione non tratta la compilazione e il mantenimento di pacchetti modificati. Può comunque essere interessante leggere "How to fork privately" di Joachim Breitner: ‹http://www.joachim-breitner.de/blog/archives/282-How-to-fork-privately.html› La creazione di pacchetti su misura è esposta nella "Guida per il nuovo Maintainer" all'indirizzo ‹http://www.debian.org/doc/maint-guide/› e altrove.

Ci sono due modi per installare pacchetti personalizzati:

  • packages.chroot
  • Utilizzare repository APT personalizzati
  • 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.

    8.3.1 Utilizzare packages.chroot per installare pacchetti personalizzati

    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.

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

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

  • non è possibile usare secure APT
  • è necessario installare i pacchetti adeguati nella directory config/packages.chroot/.
  • non si presta a salvare le configurazioni di Debian Live nel controllo di versione.
  • 8.3.2 Utilizzare un repository APT per installare pacchetti personalizzati

    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.

    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.

    8.3.3 Pacchetti personalizzati e APT

    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.

    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.

    8.4 Configurare APT in fase di costruzione

    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.

    8.4.1 Scegliere apt o aptitude

    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.

  • apt: se viene specificato un pacchetto mancante, l'installazione avrà esito negativo; questo è l'impostazine predefinita.
  • aptitude: se viene specificato un pacchetto mancante, l'installazione avrà successo.
  • 8.4.2 Utilizzare un proxy con APT

    Una configurazione di APT spesso richiesta è di amministrare la creazione di un'immagine dietro un proxy, lo si può specificare con le opzioni --apt-ftp-proxy o --apt-http-proxy secondo necessità:

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

    8.4.3 Modificare APT per risparmiare spazio

    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.

    È possibile non includere gli indici di APT con:

    $ lb config --apt-indices false

    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.

    In caso si trovi che l'installazione dei pacchetti raccomandati appesantisca troppo l'immagine, si può disabilitare l'opzione predefinita di APT con:

    $ lb config --apt-recommends false

    Qui il compromesso è dato dal fatto che se non si installano i raccomandati per un certo pacchetto, ovvero "pacchetti che si trovano assieme a questo eccetto in installazioni non usuali" (Debian Policy Manual, paragrafo 7.2), saranno omessi alcuni di quelli realmente necessari. Si suggerisce pertanto di verificare la differenza ottenuta nel proprio elenco di pacchetti disabilitando i raccomandati (vedere il file binary.packages generato da lb build) e includere nuovamente in esso quelli omessi che si desiderano installare. In alternativa, se si desidera lasciare un modesto numero di raccomandati, li si lasci abilitati e si assegni ad APT un pin di priorità negativo sui pacchetti selezionati affinché non vengano installati, come spiegato in APT pinning.

    8.4.4 Passare opzioni ad apt o aptitude

    Se non c'è un'opzione di lb config per modificare il comportamento di APT nel modo desiderato, si usi --apt-options o --aptitude-options per passare opzioni tramite il proprio strumento APT. Consultare il manuale di apt e aptitude per i dettagli.

    8.4.5 APT pinning

    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/chroot_apt/preferences mentre per l'ultima creare config/includes.chroot/etc/apt/preferences.

    Nell'ipotesi di creare un sistema live wheezy e avendo la necessità di installare da sid tutti i pacchetti live destinati all'immagine binaria questa fase, bisogna aggiungere sid alle fonti di APT e farne il pinning affinché verranno installati da lì solo i pacchetti voluti, mentre per tutti gli altri si attingerà dalla distribuzione principale, wheezy. Quanto segue servirà allo scopo:

    $ 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: con la versione 0.8.14 o superiore di Apt si possono utilizzare wildcard nei nomi dei pacchetti (Package: live-*). Ciò significa che funziona con wheezy usando:

    $ lb config --distribution wheezy

    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. Si suppone di costruire un'immagine di LXDE utilizzando l'opzione --package-lists lxde ma non si desidera che all'utente venga richiesto di salvare la password del wifi nel portachiavi. L'elenco include gdm che dipende da gksu che a sua volta raccomanda gnome-keyring, in questo caso si vorrà omettere il pacchetto gnome-keyring aggiungendo a config/chroot_apt/preferences la seguente definizione:

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