3 581
contributi
m (struttura) |
m (verificata, parzialmente) |
||
(34 versioni intermedie di 12 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
=Introduzione= | {{Repository | ||
[http://packages.debian.org/debarchiver Debarchiver] | |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= | ==Installazione== | ||
L'installazione è semplice, in quanto il programma è incluso in Debian; e con [[privilegi di amministrazione]] basta: | |||
<pre> | |||
# apt install debarchiver | |||
</pre> | |||
=Configurazione= | ==Configurazione== | ||
Tutta la configurazione di debarchiver è racchiusa in un unico file: <code>'''/etc/debarchiver.conf'''</code>, che analizziamo nel dettaglio: | |||
{{Box|Nota Bene:|le opzioni riportate nel file di configurazione sono inizialmente commentate in quanto i valori riportati sono quelli di default.}} | |||
=Conclusione= | <pre> | ||
$destdir = "/var/lib/debarchiver/dists"; | |||
$inputdir = "/var/lib/debarchiver/incoming"; | |||
</pre> | |||
Dove verrà creato il repository (<code>''destdir''</code>) e dove vengono inseriti i pacchetti da aggiungere al repository (<code>''inputdir''</code>) | |||
<pre> | |||
# $copycmd = "cp -af"; | |||
# $movecmd = "mv"; | |||
# $rmcmd = "rm -f"; | |||
# @vrfycmd = ("dscverify"); | |||
</pre> | |||
La lista dei comandi utilizzati nella gestione del repository: quelli di default, normalmente, sono corretti per la maggior parte delle situazioni. | |||
<pre> | |||
# $cinstall = "installed"; | |||
</pre> | |||
Dove verranno messi i file <code>''.changes''</code>. | |||
<pre> | |||
# $distinputcriteria = "^linux.*\\.deb\$"; | |||
# $inputdir = "/path"; | |||
</pre> | |||
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> | |||
# $verifysignatures = 0; | |||
</pre> | |||
Attiva (<code>1</code>) o disattiva (<code>0</code>) la verifica della firma dei pacchetti inseriti nella <code>''inputdir''</code>. | |||
<pre> | |||
# $verifysignaturesdistinput = 0; | |||
</pre> | |||
come sopra, ma riguarda la directory <code>''distinputdirs''</code>. | |||
<pre> | |||
# $bzip = 0; | |||
</pre> | |||
Attiva la generazione di file compressi con bz2. | |||
<pre> | |||
%distinputdirs = | |||
( | |||
stable => 'stable', | |||
testing => 'testing', | |||
unstable => 'unstable' | |||
); | |||
</pre> | |||
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> | |||
@distributions = ('stable', 'testing', 'unstable'); | |||
</pre> | |||
Questa lista indica le release presenti nel repository (in questo caso le 3 release ''stable'', ''testing'' e ''unstable''). | |||
<pre> | |||
%distmapping = | |||
( | |||
stable => 'buster', | |||
testing => 'bullseye', | |||
unstable => 'sid' | |||
); | |||
</pre> | |||
Schema per la creazione di link tra i nomi delle release reali e i nomi dello stato delle release. | |||
<pre> | |||
# @architectures = ('i386'); | |||
</pre> | |||
Permette di indicare la lista di architetture (racchiuse tra apici e separate da una virgola) presenti nel repository. | |||
<pre> | |||
@sections = ('main', 'contrib', 'non-free'); | |||
</pre> | |||
Indica le sezioni in cui è suddiviso il repository. | |||
<pre> | |||
@mailtos = ('Maintainer', 'Uploaders', '@knio.it', 'admin@dominio.it'); | |||
</pre> | |||
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. | |||
<pre> | |||
%release = ( 'origin' => "", | |||
'label' => "", | |||
'description' => ""); | |||
</pre> | |||
Informazioni aggiuntive da inserire nel file Release. | |||
<pre> | |||
# $cachedir = '/var/cache/debarchiver'; | |||
</pre> | |||
Nel caso venga usato ''apt-ftparchive'', indica la directory di cache da usare. | |||
<pre> | |||
# $gpgkey = ""; | |||
</pre> | |||
Imposta la chiave GPG con cui firmare i pacchetti che vengono inseriti nel database. | |||
<pre> | |||
# $gpgpassfile = "$ENV{HOME}/.gnupg/passphrase"; | |||
</pre> | |||
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' 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> | |||
# adduser nomeutente debarchiver | |||
</pre> | |||
*FINE PARTE COMMENTATA* --> | |||
==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. <nowiki>http://debian.dominio.it</nowiki>) | |||
* configurazione come directory in un dominio esistente (Es. <nowiki>http://www.dominio.it/debian</nowiki>) | |||
====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 [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: | |||
<pre> | |||
NameVirtualHost *:80 | |||
<VirtualHost *:80> | |||
ServerName repos.dominio.it | |||
DocumentRoot /var/lib/debarchiver | |||
<Directory /> | |||
Options Indexes FollowSymLinks | |||
</Directory> | |||
</VirtualHost> | |||
</pre> | |||
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 [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 <nowiki>http://www.dominio.it/debian</nowiki> è sufficiente aggiungere, nella configurazione del VirtualHost in questione | |||
<pre> | |||
Alias /debian /var/lib/debarchiver | |||
</pre> | |||
{{Box|Nota:|per rendere ''sfogliabile'' il repository è consigliabile aggiungere, dopo la dichiarazione precedente, un pezzo di codice simile al seguente: | |||
<pre> | |||
<Directory /debian> | |||
Options Indexes FollowSymLinks | |||
</Directory> | |||
</pre> [http://httpd.apache.org/docs/2.0/mod/core.html#options qui] sono disponibili maggiori dettagli a riguardo}} | |||
===Server FTP=== | |||
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 3° livello==== | |||
Un esempio di configurazione (da inserire all'interno di <code>'''/etc/proftpd.conf'''</code>) per l'accesso al repository tramite il protocollo ftp: | |||
<pre> | |||
<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> | |||
</pre> | |||
==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]] |
contributi