6 999
contributi
Nessun oggetto della modifica |
S3v (discussione | contributi) Nessun oggetto della modifica |
||
Riga 1: | Riga 1: | ||
=Introduzione= | =Introduzione= | ||
Quando si usano repository Debian che gestiscono in modo automatizzato i pacchetti, viene richiesto di seguire una ben determinata procedura per l'upload. | |||
Questo | Questo è dovuto al fatto che è necessaria la presenza di un ''semaforo'' che indichi quando l'upload è avvenuto correttamente ed è stato completato. Sebbene la cosa può essere fatta tranquillamente a mano, esiste un tool molto utile: '''Dupload''' (Debian UPLOAD). | ||
= | =Funzionamento= | ||
Il funzionamento è semplice: il programma si occupa di eseguire l'upload, tramite i protocolli supportati, dei file, con l'accortezza di inviare per ultimo il file ''.changes'', che funge da ''semaforo''. | |||
=Installazione= | |||
Il pacchetto, ovviamente, è presente in Debian: | |||
<pre> | |||
# apt-get install dupload | |||
</pre> | |||
=Configurazione= | |||
La configurazione di dupload è gestibile tramite il file <code>/etc/dupload.conf</code>. Il file in questione può essere suddiviso in 2 sezioni: | |||
==Impostazioni globali== | |||
In questa sezione sono definiti dei comportamenti globali, che possono essere definiti anche per i singoli host (nella loro sezione, ovviamente). | |||
= | ===hooks=== | ||
<pre> | |||
# ----------------- | |||
# Pre-defined hooks | |||
# ----------------- | |||
# Check changes file for valid signatures | |||
# Using GPG: | |||
$preupload{'changes'} = '/usr/share/dupload/gpg-check %1'; | |||
# or using PGP: | |||
# $preupload{'changes'} = '/usr/share/dupload/pgp-check %1'; | |||
= | # Lintian check of packages | ||
# $preupload{'deb'} = 'lintian -v -i %1'; | |||
# Other hooks: | |||
# $preupload{'sourcepackage'} | |||
# $preupload{'file'} | |||
# $preupload{'package'} | |||
# $postupload{'changes'} | |||
# $postupload{'sourcepackage'} | |||
# $postupload{'file'} | |||
# $postupload{'deb'} | |||
# $postupload{'package'} | |||
# Note: hooks can also be defined in a per-host basis | |||
</pre> | |||
La sintassi è la seguente: | |||
<pre> | <pre> | ||
$ | $quando{'a_cosa'} = 'comando'; | ||
</pre> | </pre> | ||
'''quando''' può assumere due valori: | |||
* '''preupload''': il comando viene eseguito prima di effettuare l'upload | |||
* '''postupload''': il comando viene eseguito dopo aver effettuato l'upload | |||
'''a_cosa''' indica il target dell'azione. L'azione, quindi, viene eseguita quando viene completato l'upload (o prima dell'upload) di: | |||
*'''sourcepackage''' : il pacchetto di sorgenti (quindi i file ''.diff.gz'' e ''orig.tar.gz''). Parametri disponibili: nome del file e versione. | |||
*'''file''' : ogni singolo file (è abbinabile solo a ''$postupload''). Parametro disponibile: nome del file. | |||
*'''changes''' : il file ''.changes''. Parametro disponibile: nome del file. | |||
*'''deb''' : i file ''.deb'', i pacchetti binari. Parametro disponibile: nome del file. | |||
*'''package''' : ogni singolo pacchetto ''.deb'' . Parametri disponibili: nome del file e versione. | |||
'''comando''' permette di indicare il comando da eseguire. in base a quanto specificato in '''a_cosa''' è possibile avere a disposizione uno o due parametri ('''%1''' per il primo e '''%2''' per il secondo, se disponibile). | |||
===Default Host=== | |||
Permette di indicare l'host da utilizzare come predefinito. | |||
<pre> | <pre> | ||
# | # $default_host = "anonymous-ftp-master"; | ||
</pre> | </pre> | ||
indica, ad esempio, ''anonymous-ftp-master''. | |||
{{ | ==Definizioni degli host== | ||
La definizione dell'host è semplice ed immediata. Analizziamo un esempio: | |||
<pre> | |||
$cfg{'mentors'} = { | |||
fqdn =>'mentors.debian.net', | |||
method =>'scpb', | |||
login =>'incoming', | |||
incoming=>'~', | |||
# Change these to the user and domain part of your email address | |||
# and uncomment them | |||
# visibleuser=>'hugo', | |||
# visiblename=>'mydomain.tld', | |||
mailtx =>'incoming@mentors.debian.net', | |||
preupload=> { | |||
deb=>'chmod 0644 %1', | |||
changes=>'chmod 0644 %1', | |||
file=>'chmod 0644 %1', | |||
}, | |||
}; | |||
</pre> | |||
la dichiarazione del nome dell'host avviene tramite l'impostazione del nome dell'array '''$cfg{'nome'}'''. Il contenuto di questo array rispetta le seguenti possibili dichiarazioni: | |||
; fqdn : indica il [[FQDN]], ossia il Full Qualify Domain Name. L'url del server a cui connettersi. | |||
; method : permette di specificare il protocollo da utilizzare per effettuare l'upload. Sono disponibili i seguenti: | |||
:*ftp (valore di default) | |||
:*scp | |||
:*rsync | |||
; login : permette di impostare l'username con il quale accedere. Il valore di default è ''anonymous'', usato molto spesso nelle directory di incoming pubbliche. | |||
; incoming : Imposta la directory del server in cui devono essere copiati i file. | |||
; mailto : dove inviare l'annuncio dell'invio di un pacchetto per ''stable''. | |||
; mailtx : come sopra, ma riferito a ''unstable'' ed ''experimental''. | |||
; passive : Attiva la modalità passiva nel trasferimento tramite il protocollo ftp. | |||
; visibleuser : permette di impostare il nome dell'utente che comparirà come mittente nelle email generate dall'upload [default: l'username ricavato tramite la funzione ''getlogin()'']. | |||
; visiblename : permette di specificare il dominio che seguirà la ''@'' nell'indirizzo email usato come mittente delle email [Default: il valore ricavato dall'MTA installato sul proprio computer]. | |||
; preupload : permette, tramite la definizione di un array (come fanno nell'esempio) di impostare delle azioni specifiche come precedentemente spiegato nella sezione ''hooks''. | |||
= | =Utilizzo= | ||
L'utilizzo è semplicissimo: il programma accetta, come input, i file ''.changes'', seguendo la sintassi: | |||
<pre> | |||
$ dupload [opzioni] <file .changes> [<altri file .changes>] | |||
</pre> | |||
Le opzioni più usate sono le seguenti: | |||
; --no : esegue solo un test, mostrando quello che farebbe in modalità normale. | |||
; --nomail : non invia l'annuncio per l'upload che verrà eseguito. | |||
; -t --to nome_del_server : utilizza ''nome_del_server'' come server su cui caricare i file (i server sono definiti nel file di configurazione). È possibile usare l'impostazione '''default_host''' nel file di configurazione per indicare quale server utilizzare se ''--to'' non è indicato. | |||
=Dupload e Debarchiver= | |||
Nella guida [[Gestione di un repository con debarchiver]] si accennava al fatto che è possibile usare Dupload per caricare i pacchetti nella directory ''incoming'' del proprio repository. | |||
Ecco un esempio funzionante di come creare 3 destinazioni per caricare pacchetti nelle tre sezioni del proprio repository, mediante il protocollo ssh. | |||
==Stable== | |||
<pre> | |||
$cfg{'debarchiver-stable'} = { | |||
fqdn => "esempio.it", | |||
incoming => "/var/lib/debarchiver/incoming/stable/", | |||
login => "utente", | |||
method => "scp", | |||
}; | |||
</pre> | |||
==Testing== | |||
<pre> | |||
$cfg{'debarchiver-testing'} = { | |||
fqdn => "esempio.t", | |||
incoming => "/var/lib/debarchiver/incoming/testing/", | |||
login => "utente", | |||
method => "scp", | |||
}; | |||
</pre> | |||
==Unstable== | |||
<pre> | |||
$cfg{'debarchiver-unstable'} = { | |||
fqdn => "esempio.it", | |||
incoming => "/var/lib/debarchiver/incoming/unstable/", | |||
login => "utente", | |||
method => "scp", | |||
}; | |||
</pre> | |||
=Raccomandazioni= | |||
Nella configurazione di default di Dupload sono presenti tutti gli indirizzi dei server Debian. A meno di sapere cosa fare, non usarli, per i seguenti motivi: | |||
* gli utenti normali non hanno l'autorizzazione ad eseguire l'upload (il pacchetto viene scartato) | |||
* si rallenta il processo di analisi dei nuovi pacchetti | |||
* se proprio si vuole avere un proprio pacchetto in Debian, è d'obbligo visitare [http://www.debian.org/devel/join/newmaint L'angolo del nuovo Manutentore Debian]. | |||
[[Categoria: | [[Categoria:Repository]] | ||
contributi