Dupload per l'upload dei pacchetti Debian: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
m (rimosso lo stub)
Riga 1: Riga 1:
{{stub}}
=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.
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 pu� essere fatta tranquillamente a mano, esiste un tool molto utile: dupload (Debian 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 può 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 ''.changes'', che funge da ''semaforo''.
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=
=Installazione=
Il pacchetto, ovviamente, presente in Debian:
Il pacchetto, ovviamente, è presente in Debian:
<pre>
<pre>
# apt-get install dupload
# apt-get install dupload
Riga 16: Riga 14:


=Configurazione=
=Configurazione=
La configurazione di dupload getibile tramite il file '''/etc/dupload.conf'''. Il file in questione pu� essere suddiviso in 2 sezioni:
La configurazione di dupload è getibile tramite il file '''/etc/dupload.conf'''. Il file in questione può essere suddiviso in 2 sezioni:


==Impostazioni globali==
==Impostazioni globali==
Riga 47: Riga 45:
# Note: hooks can also be defined in a per-host basis
# Note: hooks can also be defined in a per-host basis
</pre>
</pre>
La sintassi la seguente:
La sintassi è la seguente:
<pre>
<pre>
$quando{'a_cosa'} = 'comando';
$quando{'a_cosa'} = 'comando';
</pre>
</pre>


'''quando''' pu� assumere due valori:
'''quando''' può assumere due valori:
* preupload: il comando viene eseguito prima di effettuare l'upload
* preupload: il comando viene eseguito prima di effettuare l'upload
* postupload: il comando viene eseguito dopo aver effettuato l'upload
* postupload: il comando viene eseguito dopo aver effettuato l'upload
Riga 58: Riga 56:
'''a_cosa''' indica il target dell'azione. L'azione, quindi, viene eseguita quando viene completato l'upload (o prima dell'upload) di:
'''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.
:; 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.
:; file : ogni singolo file (è abbinabile solo a ''$postupload''). Parametro disponibile: nome del file.
:; changes : il file ''.changes''. 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.
:; deb : i file ''.deb'', i pacchetti binari. Parametro disponibile: nome del file.
:; package : ochi singolo pacchetto ''.deb'' . Parametri disponibili: nome del file e versione.
:; package : ochi 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).
'''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===
===Default Host===
Riga 73: Riga 71:


==Definizioni degli host==
==Definizioni degli host==
La definizione dell'host semplice ed immediata. Analizziamo un esempio:
La definizione dell'host è semplice ed immediata. Analizziamo un esempio:
<pre>
<pre>
$cfg{'mentors'} = {
$cfg{'mentors'} = {
Riga 100: Riga 98:
:*scp
:*scp
:*rsync
:*rsync
; login : permette di impostare l'username con il quale accedere. Il valore di default ''anonymous'', usato molto spesso nelle directory di incoming pubbliche.
; 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.
; 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''.
; mailto : dove inviare l'annuncio dell'invio di un pacchetto per ''stable''.
; mailtx : come sopra, ma riferito a ''unstable'' ed ''experimental''.
; mailtx : come sopra, ma riferito a ''unstable'' ed ''experimental''.
; passive : Attiva la modalit� passiva nel trasferimento tramite il protocollo ftp.
; 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()''].
; 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].
; 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''.
; preupload : 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 ''.changes'', seguendo la sintassi:
<pre>
<pre>
$ dupload [opzioni] <file .change> [<altri file .change>]
$ dupload [opzioni] <file .change> [<altri file .change>]
</pre>
</pre>


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.
; --no : esegue solo un test, mostrando quello che farebbe in modalità normale.
; --nomail : non invia l'annuncio per l'upload che verr� eseguito.
; --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.
; -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=
=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.
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.
Ecco un esempio funzionante di come creare 3 destinazioni per caricare pacchetti nelle tre sezioni del proprio repository, mediante il protocollo ssh.
Riga 157: Riga 155:
* gli utenti normali non hanno l'autorizzazione ad eseguire l'upload (il pacchetto viene scartato)
* gli utenti normali non hanno l'autorizzazione ad eseguire l'upload (il pacchetto viene scartato)
* si rallenta il processo di analisi dei nuovi pacchetti
* 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].
* 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].

Versione delle 21:56, 6 ott 2005

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 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:

# apt-get install dupload

Configurazione

La configurazione di dupload è getibile 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 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
ochi 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 .change> [<altri file .change>]

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

$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.