1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
|
:B~ Personalizzare l'installazione dei pacchetti
1~customizing-package-installation Personalizzare l'installazione dei
pacchetti
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.
2~ Sorgenti dei pacchetti
3~ Distribuzione, le aree di archivio e le modalità
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} for the ${testing} version of live-build. Any current
distribution carried in the archive may be specified by its codename
here. (See {Terms}#terms for more details.) The #{--distribution}# option
not only influences the source of packages within the archive, but also
instructs live-build to behave as needed to build each supported
distribution. For example, to build against the *{unstable}* release, sid,
specify:
code{
$ lb config --distribution sid
}code
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:
code{
$ lb config --archive-areas "main contrib non-free"
}code
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.
*{Note:}* The projects for whom these modes were added are primarily responsible for supporting users of these options. The ${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.
3~ 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 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}#stages-of-the-build 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.
3~distribution-mirrors-build-time Mirror delle distribuzioni usati in fase
di compilazione
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.
code{
$ lb config --mirror-bootstrap http://localhost/debian/ \
--mirror-chroot-security http://localhost/debian-security/
}code
Il mirror chroot, specificato da #{--mirror-chroot}#, è impostato al valore
di #{--mirror-bootstrap}# in modo predefinito.
3~ Mirror delle distribuzioni usate durante l'esecuzione
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 #{httpredir.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.
code{
$ lb config --mirror-binary http://mirror/debian/ \
--mirror-binary-security http://mirror/debian-security/ \
--mirror-binary-backports http://mirror/debian-backports/
}code
3~additional-repositories 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 debian-live al momento della creazione del
sistema live.
code{
deb http://live-systems.org/ sid-snapshots main contrib non-free
}code
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 questi file esistono saranno prelevati automaticamente.
Bisogna inoltre inserire la chiave GPG usata per firmare il repository nei
file #{config/archives/vostro-repository.key.{binary,chroot}}#.
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.
2~choosing-packages-to-install 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, 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.
3~package-lists Elenchi di pacchetti
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.
*{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}#choosing-apt-or-aptitude.
3~using-metapackages Usare metapacchetti
Il metodo più semplice per popolare una lista di pacchetti è utilizzare un
metapacchetto task manutenuto dalla distribuzione. Ad esempio:
code{
$ lb config
$ echo task-gnome-desktop > config/package-lists/desktop.list.chroot
}code
This supercedes 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.
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:
code{
$ apt-cache search --names-only ^task-
}code
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:
code{
$ debtags search role::metapackage
}code
3~ Elenchi locali dei pacchetti
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.
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.
3~ 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}#.
3~generated-package-lists Elenchi di pacchetti generati
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.
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:
code{
$ lb config
$ echo '! Packages Priority standard' > config/package-lists/standard.list.chroot
}code
3~ 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}#:
code{
#if ARCHITECTURES amd64
ia32-libs
#endif
}code
Si può provare per ognuna di una serie di valori, ad esempio per installare
/{memtest86+}/ specificando sia #{--architectures i386}# sia
#{--architectures amd64}#:
code{
#if ARCHITECTURES i386 amd64
memtest86+
#endif
}code
È 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}#:
code{
#if ARCHIVE_AREAS contrib non-free
vrms
#endif
}code
Le condizioni nidificate non sono supportate.
% FIXME:
3~ Removing packages at install time
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.
3~desktop-and-language-tasks 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 tedesco può includere questi metapacchetti task:
code{
$ 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
}code
3~kernel-flavour-and-version Tipi e versioni del kernel
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.
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.
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:
code{
$ lb config --linux-packages linux-image-3.18.0-trunk
$ echo "deb http://ftp.debian.org/debian/ experimental main" > config/archives/experimental.list.chroot
}code
3~custom-kernels Kernel personalizzati
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}#.
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.
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}#kernel-flavour-and-version. Come spiegato in {Installare pacchetti
modificati o di terze parti}#installing-modified-or-third-party-packages, è
meglio includere i propri pacchetti del kernel nel proprio repository,
sebbene funzionino anche le alternative discusse in tale sezione.
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:
_* Utilizzare un ramdisk iniziale;
_* includere il modulo del filesystem union (solitamente #{aufs}#);
_* includere qualsiasi altro modulo del filesystem necessario alla
configurazione (solitamente #{squashfs}#).
2~installing-modified-or-third-party-packages Installare pacchetti
modificati o di terze parti
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.
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 https://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.
3~ 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/}#,
_* It does not lend itself to storing live system configurations in revision
control.
3~ 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}#choosing-packages-to-install.
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.
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}#apt-pinning per maggiori informazioni.
2~ Configurare APT in fase di compilazione
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}#.
3~choosing-apt-or-aptitude 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.
3~ 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à:
code{
$ lb config --apt-http-proxy http://proxy/
}code
3~tweaking-apt-to-save-space 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:
code{
$ lb config --apt-indices false
}code
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, a patto si è preparati ad affrontare le conseguenze
discusse prima, si può disabilitare l'opzione predefinita di APT con:
code{
$ lb config --apt-recommends false
}code
La conseguenza più importante di disattivare i raccomandati è che
#{live-boot}# e #{live-config}# raccomandano a loro volta alcuni pacchetti
che forniscono funzionalità importanti utilizzate da molte configurazioni,
come #{user-setup}# che #{live-config}# raccomanda ed è usato per creare
l'utente live. Salvo eccezioni ci sarà bisogno di riaggiungere all'elenco
almeno alcuni di questi o l'immagine non funzionerà come ci si
aspetta. Controllare i raccomandati per ognuno dei pacchetti #{live-*}#
inclusi nella compilazione, se non si è certi di poterli omettere
aggiungerli nuovamente agli elenchi.
La conseguenza generica è 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 tenere 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}#apt-pinning.
3~ Passare opzioni ad apt o aptitude
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}#:
code{
$ lb config --apt-options "--yes -oAcquire::Check-Valid-Until=false"
}code
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.
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.
3~apt-pinning 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/archives/*.pref}#, #{config/archives/*.pref.chroot}#,
e #{config/apt/preferences}# mentre per l'ultima creare
#{config/includes.chroot/etc/apt/preferences}#.
Let's say you are building a ${testing} 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,
${testing}. The following will accomplish this:
code{
$ 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
}code
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:
code{
Package: gnome-keyring
Pin: version *
Pin-Priority: -1
}code
|