Dupload per l'upload dei pacchetti Debian
Da Guide@Debianizzati.Org.
| Debian Etch 4.0 |
Indice |
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.gzeorig.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)scprsync
-
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_servercome server su cui caricare i file (i server sono definiti nel file di configurazione). È possibile usare l'impostazionedefault_hostnel file di configurazione per indicare quale server utilizzare se--tonon è 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.

