15.3. Creazione di un repository di pacchetti per APT
Falcot Corp gradually started maintaining a number of Debian packages, either locally modified from existing packages or created from scratch to distribute internal data and programs.
Per rendere la distribuzione dei pacchetti più facile, si vuole integrare questi pacchetti in un pacchetto archivio che può essere utilizzato direttamente da APT. Per ovvi motivi di manutenzione, si vuole separare i pacchetti interni da quelli rigenerati localmente. L'obiettivo è che le voci corrispondenti nel file /etc/apt/sources.list.d/falcot.list
siano le seguenti:
deb http://packages.falcot.com/ updates/
deb http://packages.falcot.com/ internal/
Gli amministratori quindi devono configurare un virtual host nel server HTTP interno, utilizzando la directory /srv/vhosts/packages/
come radice dello spazio web associato. La gestione dell'archivio stesso è delegata al comando mini-dinstall
(presente nel pacchetto dal nome simile). Questo strumento controlla la directory incoming/
(in questo caso, /srv/vhosts/packages/mini-dinstall/incoming/
) e aspetta che vi siano inseriti dei nuovi pacchetti, quando un pacchetto viene caricato, viene installato in un archivio Debian in /srv/vhosts/packages/
. Il comando mini-dinstall
legge i file *.changes
creati quando il pacchetto viene generato. Questi file contengono un elenco di tutti gli altri file associati alla versione del pacchetto (*.deb
, *.dsc
, *.diff.gz
/*.debian.tar.gz
, *.orig.tar.gz
, o i loro equivalenti con altri strumenti di compressione), e permettono a mini-dinstall
di sapere quali file installare. I file *.changes
contengono anche il nome della distribuzione di destinazione (spesso unstable
) citata nell'ultima voce del file debian/changelog
, mini-dinstall
usa questa informazione per decidere dove installare il pacchetto. È per questo che gli amministratori devono sempre cambiare questo campo prima di costruire un pacchetto, e impostarlo a internal
o updates
, a seconda del luogo di destinazione. mini-dinstall
quindi genera i file necessari per APT, come ad esempio Packages.gz
.
Per la configurazione di mini-dinstall
è necessario impostare il file ~/.mini-dinstall.conf
; nel caso della Falcot Corp, i contenuti sono i seguenti:
[DEFAULT]
archive_style = flat
archivedir = /srv/vhosts/packages
verify_sigs = 0
mail_to = admin@falcot.com
generate_release = 1
release_origin = Falcot Corp
release_codename = stable
[updates]
release_label = Recompiled Debian Packages
[internal]
release_label = Internal Packages
Una decisione degna di nota è la generazione del file
Release
per ogni archivio. Questo può aiutare a gestire le priorità del pacchetto d'installazione utilizzando il file di configurazione
/etc/apt/preferences
(si veda la
Sezione 6.2.5, «Gestire le priorità dei pacchetti» per maggiori informazioni).
Quando viene eseguito mini-dinstall
in realtà viene avviato un demone sullo sfondo. Finché questo demone rimane attivo, verifica ogni mezz'ora se ci sono nuovi pacchetti nella directory incoming/
. Quando viene inserito un nuovo pacchetto, viene spostato nell'archivio e vengono rigenerati, in maniera appropriata, i file Packages.gz
e Sources.gz
. Se risulta problematico eseguire un demone, mini-dinstall
può essere avviato manualmente in modalità batch (con l'opzione -b
) ogni volta che viene caricato un pacchetto nella directory incoming/
. I metodi alternativi messi a disposizione da mini-dinstall
sono documentati nella sua pagina di manuale mini-dinstall(1).