|
|
Riga 1: |
Riga 1: |
| =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.
| | A causa delle numerose migrazioni gli utenti di testing possono trovarsi davanti a qualche problema relativo alla mancanza di pacchetti nel repository ufficiale Debian... |
|
| |
|
| 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 alla politica di gestione di testing, la quale richiede che un pacchetto debba avere le seguenti caratteristiche, prima di entrare in testing: |
| | * Sia stato in unstable per almeno 10 giorni (nel caso di priorit� bassa (''low'')); |
| | * Non abbia Bug gravi; |
| | * Le dipendenze richieste siano completamente soddisfatte in testing. |
|
| |
|
| =Funzionamento= | | =Lo stato di un pacchetto= |
| 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''.
| | � possibile conoscere lo stato di un pacchetto (per l'esattezza di un pacchetto di sorgenti) tramite il sito della [http://qa.debian.org Quality Assurance], nel seguente modo: |
| | * ricavare il pacchetto sorgente da cui viene creato il pacchetto binario in questione: |
| | <pre> $ apt-cache show nomepacchetto | grep Source</pre> |
| | * recarsi su http://packages.qa.debian.org ed inserire il nome del pacchetto sorgente |
| | * leggere lo stato del pacchetto! |
|
| |
|
| =Installazione=
| | {{Box|Nota:|� possibile automatizzare la procedura inserendo, nella pagina http://packages.qa.debian.org, il nome del pacchetto binario... il sistema mostrer� il nome del pacchetto di sorgenti relativo ed in 10 secondi reindirizzer� alla pagina relativa al suo stato.}} |
| Il pacchetto, ovviamente, è presente in Debian:
| |
| <pre>
| |
| # apt-get install dupload
| |
| </pre>
| |
| | |
| =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>
| |
| # -----------------
| |
| # 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
| |
| </pre>
| |
| La sintassi è la seguente:
| |
| <pre>
| |
| $quando{'a_cosa'} = 'comando';
| |
| </pre>
| |
|
| |
|
| '''quando''' può assumere due valori: | | =Creare i pacchetti binari per la propria distribuzione= |
| * preupload: il comando viene eseguito prima di effettuare l'upload
| | Premetto che la seguente procedura � utilizzabile prevalentemente per il backport da ''unstable'' a ''testing'', mentre potrebbe dare problemi per il backport da ''testing'' a ''stable''. |
| * 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:
| | ==Pacchetti necessari== |
| :; sourcepackage : il pacchetto di sorgenti (quindi i file ''.diff.gz'' e ''orig.tar.gz''). Parametri disponibili: nome del file e versione.
| | Per eseguire le operazioni illustrare in questa pagina sono necessari i seguenti pacchetti, normalmente utilizzati per lo sviluppo dei pacchetti Debian: |
| :; file : ogni singolo file (è abbinabile solo a ''$postupload''). Parametro disponibile: nome del file.
| | * dpkg-dev |
| :; changes : il file ''.changes''. Parametro disponibile: nome del file.
| | * devscripts |
| :; deb : i file ''.deb'', i pacchetti binari. Parametro disponibile: nome del file.
| | * fakeroot |
| :; 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). | | ==Scaricare i sorgenti== |
| | Dalla pagina relativa allo stato del pacchetto � possibile scaricare i sorgenti necessari per questo backport (nel riquadro '''Source files'''). I file sono, per l'esattezza, 3: |
| | * l'archivio contenente i sorgenti originali, '''.orig.tar.gz''' |
| | * l'archivio contenente le patch per creare il pacchetto, '''.patch.gz''' |
| | * il file contenente la descrizione del pacchetto, '''.dsc''' |
|
| |
|
| ===Default Host===
| | Una volta scaricati in una unica directory � necessario estrarli: |
| Permette di indicare l'host da utilizzare come predefinito.
| |
| <pre> | | <pre> |
| # $default_host = "anonymous-ftp-master";
| | $ dpkg-source -x nomepacchetto.....dsc |
| </pre> | | </pre> |
| indica, ad esempio, ''anonymous-ftp-master''.
| |
|
| |
|
| ==Definizioni degli host== | | ==Scaricare le dipendenze== |
| La definizione dell'host è semplice ed immediata. Analizziamo un esempio:
| | Prima di procedere alla compilazione � necessario installare i pacchetti ''-dev'' necessari per la compilazione... |
| | Anche in questo caso, come sempre del resto, il sistema di gestione dei pacchetti Debian ci viene in aiuto: � infatti necessario un semplice |
| <pre> | | <pre> |
| $cfg{'mentors'} = {
| | # apt-get build-deps nomepacchetto |
| 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',
| |
| },
| |
| };
| |
| </pre> | | </pre> |
| | per installare le dipendenze necessarie alla compilazione. |
|
| |
|
| 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:
| | {{Box|Nota:|il comando potrebbe non risolvere tutte le dipendenze (nel peggiore dei casi potrebbe non trovare informazioni riguardo a queste). In questo caso, quindi, bisogner� installarle a mano. Le dipendenze mancanti verranno mostrate nell'output di ''dpkg-buildpackage'' e dovranno essere installate come viene installato normalmente un pacchetto. Non sar� possibile continuare nel processo di compilazione se non si soddisfano tutte le dipendenze di compilazione.}} |
|
| |
|
| ; fqdn : indica il [[FQDN]], ossia il Full Qualify Domain Name. L'url del server a cui connettersi.
| | ==Compilare il pacchetto== |
| ; method : permette di specificare il protocollo da utilizzare per effettuare l'upload. Sono disponibili i seguenti:
| | Una volta installate le dipendenze si pu� procedere con la compilazione del pacchetto: |
| :*ftp (valore di default)
| | * bisogna entrare nella directory dei sorgenti creata durante l'estrazione dei sorgenti; |
| :*scp
| | * per far partire la compilazione si pu� usare il seguente comando: <pre>$ fakeroot dpkg-buildpackage</pre> |
| :*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:
| |
| <pre> | |
| $ dupload [opzioni] <file .changes> [<altri file .changes>] | |
| </pre> | |
|
| |
|
| Le opzioni più usate sono le seguenti:
| | Se tutto procede senza problemi verranno creati, nella directory precedente, i pacchetti binari frutto della compilazione... per installarli � sufficiente il classico |
| ; --no : esegue solo un test, mostrando quello che farebbe in modalità normale.
| | <pre> # dpkg -i nomepacchetto.....deb</pre> |
| ; --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= | | =Conclusioni= |
| 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.
| | Questo rappresenta il metodo pi� semplice per ottenere un pacchetto per testing partendo da un pacchetto sorgente di unstable, anche se non sempre pu� essere applicato (a causa di dipendenze non risolte perch� non presenti in testing (in questo caso � necessario partire dal backporting delle librerie mancanti) o perch� le versioni dei pacchetti in testing non sono abbastanza aggiornate per concludere con successo la compilazione (evento molto raro)). |
|
| |
|
| Ecco un esempio funzionante di come creare 3 destinazioni per caricare pacchetti nelle tre sezioni del proprio repository, mediante il protocollo ssh.
| | Nel Backport Howto vedremo, pi� in dettaglio, come eseguire un Backport da ''testing''/''unstable'' verso ''stable''... |
| ==Stable==
| |
| <pre>
| |
| $cfg{'debarchiver-stable'} = {
| |
| fqdn => "esempio.it",
| |
| incoming => "/var/lib/debarchiver/incoming/stable/",
| |
| login => "utente",
| |
| method => "scp",
| |
| };
| |
| </pre>
| |
| | |
| ==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=
| | [[Categoria:Apt]] |
| 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:
| | [[Categoria:Apt-Dev]] |
| * 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 [http://www.debian.org/devel/join/newmaint L'angolo del nuovo Manutentore Debian].
| |