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

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
m (→‎Utilizzo: typo)
m (aggiunta Jessie (stessa versione pacchetto))
 
(8 versioni intermedie di 4 utenti non mostrate)
Riga 1: Riga 1:
=Introduzione=
{{Versioni compatibili|Squeeze|Wheezy|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.
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>
Riga 13: Riga 14:
</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 50: Riga 51:
</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 70: 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>
Riga 91: Riga 92:
</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 115:


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 ==
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.
==Stable==
=== Stable ===
<pre>
<pre>
$cfg{'debarchiver-stable'} = {
$cfg{'debarchiver-stable'} = {
Riga 132: Riga 133:
</pre>
</pre>


==Testing==
=== Testing ===
<pre>
<pre>
$cfg{'debarchiver-testing'} = {
$cfg{'debarchiver-testing'} = {
Riga 141: Riga 142:
};
};
</pre>
</pre>
==Unstable==
=== Unstable ===
<pre>
<pre>
$cfg{'debarchiver-unstable'} = {
$cfg{'debarchiver-unstable'} = {
Riga 151: Riga 152:
</pre>
</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