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

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
m (aggiunta Jessie (stessa versione pacchetto))
 
(13 versioni intermedie di 5 utenti non mostrate)
Riga 1: Riga 1:
{{stub}}
{{Versioni compatibili|Squeeze|Wheezy|Jessie}}
 
== 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 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 ''.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 <code>.changes</code>, 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
</pre>
</pre>


=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 è gestibile tramite il file <code>/etc/dupload.conf</code>. Il file in questione può essere suddiviso in 2 sezioni:


==Impostazioni globali==
=== Impostazioni globali ===
In questa sezione sono definiti dei comportamenti globali, che possono essere definiti anche per i singoli host (nella loro sezione, ovviamente).
In questa sezione sono definiti dei comportamenti globali, che possono essere definiti anche per i singoli host (nella loro sezione, ovviamente).


===hooks===
==== hooks ====
<pre>
<pre>
# -----------------
# -----------------
Riga 47: Riga 46:
# 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:
<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 : ochi 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. 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).
<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 ====
Permette di indicare l'host da utilizzare come predefinito.
Permette di indicare l'host da utilizzare come predefinito.
<pre>
<pre>
Riga 72: Riga 71:
indica, ad esempio, ''anonymous-ftp-master''.
indica, ad esempio, ''anonymous-ftp-master''.


==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 93: Riga 92:
</pre>
</pre>


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:


; <code>fqdn</code>: indica il [[FQDN]], ossia il Full Qualify Domain Name. L'url del server a cui connettersi.
; <code>method</code>: permette di specificare il protocollo da utilizzare per effettuare l'upload. Sono disponibili i seguenti:
:*<code>ftp </code>(valore di default)
:*<code>scp</code>
:*<code>rsync</code>
; <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.
; <code>incoming</code>: Imposta la directory del server in cui devono essere copiati i file.
; <code>mailto</code>: dove inviare l'annuncio dell'invio di un pacchetto per ''stable''.
; <code>mailtx</code>: come sopra, ma riferito a ''unstable'' ed ''experimental''.
; <code>passive</code>: Attiva la modalità passiva nel trasferimento tramite il protocollo ftp.
; <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()''].
; <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].
; <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 ==
L'utilizzo è semplicissimo: il programma accetta, come input, i file <code>''.changes''</code>, seguendo la sintassi:
<pre>
$ dupload [opzioni] <file .changes> [<altri file .changes>]
</pre>
Le opzioni più usate sono le seguenti:
; <code>--no</code>: esegue solo un test, mostrando quello che farebbe in modalità normale;
; <code>--nomail</code>: non invia l'annuncio per l'upload che verrà eseguito;
; <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 ==
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>


=Alcuni esempi=
=== 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=
== 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:
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)
* 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].
 
{{Autori
|Autore=[[Utente:MaXeR|MaXeR]]
}}
 
[[Categoria:Creare repository]]

Versione attuale delle 15:59, 30 mag 2015

Edit-clear-history.png Attenzione. Questa guida è da considerarsi abbandonata, per via del tempo trascorso dall'ultima verifica.

Potrà essere resa obsoleta, previa segnalazione sul forum, se nessuno si propone per l'adozione.


Debian-swirl.png Versioni Compatibili

Debian 6 "squeeze"
Debian 7 "wheezy"
Debian 8 "jessie"

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

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




Guida scritta da: MaXeR Swirl-auth20.png Debianized 20%
Estesa da:
Verificata da:

Verificare ed estendere la guida | Cos'è una guida Debianized