3 581
contributi
m (→Utilizzo Reale) |
m (verificata, parzialmente) |
||
(27 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=== | |||
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