Gestione di un repository con debarchiver: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
m
versioni compatibili
mNessun oggetto della modifica
m (versioni compatibili)
(16 versioni intermedie di 8 utenti non mostrate)
Riga 1: Riga 1:
__NOTOC__
{{Repository
|precedente=Creare un Repository Debian
|successivo=Introduzione all'APT System
}}
{{Versioni compatibili|Wheezy|Jessie}}
__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.


==Sito personale==
==Installazione==
'''[http://www.paulox.net www.paulox.net]'''
L'installazione è semplice, in quanto il programma è incluso in Debian:
<pre>
# apt-get install debarchiver
</pre>


<!-- Raccomando agli utenti di Sarge di installare la versione presente in testing, in quanto molto più aggiornata e funzionale di quella inclusa nella release ''Stable''. -->


==Configurazione==
Tutta la configurazione di debarchiver è racchiusa in un unico file: <code>'''/etc/debarchiver.conf'''</code>, che analizziamo nel dettaglio:


==Progetti==
{{Box|Nota Bene:|le opzioni riportate nel file di configurazione sono inizialmente commentate in quanto i valori riportati sono quelli di default.}}


* '''[http://www.paulox.net/software_libero/per_tutti Software Libero per tutti]'''<br />''Il progetto �'''Software libero per tutti'''� nasce dal '''bisogno''' di disporre di '''documenti''' mirati a spiegare in modo '''chiaro e conciso''' cosa sia il '''[http://it.wikipedia.org/wiki/Software_Libero Software Libero]''' a '''persone''' che sanno '''poco o nulla''' di '''[http://it.wikipedia.org/wiki/Informatica informatica]'''''.
<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>)


* '''[http://www.openscout.org/wiki/index.php?title=Utente:Paulox OpenScout]'''<br />''[http://www.openscout.org/wiki/index.php?title=Utente:Paulox OpenScout] � un progetto che propone di approfondire la tematica del [[Software Libero]] applicate allo Scoutismo.''
<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 = "^kernel.*\\.deb\$";
# $distinputdirs = "/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.


==Collaborazioni==
<pre>
'''[http://it.wikipedia.org/wiki/Utente:Paulox WikiPedia]''', ''l'enciclopedia libera''.
# $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.


==Contributi==
<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>.


''Un elenco dei miei contributi alle guide di debianizzati.org.''
<pre>
@distributions = ('stable', 'testing', 'unstable');
</pre>
Questa lista indica le release presenti nel repository (in questo caso le 3 release ''stable'', ''testing'' e ''unstable'').


{| cellpadding="5" cellspacing="0"  background="#f7f8ff" align="left" border="0px grey"


| width=33% valign=top style="border:1px solid grey;" align=left|
<pre>
===Articoli creati da me===
%distmapping =
        (
        stable => 'wheezy',
        testing => 'jessie',
        unstable => 'sid'
        );
</pre>
Schema per la creazione di link tra i nomi delle release reali e i nomi dello stato delle release.


| width=33% valign=top style="border:1px solid grey;" align=left|
<pre>
# @architectures = ('i386');
</pre>
Permette di indicare la lista di architetture (racchiuse tra apici e separate da una virgola) presenti nel repository.


===Articoli a cui ho contribuito===
<pre>
@sections = ('main', 'contrib', 'non-free');
</pre>
Indica le sezioni in cui è suddiviso il repository. <!-- La sezione ''non-free'' non è più presente nelle release ufficiali Debian a partire dal rilascio di Sarge. -->


# [[Codice Libero]]
<pre>
# [[Installazione Qemu con supporto accelerazione Kqemu]]
@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.


| width=33% valign=top style="border:1px solid grey;" align=left|
<pre>
%release = (  'origin' => "",
                'label' => "",
                'description' => "");
</pre>
Informazioni aggiuntive da inserire nel file Release.


===Articoli che vorrei scrivere===
<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).
 
 
===Permessi===
Debarchiver è configurato per lavorare correttamente con i server FTP e web. È impostato, infatti, il permesso di lettura per tutti gli utenti.
 
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>
 
==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 rigaurdo}}
 
===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> # rm -f `find /var/lib/debarchiver/dists/ -iname "kpakketto*"`</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]]
3 581

contributi

Menu di navigazione