Dupload per l'upload dei pacchetti Debian: differenze tra le versioni
S3v (discussione | contributi) Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
Riga 2: | Riga 2: | ||
Quando si usano repository Debian che gestiscono in modo automatizzato i pacchetti, viene richiesto di seguire una ben determinata procedura per l'upload. | Quando si usano repository Debian che gestiscono in modo automatizzato i pacchetti, viene richiesto di seguire una ben determinata procedura per l'upload. | ||
Questo è dovuto al fatto che è necessaria la presenza di un ''semaforo'' che indichi quando l'upload è avvenuto correttamente ed è stato completato. Sebbene la cosa | Questo è dovuto al fatto che è necessaria la presenza di un ''semaforo'' che indichi quando l'upload è avvenuto correttamente ed è stato completato. Sebbene la cosa possa essere fatta tranquillamente a mano, esiste un tool molto utile: '''Dupload''' (Debian UPLOAD). | ||
=Funzionamento= | =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 | 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 <code>.changes</code>, che funge da ''semaforo''. | ||
=Installazione= | =Installazione= | ||
Riga 50: | Riga 50: | ||
</pre> | </pre> | ||
'''quando''' può assumere due valori: | <code>'''quando'''</code> può assumere due valori: | ||
* '''preupload''': il comando viene eseguito prima di effettuare l'upload | * <code>'''preupload'''</code>: il comando viene eseguito prima di effettuare l'upload; | ||
* '''postupload''': il comando viene eseguito dopo aver effettuato l'upload | * <code>'''postupload'''</code>: 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: | <code>'''a_cosa'''</code> 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 | * <code>'''sourcepackage'''</code>: il pacchetto di sorgenti (quindi i file <code>''.diff.gz''</code> e <code>''orig.tar.gz''</code>). Parametri disponibili: nome del file e versione; | ||
*'''file''' : ogni singolo file (è abbinabile solo a ''$postupload''). Parametro disponibile: nome del file | * <code>'''file'''</code>: ogni singolo file (è abbinabile solo a <code>''$postupload''</code>). Parametro disponibile: nome del file; | ||
*'''changes''' : il file ''.changes''. Parametro disponibile: nome del file | * <code>'''changes'''</code>: il file <code>''.changes''</code>. Parametro disponibile: nome del file; | ||
*'''deb''' : i file ''.deb'', i pacchetti binari. Parametro disponibile: nome del file | * <code>'''deb'''</code>: i file <code>''.deb''</code>, i pacchetti binari. Parametro disponibile: nome del file; | ||
*'''package''' : ogni singolo pacchetto ''.deb'' . Parametri disponibili: nome del file e versione | * <code>'''package'''</code>: ogni singolo pacchetto <code>''.deb''</code>. Parametri disponibili: nome del file e versione; | ||
'''comando''' permette di indicare il comando da eseguire. | <code>'''comando'''</code> permette di indicare il comando da eseguire. In base a quanto specificato in '''a_cosa''' è possibile avere a disposizione uno o due parametri (<code>'''%1'''</code> per il primo e <code>'''%2'''</code> per il secondo, se disponibile). | ||
===Default Host=== | ===Default Host=== | ||
Riga 91: | Riga 91: | ||
</pre> | </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: | la dichiarazione del nome dell'host avviene tramite l'impostazione del nome dell'array <code>'''$cfg{'nome'}'''</code>. 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. | ; <code>fqdn</code>: 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: | ; <code>method</code>: permette di specificare il protocollo da utilizzare per effettuare l'upload. Sono disponibili i seguenti: | ||
:*ftp (valore di default) | :*<code>ftp </code>(valore di default) | ||
:*scp | :*<code>scp</code> | ||
:*rsync | :*<code>rsync</code> | ||
; login : permette di impostare l'username con il quale accedere. Il valore di default è ''anonymous'', usato molto spesso nelle directory di incoming pubbliche. | ; <code>login</code>: 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. | ; <code>incoming</code>: Imposta la directory del server in cui devono essere copiati i file. | ||
; mailto : dove inviare l'annuncio dell'invio di un pacchetto per ''stable''. | ; <code>mailto</code>: dove inviare l'annuncio dell'invio di un pacchetto per ''stable''. | ||
; mailtx : come sopra, ma riferito a ''unstable'' ed ''experimental''. | ; <code>mailtx</code>: come sopra, ma riferito a ''unstable'' ed ''experimental''. | ||
; passive : Attiva la modalità passiva nel trasferimento tramite il protocollo ftp. | ; <code>passive</code>: 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()'']. | ; <code>visibleuser</code>: 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]. | ; <code>visiblename</code>: 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''. | ; <code>preupload</code>: permette, tramite la definizione di un array (come fanno nell'esempio) di impostare delle azioni specifiche come precedentemente spiegato nella sezione ''hooks''. | ||
=Utilizzo= | =Utilizzo= | ||
L'utilizzo è semplicissimo: il programma accetta, come input, i file ''.changes'', seguendo la sintassi: | L'utilizzo è semplicissimo: il programma accetta, come input, i file <code>''.changes''</code>, seguendo la sintassi: | ||
<pre> | <pre> | ||
$ dupload [opzioni] <file .changes> [<altri file .changes>] | $ dupload [opzioni] <file .changes> [<altri file .changes>] | ||
Riga 114: | Riga 114: | ||
Le opzioni più usate sono le seguenti: | Le opzioni più usate sono le seguenti: | ||
; --no : esegue solo un test, mostrando quello che farebbe in modalità normale | ; <code>--no</code>: esegue solo un test, mostrando quello che farebbe in modalità normale; | ||
; --nomail : non invia l'annuncio per l'upload che verrà eseguito | ; <code>--nomail</code>: 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. | ; <code>-t --to nome_del_server</code>: utilizza <code>''nome_del_server''</code> come server su cui caricare i file (i server sono definiti nel file di configurazione). È possibile usare l'impostazione <code>'''default_host'''</code> nel file di configurazione per indicare quale server utilizzare se <code>''--to''</code> non è indicato. | ||
=Dupload e Debarchiver= | =Dupload e Debarchiver= |
Versione delle 20:47, 19 gen 2010
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 è dovuto al fatto che è necessaria la presenza di un semaforo che indichi quando l'upload è avvenuto correttamente ed è stato completato. Sebbene la cosa possa 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:
# apt-get install dupload
Configurazione
La configurazione di dupload è gestibile tramite il file /etc/dupload.conf
. 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-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
La sintassi è la seguente:
$quando{'a_cosa'} = 'comando';
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
eorig.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.
# $default_host = "anonymous-ftp-master";
indica, ad esempio, anonymous-ftp-master.
Definizioni degli host
La definizione dell'host è semplice ed immediata. Analizziamo un esempio:
$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', }, };
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:
$ dupload [opzioni] <file .changes> [<altri file .changes>]
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'impostazionedefault_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
$cfg{'debarchiver-stable'} = { fqdn => "esempio.it", incoming => "/var/lib/debarchiver/incoming/stable/", login => "utente", method => "scp", };
Testing
$cfg{'debarchiver-testing'} = { fqdn => "esempio.t", incoming => "/var/lib/debarchiver/incoming/testing/", login => "utente", method => "scp", };
Unstable
$cfg{'debarchiver-unstable'} = { fqdn => "esempio.it", incoming => "/var/lib/debarchiver/incoming/unstable/", login => "utente", method => "scp", };
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 L'angolo del nuovo Manutentore Debian.