Gestione di un repository con debarchiver: differenze tra le versioni
(→Server ftp: inserito) |
m (verificata, parzialmente) |
||
(25 versioni intermedie di 12 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
{{ | {{Repository | ||
|precedente=Creare un Repository Debian | |||
|successivo=Introduzione all'APT System | |||
}} | |||
{{Versioni compatibili|Jessie|Stretch|Buster}} | |||
__TOC__ | |||
==Introduzione== | |||
[http://packages.debian.org/debarchiver Debarchiver] è uno strumento comodo e potente per poter gestire facilmente un repository Debian ben strutturato e suddiviso. Oltre a questo permette di mantenerlo in ordine (evitando il mantenimento di versioni vecchie) senza richiedere manutenzione da parte dell'amministratore. | |||
= | ==Installazione== | ||
L'installazione è semplice, in quanto il programma è incluso in Debian; e con [[privilegi di amministrazione]] basta: | |||
= | |||
L'installazione | |||
<pre> | <pre> | ||
# apt | # apt install debarchiver | ||
</pre> | </pre> | ||
==Configurazione== | |||
Tutta la configurazione di debarchiver è racchiusa in un unico file: <code>'''/etc/debarchiver.conf'''</code>, che analizziamo nel dettaglio: | |||
=Configurazione= | |||
Tutta la configurazione di debarchiver | |||
{{Box|Nota Bene:|le opzioni riportate nel file di configurazione sono inizialmente commentate in quanto i valori riportati sono quelli di default.}} | {{Box|Nota Bene:|le opzioni riportate nel file di configurazione sono inizialmente commentate in quanto i valori riportati sono quelli di default.}} | ||
Riga 21: | Riga 23: | ||
$inputdir = "/var/lib/debarchiver/incoming"; | $inputdir = "/var/lib/debarchiver/incoming"; | ||
</pre> | </pre> | ||
Dove | Dove verrà creato il repository (<code>''destdir''</code>) e dove vengono inseriti i pacchetti da aggiungere al repository (<code>''inputdir''</code>) | ||
<pre> | <pre> | ||
Riga 27: | Riga 29: | ||
# $movecmd = "mv"; | # $movecmd = "mv"; | ||
# $rmcmd = "rm -f"; | # $rmcmd = "rm -f"; | ||
# | # @vrfycmd = ("dscverify"); | ||
</pre> | </pre> | ||
La lista dei comandi utilizzati nella gestione del repository | La lista dei comandi utilizzati nella gestione del repository: quelli di default, normalmente, sono corretti per la maggior parte delle situazioni. | ||
<pre> | <pre> | ||
# $cinstall = "installed"; | # $cinstall = "installed"; | ||
</pre> | </pre> | ||
Dove verranno messi i file ''.changes''. | Dove verranno messi i file <code>''.changes''</code>. | ||
<pre> | <pre> | ||
# $distinputcriteria = "^ | # $distinputcriteria = "^linux.*\\.deb\$"; | ||
# $ | # $inputdir = "/path"; | ||
</pre> | </pre> | ||
Indica il criterio con il quale verranno accettati i pacchetti non aventi un file ''.changes'' e dove devono essere inseriti per essere ''presi'' dal sistema | Indica il criterio con il quale verranno accettati i pacchetti non aventi un file <code>''.changes''</code> e dove devono essere inseriti per essere ''presi'' dal sistema. | ||
<pre> | <pre> | ||
# $verifysignatures = 0; | # $verifysignatures = 0; | ||
</pre> | </pre> | ||
Attiva (1) o disattiva (0) la verifica della firma dei pacchetti inseriti nella ''inputdir''. | Attiva (<code>1</code>) o disattiva (<code>0</code>) la verifica della firma dei pacchetti inseriti nella <code>''inputdir''</code>. | ||
<pre> | <pre> | ||
# $verifysignaturesdistinput = 0; | # $verifysignaturesdistinput = 0; | ||
</pre> | </pre> | ||
come sopra, ma riguarda la directory ''distinputdirs'' | come sopra, ma riguarda la directory <code>''distinputdirs''</code>. | ||
<pre> | <pre> | ||
# $bzip = 0; | # $bzip = 0; | ||
</pre> | </pre> | ||
Attiva la generazione di file compressi con bz2 | Attiva la generazione di file compressi con bz2. | ||
<pre> | <pre> | ||
Riga 65: | Riga 67: | ||
); | ); | ||
</pre> | </pre> | ||
Permette di indicare i nomi delle directory contenute nella directory ''incoming'' che provvederanno a raccogliere i pacchetti di una | Permette di indicare i nomi delle directory contenute nella directory <code>''incoming''</code> che provvederanno a raccogliere i pacchetti di una determinata release. In questo caso, nella release ''stable'' verranno inseriti i pacchetti presenti nella directory <code>''/var/lib/debarchiver/incoming/stable/''</code>. | ||
<pre> | <pre> | ||
@distributions = ('stable', 'testing', 'unstable'); | @distributions = ('stable', 'testing', 'unstable'); | ||
</pre> | </pre> | ||
Questa lista indica le release presenti nel repository (in questo caso le 3 release ''stable'', ''testing'' e ''unstable''. | Questa lista indica le release presenti nel repository (in questo caso le 3 release ''stable'', ''testing'' e ''unstable''). | ||
Riga 76: | Riga 78: | ||
%distmapping = | %distmapping = | ||
( | ( | ||
stable => ' | stable => 'buster', | ||
testing => ' | testing => 'bullseye', | ||
unstable => 'sid' | unstable => 'sid' | ||
); | ); | ||
Riga 86: | Riga 88: | ||
# @architectures = ('i386'); | # @architectures = ('i386'); | ||
</pre> | </pre> | ||
Permette di indicare la lista di | Permette di indicare la lista di architetture (racchiuse tra apici e separate da una virgola) presenti nel repository. | ||
<pre> | <pre> | ||
@sections = ('main', 'contrib', 'non-free'); | @sections = ('main', 'contrib', 'non-free'); | ||
</pre> | </pre> | ||
Indica le sezioni in cui | Indica le sezioni in cui è suddiviso il repository. | ||
<pre> | <pre> | ||
@mailtos = ('Maintainer', 'Uploaders', '@knio.it', 'admin@dominio.it'); | @mailtos = ('Maintainer', 'Uploaders', '@knio.it', 'admin@dominio.it'); | ||
</pre> | </pre> | ||
Permette di indicare a chi | Permette di indicare a chi verrà inviata una email di conferma dell'inserimento del pacchetto; è possibile specificare i seguenti parametri: | ||
; Indirizzo Email : l'email | ; Indirizzo Email : l'email verrà inviata a quel determinato indirizzo email | ||
; Indirizzo email incompleto : l'email | ; Indirizzo email incompleto : l'email verrà inviata all'utente proprietario del file usando l'host specificato dopo il simbolo ''@''. Nel caso riportato, se l'utente proprietario del file è ''maxer'', l'email verrà inviata a ''maxer@knio.it''. | ||
; Stringa senza @ : | ; Stringa senza @ : Verrà usato il valore del campo espresso (nell'esempio vengono utilizzati ''Maintainer'' e ''Uploader'') come indirizzo email. | ||
<pre> | <pre> | ||
Riga 121: | Riga 123: | ||
# $gpgpassfile = "$ENV{HOME}/.gnupg/passphrase"; | # $gpgpassfile = "$ENV{HOME}/.gnupg/passphrase"; | ||
</pre> | </pre> | ||
Indica il percorso del file contenente la password per l'utilizzo della chiave GPG citata nella spiegazione alla direttiva | Indica il percorso del file contenente la password per l'utilizzo della chiave GPG citata nella spiegazione alla direttiva precedente. Trattandosi di un dato molto importante, è consigliabile usare dei permessi restrittivi, come ad esempio permettendone la lettura solo all'utente ''debarchiver'' (l'utente usato da debarchiver). | ||
<pre> | |||
1; | |||
</pre> | |||
Indica che il file di configurazione deve restituire un valore ''true''. | |||
===Permessi=== | |||
'''Debarchiver''' è configurato per lavorare correttamente con i server [[FTP]] e web. È impostato, infatti, il permesso di lettura per tutti gli utenti. | |||
<!-- *PARTE COMMENTATA* : permesso di scrittura non presente nemmeno per il gruppo debarchiver | |||
Un po' | Un po' più complessa è, invece, la situazione relativa all'utilizzo della directory <code>''incoming''</code> da parte degli utenti. La directory in questione è di proprietà dell'utente root e del gruppo ''debarchiver''. Per abilitare un utente ad utilizzare il sistema, quindi, è necessario aggiungerlo al gruppo: | ||
<pre> | <pre> | ||
# adduser nomeutente debarchiver | # adduser nomeutente debarchiver | ||
</pre> | </pre> | ||
=Utilizzo Reale= | *FINE PARTE COMMENTATA* --> | ||
Due esempi relativi alla configurazione di un server web (Apache) e di un server | ==Utilizzo Reale== | ||
Due esempi relativi alla configurazione di un server web (Apache) e di un server FTP anonimo (vsftpd) per l'accesso al repository. | |||
==Server Web== | ===Server Web=== | ||
La configurazione di un server web | La configurazione di un server web è molto semplice e la si può ricondurre a due situazioni particolari: | ||
* configurazione come dominio di | * configurazione come dominio di 3° livello (Es. <nowiki>http://debian.dominio.it</nowiki>) | ||
* configurazione come directory in un dominio esistente (Es. http://www.dominio.it/debian) | * configurazione come directory in un dominio esistente (Es. <nowiki>http://www.dominio.it/debian</nowiki>) | ||
===Dominio di | ====Dominio di 3° livello==== | ||
La configurazione di un dominio di | La configurazione di un dominio di 3° livello dedicato al repository è una scelta molto comoda, secondo me. | ||
È sufficiente, infatti, creare un semplice VirtualHost (Dettagli [http://httpd.apache.org/docs/1.3/vhosts/examples.html Apache1.3] [http://httpd.apache.org/docs/2.0/vhosts/ Apache2.0]) in cui viene indicata come ''DocumentRoot'' la directory <code>'''/var/lib/debarchiver'''</code>. | |||
Esempio: | Esempio: | ||
Riga 160: | Riga 169: | ||
ed abilitarlo (rimando alla documentazione ufficiale del proprio server web). | ed abilitarlo (rimando alla documentazione ufficiale del proprio server web). | ||
===Directory in un Dominio=== | ====Directory in un Dominio==== | ||
Questa configurazione | Questa configurazione è senza dubbio la più semplice. Si fa uso della direttiva '''Alias''' (Documentazione Ufficiale [http://httpd.apache.org/docs/1.3/mod/mod_alias.html Apache1.3] - [http://httpd.apache.org/docs/2.0/mod/mod_alias.html Apache2.0]) nel modo seguente: | ||
Supponendo di voler rendere accessibile il repository in http://www.dominio.it/debian | Supponendo di voler rendere accessibile il repository in <nowiki>http://www.dominio.it/debian</nowiki> è sufficiente aggiungere, nella configurazione del VirtualHost in questione | ||
<pre> | <pre> | ||
Alias /debian /var/lib/debarchiver | Alias /debian /var/lib/debarchiver | ||
</pre> | </pre> | ||
{{Box|Nota:|per rendere ''sfogliabile'' il repository | {{Box|Nota:|per rendere ''sfogliabile'' il repository è consigliabile aggiungere, dopo la dichiarazione precedente, un pezzo di codice simile al seguente: | ||
<pre> | <pre> | ||
<Directory /debian> | <Directory /debian> | ||
Options Indexes FollowSymLinks | Options Indexes FollowSymLinks | ||
</Directory> | </Directory> | ||
</pre> [http://httpd.apache.org/docs/2.0/mod/core.html#options qui] sono disponibili maggiori dettagli a | </pre> [http://httpd.apache.org/docs/2.0/mod/core.html#options qui] sono disponibili maggiori dettagli a riguardo}} | ||
==Server | ===Server FTP=== | ||
Come server | Come server FTP viene preso in considerazione [http://www.proftpd.org proftpd], visto che utilizza una configurazione molto simile a quella di Apache. | ||
===Dominio di | ====Dominio di 3° livello==== | ||
Un esempio di configurazione (da inserire all'interno di '''/etc/proftpd.conf''')per l'accesso al repository tramite il protocollo ftp: | Un esempio di configurazione (da inserire all'interno di <code>'''/etc/proftpd.conf'''</code>) per l'accesso al repository tramite il protocollo ftp: | ||
<pre> | <pre> | ||
<VirtualHost repos.dominio.it> | <VirtualHost repos.dominio.it> | ||
Riga 202: | Riga 211: | ||
</pre> | </pre> | ||
=Conclusione= | ==Gestione del Repository== | ||
===Upload dei pacchetti=== | |||
È utile ricordare che esistono dei tool per eseguire correttamente l'upload dei pacchetti. | |||
È necessario, infatti, seguire una procedura particolare: il sistema utilizza i file con estensione ''changes'' come file di lock. Quando si caricano dei pacchetti, il file <code>.changes</code> deve essere l'ultimo ad essere caricato. L'analisi dei pacchetti, infatti, verrà eseguita solo quando questo file sarà presente. | |||
I tool disponibili sono: | |||
* [[Dupload per l'upload dei pacchetti Debian | Dupload ]] | |||
* dput | |||
===Rimozione di uno o più pacchetti=== | |||
Debarchiver non supporta la rimozione automatizzata di uno o più pacchetti, operazione che dovrà essere compiuta, quindi, a mano. | |||
Supponendo di avere un pacchetto di nome ''kpakketto'' dovremo seguire questa procedura: | |||
* eliminazione manuale di tutte le occorrenze di ''kpakketto'': <pre> # find /var/lib/debarchiver/dists/ -iname "kpakketto*" -delete</pre> | |||
* ricostruzione del repository: <pre>$ su - debarchiver -c "debarchiver -so --autoscanall --dl 6" </pre> | |||
==Conclusione== | |||
'''Debarchiver''' offre un comodo e funzionale strumento per la gestione automatizzata di un repository Debian di tutto rispetto. Inoltre implementa correttamente la struttura di un repository Debian; una scelta obbligata, insomma, quando si devono gestire un numero di pacchetti maggiore di 3-4 senza dover preoccuparsi delle vecchie versioni (che vengono automaticamente rimosse). Inoltre la flessibilità e la possibilità di avere più suddivisioni (oltre alle classiche ''stable'', ''testing'' e ''unstable'') lo rende perfetto per repository particolari (per i backport, ad esempio). | |||
{{Autori | |||
|Autore = [[Utente:MaXeR|MaXeR]] | |||
}} | |||
[[Categoria:Creare repository]] |
Versione attuale delle 15:47, 12 ott 2019
|
Versioni Compatibili Debian 8 "jessie" Debian 9 "stretch" Debian 10 "buster" |
Introduzione
Debarchiver è uno strumento comodo e potente per poter gestire facilmente un repository Debian ben strutturato e suddiviso. Oltre a questo permette di mantenerlo in ordine (evitando il mantenimento di versioni vecchie) senza richiedere manutenzione da parte dell'amministratore.
Installazione
L'installazione è semplice, in quanto il programma è incluso in Debian; e con privilegi di amministrazione basta:
# apt install debarchiver
Configurazione
Tutta la configurazione di debarchiver è racchiusa in un unico file: /etc/debarchiver.conf
, che analizziamo nel dettaglio:
Nota Bene: le opzioni riportate nel file di configurazione sono inizialmente commentate in quanto i valori riportati sono quelli di default. |
$destdir = "/var/lib/debarchiver/dists"; $inputdir = "/var/lib/debarchiver/incoming";
Dove verrà creato il repository (destdir
) e dove vengono inseriti i pacchetti da aggiungere al repository (inputdir
)
# $copycmd = "cp -af"; # $movecmd = "mv"; # $rmcmd = "rm -f"; # @vrfycmd = ("dscverify");
La lista dei comandi utilizzati nella gestione del repository: quelli di default, normalmente, sono corretti per la maggior parte delle situazioni.
# $cinstall = "installed";
Dove verranno messi i file .changes
.
# $distinputcriteria = "^linux.*\\.deb\$"; # $inputdir = "/path";
Indica il criterio con il quale verranno accettati i pacchetti non aventi un file .changes
e dove devono essere inseriti per essere presi dal sistema.
# $verifysignatures = 0;
Attiva (1
) o disattiva (0
) la verifica della firma dei pacchetti inseriti nella inputdir
.
# $verifysignaturesdistinput = 0;
come sopra, ma riguarda la directory distinputdirs
.
# $bzip = 0;
Attiva la generazione di file compressi con bz2.
%distinputdirs = ( stable => 'stable', testing => 'testing', unstable => 'unstable' );
Permette di indicare i nomi delle directory contenute nella directory incoming
che provvederanno a raccogliere i pacchetti di una determinata release. In questo caso, nella release stable verranno inseriti i pacchetti presenti nella directory /var/lib/debarchiver/incoming/stable/
.
@distributions = ('stable', 'testing', 'unstable');
Questa lista indica le release presenti nel repository (in questo caso le 3 release stable, testing e unstable).
%distmapping = ( stable => 'buster', testing => 'bullseye', unstable => 'sid' );
Schema per la creazione di link tra i nomi delle release reali e i nomi dello stato delle release.
# @architectures = ('i386');
Permette di indicare la lista di architetture (racchiuse tra apici e separate da una virgola) presenti nel repository.
@sections = ('main', 'contrib', 'non-free');
Indica le sezioni in cui è suddiviso il repository.
@mailtos = ('Maintainer', 'Uploaders', '@knio.it', 'admin@dominio.it');
Permette di indicare a chi verrà inviata una email di conferma dell'inserimento del pacchetto; è possibile specificare i seguenti parametri:
- Indirizzo Email
- l'email verrà inviata a quel determinato indirizzo email
- Indirizzo email incompleto
- l'email verrà inviata all'utente proprietario del file usando l'host specificato dopo il simbolo @. Nel caso riportato, se l'utente proprietario del file è maxer, l'email verrà inviata a maxer@knio.it.
- Stringa senza @
- Verrà usato il valore del campo espresso (nell'esempio vengono utilizzati Maintainer e Uploader) come indirizzo email.
%release = ( 'origin' => "", 'label' => "", 'description' => "");
Informazioni aggiuntive da inserire nel file Release.
# $cachedir = '/var/cache/debarchiver';
Nel caso venga usato apt-ftparchive, indica la directory di cache da usare.
# $gpgkey = "";
Imposta la chiave GPG con cui firmare i pacchetti che vengono inseriti nel database.
# $gpgpassfile = "$ENV{HOME}/.gnupg/passphrase";
Indica il percorso del file contenente la password per l'utilizzo della chiave GPG citata nella spiegazione alla direttiva precedente. Trattandosi di un dato molto importante, è consigliabile usare dei permessi restrittivi, come ad esempio permettendone la lettura solo all'utente debarchiver (l'utente usato da debarchiver).
1;
Indica che il file di configurazione deve restituire un valore true.
Permessi
Debarchiver è configurato per lavorare correttamente con i server FTP e web. È impostato, infatti, il permesso di lettura per tutti gli utenti.
Utilizzo Reale
Due esempi relativi alla configurazione di un server web (Apache) e di un server FTP anonimo (vsftpd) per l'accesso al repository.
Server Web
La configurazione di un server web è molto semplice e la si può ricondurre a due situazioni particolari:
- configurazione come dominio di 3° livello (Es. http://debian.dominio.it)
- configurazione come directory in un dominio esistente (Es. http://www.dominio.it/debian)
Dominio di 3° livello
La configurazione di un dominio di 3° livello dedicato al repository è una scelta molto comoda, secondo me.
È sufficiente, infatti, creare un semplice VirtualHost (Dettagli Apache1.3 Apache2.0) in cui viene indicata come DocumentRoot la directory /var/lib/debarchiver
.
Esempio:
NameVirtualHost *:80 <VirtualHost *:80> ServerName repos.dominio.it DocumentRoot /var/lib/debarchiver <Directory /> Options Indexes FollowSymLinks </Directory> </VirtualHost>
ed abilitarlo (rimando alla documentazione ufficiale del proprio server web).
Directory in un Dominio
Questa configurazione è senza dubbio la più semplice. Si fa uso della direttiva Alias (Documentazione Ufficiale Apache1.3 - Apache2.0) nel modo seguente:
Supponendo di voler rendere accessibile il repository in http://www.dominio.it/debian è sufficiente aggiungere, nella configurazione del VirtualHost in questione
Alias /debian /var/lib/debarchiver
Nota: per rendere sfogliabile il repository è consigliabile aggiungere, dopo la dichiarazione precedente, un pezzo di codice simile al seguente: <Directory /debian> Options Indexes FollowSymLinks </Directory>qui sono disponibili maggiori dettagli a riguardo |
Server FTP
Come server FTP viene preso in considerazione proftpd, visto che utilizza una configurazione molto simile a quella di Apache.
Dominio di 3° livello
Un esempio di configurazione (da inserire all'interno di /etc/proftpd.conf
) per l'accesso al repository tramite il protocollo ftp:
<VirtualHost repos.dominio.it> ServerName "Repository di dominio.it" MaxClients 10 MaxLoginAttempts 1 DeferWelcome on <Limit LOGIN> DenyAll </Limit> <Directory /> <Limit WRITE DIRS> DenyAll </Limit> </Directory> </Anonymous> </VirtualHost>
Gestione del Repository
Upload dei pacchetti
È utile ricordare che esistono dei tool per eseguire correttamente l'upload dei pacchetti.
È necessario, infatti, seguire una procedura particolare: il sistema utilizza i file con estensione changes come file di lock. Quando si caricano dei pacchetti, il file .changes
deve essere l'ultimo ad essere caricato. L'analisi dei pacchetti, infatti, verrà eseguita solo quando questo file sarà presente.
I tool disponibili sono:
- Dupload
- dput
Rimozione di uno o più pacchetti
Debarchiver non supporta la rimozione automatizzata di uno o più pacchetti, operazione che dovrà essere compiuta, quindi, a mano.
Supponendo di avere un pacchetto di nome kpakketto dovremo seguire questa procedura:
- eliminazione manuale di tutte le occorrenze di kpakketto:
# find /var/lib/debarchiver/dists/ -iname "kpakketto*" -delete
- ricostruzione del repository:
$ su - debarchiver -c "debarchiver -so --autoscanall --dl 6"
Conclusione
Debarchiver offre un comodo e funzionale strumento per la gestione automatizzata di un repository Debian di tutto rispetto. Inoltre implementa correttamente la struttura di un repository Debian; una scelta obbligata, insomma, quando si devono gestire un numero di pacchetti maggiore di 3-4 senza dover preoccuparsi delle vecchie versioni (che vengono automaticamente rimosse). Inoltre la flessibilità e la possibilità di avere più suddivisioni (oltre alle classiche stable, testing e unstable) lo rende perfetto per repository particolari (per i backport, ad esempio).
Guida scritta da: MaXeR | Debianized 20% |
Estesa da: | |
Verificata da: | |
Verificare ed estendere la guida | Cos'è una guida Debianized |