Guida di riferimento per lo sviluppatore Debian

Transcript

Guida di riferimento per lo sviluppatore Debian
Guida di riferimento per lo sviluppatore
Debian
Developer’s Reference Team
<[email protected]>
Adam Di Carlo, editor
Raphaël Hertzog
Christian Schwarz
Ian Jackson
Traduzione:
Francesco Donadon <[email protected]>
Emanuele Rocca <[email protected]>
ver. 3.3.4, 29 February 2004
Avviso di Copyright
copyright © 1998—2003 Adam Di Carlo
copyright © 2002—2003 Raphaël Hertzog
copyright © 1997, 1998 Christian Schwarz
Questo manuale è considerato free software; puoi redistribuirlo e/omodificarlo sotto le condizioni della GNU General Public Licenserilasciata dalla Free Software Foundation; versione 2 o
(a tuadiscrezione) qualunque versione successiva.
Questo manuale è distribuito nella speranza che sia utile, masenza alcuna garanzia; senza neanche la garanzia implicitache sia commerciabile o utile per un particolare scopo. Leggi la
GNUGeneral Public License per ulteriori dettagli.
Una copia della GNU General Public License è disponibile nel file/usr/share
/common-licenses/GPL all’interno della distribuzione Debian GNU/Linux o in retesu il
sito web GNU (http://www.gnu.org/copyleft/gpl.html). Puoi anche ottenerneuna
copia scrivendo a Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA.
i
Indice
1
Scopo Di Questo Documento
1
2
Applying per diventare un maintainer
3
2.1
Iniziare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
2.2
Registrarsi come sviluppatore Debian . . . . . . . . . . . . . . . . . . . . . . . . .
4
2.3
Debian mentor e sponsor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
3
4
Compiti dello sviluppatore Debian
7
3.1
Aggiornare le tue informazioni in Debian . . . . . . . . . . . . . . . . . . . . . . .
7
3.2
Mantenere la tua chiave privata . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
3.3
Votare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
3.4
Andare in vacanza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
3.5
Cooperazione con gli sviluppatori upstream . . . . . . . . . . . . . . . . . . . . .
8
3.6
Gestire i bug release-critical . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
3.7
Ritirarsi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
Risorse per gli sviluppatori Debian
4.1
11
Mailing list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.1.1
Regole di base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.1.2
Principali mailing list di sviluppo . . . . . . . . . . . . . . . . . . . . . . . 11
4.1.3
Liste speciali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.1.4
Richiedere nuove liste relative allo sviluppo. . . . . . . . . . . . . . . . . . 12
4.2
Canali IRC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.3
Documentazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.4
Macchine Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
INDICE
ii
4.4.1
Il server bugs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.4.2
Il server ftp-master . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.4.3
Il server non-US . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.4.4
Il server www-master . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.4.5
Il server web people . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.4.6
Il server CVS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.5
Il database degli sviluppatori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.6
L’archivio Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.6.1
Sezioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.6.2
Architetture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.6.3
Pacchetti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.6.4
Distribuzioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.6.5
Nomi in codice delle release . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.7
Mirror Debian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.8
Il sistema incoming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.8.1
4.9
Incoming ritardato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Informazioni sui pacchetti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.9.1
Sul web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.9.2
L’utility madison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.10 Il sistema di tracciamento dei pacchetti . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.10.1 L’interfaccia email del PTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.10.2 Filtrare le mail del PTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.10.3 Inoltrare i commit CVS nel PTS . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.10.4 L’interfaccia web del PTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.11 Vista d’insieme dei pacchetti degli sviluppatori . . . . . . . . . . . . . . . . . . . . 30
4.12 Debian *Forge: Alioth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5
Gestire i pacchetti
33
5.1
Nuovi pacchetti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.2
Registrare i cambiamenti dei pacchetti . . . . . . . . . . . . . . . . . . . . . . . . . 34
5.3
Controllare il pacchetto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
INDICE
iii
5.4
Layout del pacchetto sorgente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
5.5
Scegliere la distribuzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
5.6
5.5.1
Caso speciale: upload alla distribuzione stable . . . . . . . . . . . . . . . . 36
5.5.2
Caso speciale: upload a testing-proposed-updates . . . . . . . . . . . . . . . . 37
Effetuare un upload . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.6.1
Inviare un upload a ftp-master . . . . . . . . . . . . . . . . . . . . . . . 37
5.6.2
Inviare un upload a non-US . . . . . . . . . . . . . . . . . . . . . . . . . . 38
5.6.3
Upload via chiark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.6.4
Upload via erlangen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.6.5
Altre code di upload . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
5.6.6
Notificazione che un nuovo pacchetto è stato installato . . . . . . . . . . . 40
5.7
Specificare sezione, sottosezione e priorità del pacchetto . . . . . . . . . . . . . . 40
5.8
Gestire i bug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.9
5.8.1
Monitorare i bug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.8.2
Rispondere ai bug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.8.3
Bug housekeeping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.8.4
Quando i bug vengono chiusi da nuovi upload. . . . . . . . . . . . . . . . 44
5.8.5
Gestire i bug di sicurezza . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Spostare, rimuovere, rinominare, adottare e abbandonare pacchetti . . . . . . . . 49
5.9.1
Spostare pacchetti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.9.2
Rimuovere pacchetti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.9.3
Rimpiazzare o rinominare pacchetti . . . . . . . . . . . . . . . . . . . . . . 50
5.9.4
Abbandonare un pacchetto . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.9.5
Adottare un pacchetto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.10 Porting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.10.1 Essere cortesi con i porter . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.10.2 Linee guida per gli upload dei porter . . . . . . . . . . . . . . . . . . . . . 53
5.10.3 Infrastrutture e automazione nel porting . . . . . . . . . . . . . . . . . . . 54
5.11 Non-Maintainer Upload (NMU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.11.1 Terminologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.11.2 Chi può fare un NMU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
INDICE
iv
5.11.3 Quando fare un NMU di sorgenti . . . . . . . . . . . . . . . . . . . . . . . 57
5.11.4 Come fare un NMU di sorgenti . . . . . . . . . . . . . . . . . . . . . . . . . 58
5.11.5 Riconoscere un NMU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.12 Manutenzione collaborativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
6
Procedimenti di pacchetizzazione consigliati
6.1
6.2
6.3
61
Procedimenti consigliati per debian/rules . . . . . . . . . . . . . . . . . . . . . 61
6.1.1
Script helper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
6.1.2
Separare le patch in file multipli . . . . . . . . . . . . . . . . . . . . . . . . 62
6.1.3
Pacchetti binari multipli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Procedimenti consigliati per debian/control . . . . . . . . . . . . . . . . . . . 63
6.2.1
Linee guida generiche per le descrizioni dei pacchetti . . . . . . . . . . . . 63
6.2.2
La sinossi del pacchetto, o descrizione breve . . . . . . . . . . . . . . . . . 64
6.2.3
La descrizione lunga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
6.2.4
Home page upstream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Procedimenti consigliati per debian/changelog . . . . . . . . . . . . . . . . . . 65
6.3.1
Scrivere voci di changelog utili . . . . . . . . . . . . . . . . . . . . . . . . . 66
6.3.2
Concetti comunemente sbagliati sulle voci di changelog . . . . . . . . . . 66
6.3.3
Errori comuni nelle voci di changelog . . . . . . . . . . . . . . . . . . . . . 67
6.4
Procedimenti consigliati per gli script del mantainer . . . . . . . . . . . . . . . . . 68
6.5
Gestione della configurazione con debconf . . . . . . . . . . . . . . . . . . . . . 69
6.6
Internazionalizzazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
6.7
6.6.1
Gestire le traduzioni di debconf . . . . . . . . . . . . . . . . . . . . . . . . 69
6.6.2
Documentazione internazionalizzata. . . . . . . . . . . . . . . . . . . . . . 70
Situazioni comuni di pacchettizzazione . . . . . . . . . . . . . . . . . . . . . . . . 70
6.7.1
Pacchetti che usano autoconf/automake . . . . . . . . . . . . . . . . . . 70
6.7.2
Librerie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
6.7.3
Documentazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
6.7.4
Tipologie specifiche di pacchetti . . . . . . . . . . . . . . . . . . . . . . . . 71
6.7.5
Dati indipendenti dall’architettura . . . . . . . . . . . . . . . . . . . . . . . 72
INDICE
7
v
Oltre la pacchettizzazione
7.1
Riportare bug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
7.1.1
7.2
73
Riportare un gran numero di bug in una volta sola . . . . . . . . . . . . . 74
Opere di assicurazione qualità . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
7.2.1
Lavori giornalieri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
7.2.2
Bug squashing party . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
7.3
Contattare altri mantainer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
7.4
Trattare con mantainer inattivi e/o irraggiungibili . . . . . . . . . . . . . . . . . . 75
7.5
Interazione con futuri sviluppatori Debian . . . . . . . . . . . . . . . . . . . . . . 77
7.5.1
Sponsorizzare pacchetti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
7.5.2
Gestire i pacchetti sponsorizzati . . . . . . . . . . . . . . . . . . . . . . . . 77
7.5.3
Advocating new developers . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
7.5.4
Handling new maintainer applications . . . . . . . . . . . . . . . . . . . . 78
A Overview of Debian Maintainer Tools
79
A.1 Core tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
A.1.1 dpkg-dev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
A.1.2 debconf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
A.1.3 fakeroot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
A.2 Package lint tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
A.2.1 lintian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
A.2.2 linda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
A.2.3 debdiff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
A.3 Helpers for debian/rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
A.3.1 debhelper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
A.3.2 debmake . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
A.3.3 dh-make . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
A.3.4 yada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
A.3.5 equivs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
A.4 Package builders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
A.4.1 cvs-buildpackage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
INDICE
vi
A.4.2 debootstrap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
A.4.3 pbuilder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
A.4.4 sbuild . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
A.5 Package uploaders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
A.5.1 dupload . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
A.5.2 dput . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
A.6 Maintenance automation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
A.6.1 devscripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
A.6.2 autotools-dev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
A.6.3 dpkg-repack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
A.6.4 alien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
A.6.5 debsums . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
A.6.6 dpkg-dev-el . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
A.6.7 dpkg-depcheck . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
A.7 Porting tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
A.7.1 quinn-diff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
A.7.2 dpkg-cross . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
A.8 Documentation and information . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
A.8.1 debiandoc-sgml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
A.8.2 debian-keyring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
A.8.3 debview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
1
Capitolo 1
Scopo Di Questo Documento
L’obiettivo di questo documento è di fornire una vista d’insieme delleprocedure raccomandate
e le risorse disponibili agli sviluppatoriDebian.
Le procedure qui discusse includono come diventare un mantainer(‘Applying per diventare
un maintainer’ a pagina 3); come creare nuovi pachetti(‘Nuovi pacchetti’ a pagina 33) e come
effettuarne l’upload (‘Effetuare un upload’ a pagina 37);come gestire i bug reports (‘Gestire
i bug’ a pagina 41); come muovere,rimuovere, o abbandonare pacchetti (‘Spostare, rimuovere, rinominare, adottare e abbandonare pacchetti’ a pagina 49); come fareil port di pacchetti
(‘Porting’ a pagina 51); e come e quando rilasciareversioni temporanee di pacchetti di altri
mantainers (‘Non-Maintainer Upload (NMU)’ a pagina 55).
Le risorse qui discusse includono le mailing list (‘Mailing list’ a pagina 11) X.YZWe i server
(‘Macchine Debian’ a pagina 14); unadiscussione sulla struttura dell’archivio Debian (‘L’archivio Debian’ a pagina 17);spiegazione sui diversi server che accettano l’upload di pacchetti(‘Inviare un upload a ftp-master’ a pagina 37); e una discussione sulle risorse chepossono
aiutare i mantainer a curare la qualità dei propri pacchetti.(‘Overview of Debian Maintainer
Tools’ a pagina 79).
Dovrebbe essere chiaro che questo documento non scende nei dettaglitecnici dei pacchetti Debian e neppure su come generare dettipacchetti. Questa guida non spiega nemmeno in dettaglio gli standard acui i pacchetti Debian devono sottostare. Tutte queste informazionipossono
essere trovate nella Debian Policy (http://www.debian.org/doc/debian-policy/).
Inoltre, questo documento non è espressione formale della politicaDebian. Contiene la documentazione per il sistema Debian ei -generalmente convenuti- migliori metodi operativi. Quindi, è
ciò che èchiamato un documento “normativo”.
Capitolo 1. Scopo Di Questo Documento
2
3
Capitolo 2
Applying per diventare un maintainer
2.1
Iniziare
Hai letto tutta la documentazione, sei gone through la Debian New Maintainers’ Guide (http:
//www.debian.org/doc/maint-guide/),hai capito a cosa serve ogni parte del pacchetto
di esempiohello e stai per Debianizzare il tuo softwarepreferito. Ma come diventare uno
sviluppatore Debian in modo da incorporareil tuo lavoro nel Progetto?
Innanzitutto, iscriviti alla lista <[email protected]> se non l’hai ancora fatto.Invia la parola subscribe nelSubject di una emaila <debian-devel-REQUEST@
lists.debian.org>.
In caso di problemi, contatta l’amministratoredelle liste a
<[email protected]>. Altre informazioni sulle mailing listdisponibili possono essere trovate in ‘Mailing list’ a pagina 11.<debian-devel-announce@lists.
debian.org> è un’altra lista essenzialeper chiunque voglia seguire lo sviluppo di Debian.
Dovresti iscriverti e “lurkare” (leggere senza inviare messaggi) per unpò prima di iniziare a
sviluppare e dovresti post la tua intenzione dilavorare su qualcosa per evitare di duplicare gli
sforzi.
Un’ altra buona lista cui iscriversi è <[email protected]>. Vedi ‘Debian mentor e sponsor’ a pagina 5 per i dettagoi. Il canale IRC #debian può ancheesserre
d’aiuto.
Quando hai deciso come vuoi contribuire a Debian GNU/Linux,dovresti metterti in contatto con dei maintainer Debian che lavorano sutasks simili. In questo modo puoi imparare da sviluppatori esperti.Per esempio, se sei interessato a pacchettizzare software esistente perDebian dovresti provare a trovare uno sponsor. Uno sponsor lavoreràcon te sul tuo
pacchetto e ne effettuerà l’upload nell’archivio Debian unavolta che sarà soddisfatto del tuo
lavoro di pacchetizzazione. Puoi trovareuno sponsor inviando una mail alla mailing list
<[email protected]>,descrivendo il tuo pacchetto and yourself (vedi ‘Sponsorizzare pacchetti’ a pagina 77per maggiori informazioni sullo sponsoring). D’altro
canto, se sei interessatonel port di Debian ad architetture alternative o kernel non ancora supportatipuoi iscriverti alle mailinglist relative al tuo port e chiedere da dove iniziare.Infine, se
Capitolo 2. Applying per diventare un maintainer
4
sei interessato a lavorare sulla documentazione o alla QualityAssurance (QA) puoi unirti agli
sviluppatori che lavorano in questi campied inviare patch e miglioramenti.
2.2
Registrarsi come sviluppatore Debian
Prima di decidere di unirti a Debian GNU/Linux, hai bisogno di leggeretutte le informazioni disponibili nell’ Angolo del nuovo manutentore (http://www.debian.org/devel/
join/newmaint). Esso descrive esattamentela preparazione che devi seguire prima di
poterti registrare per diventareuno sviluppatore Debian.Per esempio, prima di iniziare la
procedura devi leggere ilContratto sociale Debian (http://www.debian.org/social_
contract).Diventare sviluppatore significa essere d’accordo con il Contratto socialeDebian
ed impegnarsi a sostenerlo; è molto importante che glisviluppatori siano d’accordo con le
idee essenziali che stanno dietroDebian GNU/Linux. Anche il ManifestoGNU (http://www.
gnu.org/gnu/manifesto.html) può essere una buona lettura.
Il processo per diventare sviluppatore consiste nella verifica dellatua identità e delle tue intenzioni, nonchè il controllo delle tue capacitàtecniche. Considerando che il numero di persone
che lavorano suDebian GNU/Linux è cresciuto a più di 800 personee che i nostri sistemi sono
usati in posti molto importanti dobbiamo stareattenti a non essere compromessi.Quindi, dobbiamo verificare i nuovi manutentori prima di fornire lorodegli accessi sui nostri server e di
permettergli di effettuare degli uploaddi pacchetti.
Prima di registrarti dovresti aver dimostrato che puoi fare del lavorocompetente e contribuire
positivamente. Puoi dimostrarlo inviando dellepatch tramite il Bug Tracking System o avendo
un pacchetto sponsorizzatoda uno sviluppatore Debian per un pò di tempo. Inoltre ci aspettiamoche chi contribuisce sia interessato al Progetto intero e non solo al mantenereil proprio
software. Se puoi aiutare gli altri manutentori inviando maggioriinformazioni su un bug o
magari una patch, fallo!
La registrazione richiede che tu abbia familiarità con la filosofia Debiane la documentazione tecnica. Inoltre, hai bisogno di una chiave GnuPGfirmata da un manutentore. Se la tua
chiave GnuPG non è firmatadovresti provare ad incontrare uno sviluppatore Debian di persona per averela sua firma sulla tua chiave. C’è una Pagina di coordinamento per la firma
delle chiavi GnuPG Key (http://nm.debian.org/gpg.php) chedovrebbe aiutarti a trovare un manutentore vicino a te (se non riesci atrovarlo c’è un modo alternativo per passare il controllo dell’identità puoiinviare un photo ID firmato con la tua chiave GnuPG. Avere la tua chiaveGnuPG firmata è il modo migliore, comunque.Vedi la identification page
(http://www.debian.org/devel/join/nm-step2) per maggioriinformazioni su queste
due opzioni).
Se non hai ancora una chiave OpenPGP, generane una. Ogni sviluppatorene ha bisogno per firmare e verificare gli upload di pacchetti.Dovresti leggere la documentazione del software che
stai usando vistoche vi sono molte informazioni critiche dal punto di vista della sicurezza.Sono
più i problemi di sicurezza dovuti ad errori umani rispetto a quelliimputabili a problemi nel
software or high-powered spy techniques. Vedi‘Mantenere la tua chiave privata’ a pagina 7
per maggiori informazioni sul mantenimento dellatua chiave pubblica.
Capitolo 2. Applying per diventare un maintainer
5
Debian utilizza GNU Privacy Guard (pacchettognupg, versione 1 o superiore) come standard.Puoi comunque usare altre implementazioni di OpenPGP. Nota che OpenPGPè uno
standard aperto basato sull’ RFC2440 (http://www.gnupg.org/rfc2440.html).
L’algoritmo di chiave pubblica raccomandato per lo sviluppo in Debian è il DSA (a volte chiamato “DSS” o “DH/ElGamal”). Comunque possonoessere usati altri tipi di chiavi. La tua
chiave deve essere lunga al meno1024 bit; non c’è motivo di usare una chiave più piccola e
farlo implicaun livello di sicurezza molto più basso. La tua chiave deve essere firmataalmeno
dai tuoi user ID; questo previene lo “user ID tampering”.gpg lo fa automaticamente.
Se la tua chiave pubblica non è su keyserver pubblici come pgp5.ai.mit.edu,leggi la
documentazione disponibile localmente in /usr/share/doc/pgp/keyserv.doc.Quel documento contiene istruzioni su come mettere la tua chiave suikeyserver pubblici. Il New
Maintainer Group metterà la tua chiave pubblicasui server se non c’è già.
Alcuni paesi limitano l’utilizzo di software crittografico ai propri cittadini.Questo non impedisce l’attività come manutentore di pacchetti Debian,visto che è perfettamente legale l’utilizzo di
prodotti crittografico perl’autenticazione, piuttosto che per la crittazione.Debian GNU/Linux
non richiede l’uso della crittografia quain alcun modo. Se vivi in un paese dove l’uso della crittografia è proibitoanche per scopi di autenticazione sei pregato di contattarci così chepossiamo
trovare special arrangements.
Per apply as a new maintainer, hai bisogno di un maintainer Debian cheverifichi la tua application (un advocate). Dopo che haicontribuito a Debian per un pò di tempo, e vuoi apply per
diventare unosviluppatore registrato, uno sviluppatore esistente con cui hai lavoratonei mesi
precedenti deve express their belief che puoi contribuire aDebian con successo.
Quando hai trovato un advocate, hai la tua chiave GnuPG firmata e haicontribuito a Debian
per un periodo, sei pronto ad apply.Puoi semplicemente registrarti sulla nostrapagina di application (http://nm.debian.org/newnm.php). Dopo che ti sei registrato, un advocatedeve
confermare la tua application. Quando il tuo advocate ha completatoquesto passo ti verrà assegnato un Application Manager che effettuerà conte i passi del New Maintainer process.Puoi
sempre controllare lo stato sull’applications status board (http://nm.debian.org/).
Per ulteriori dettagli, consulta L’angolodel nuovo manutentore (http://www.debian.org/
devel/join/newmaint) sul sito web Debian. Assicurati di avere familiaritàcoi passi necessari del the New Maintainer process prima di effettuareapplying. Se sei ben preparato, puoi
risparmiare molto tempo dopo.
2.3
Debian mentor e sponsor
La mailing list <[email protected]> è stata creata per novelli manutentorialla ricerca di aiuto sulla pacchettizzazione iniziale ed altri problemi dasviluppatore.
Ogni nuovo sviluppatore è invitato ad iscriversi a questa lista(vedi ‘Mailing list’ a pagina 11
per i dettagli).
Quelli che preferiscono aiuto uno-ad-uno (via email private) dovrebberoscrivere a questa lista
ed uno sviluppatore esperto potrebbe offrire ilsuo aiuto.
Capitolo 2. Applying per diventare un maintainer
6
Inoltre, se hai dei pacchetti pronti per l’inclusione in Debian, ma staiaspettando di finire la
tua new maintainer application potresti riuscire atrovare degli sponsor che effettuino l’upload dei pacchetti per te. Glisponsor sono persone che sono manutentori Debian ufficiali
e cheare willing to criticize ed effettuare l’upload dei pacchetti per te. Coloroi quali cerchino uno sponsor possono richiederne uno a http://www.internatif.org/bortzmeyer/
debian/sponsor/.
Se vuoi essere un mentor e/o uno sponsor, ulteriori informazioni sonodisponibili in
‘Interazione con futuri sviluppatori Debian’ a pagina 77.
7
Capitolo 3
Compiti dello sviluppatore Debian
3.1
Aggiornare le tue informazioni in Debian
Esiste un database LDAP contenente informazioni sugli sviluppatori Debianall’indirizzo
https://db.debian.org/. Qui dovresti inserire le tueinformazioni aggiornarle non appena cambiano. La cosa piu’ importante èdi assicurarsi che l’indirizzo dove la tua email
debian.org vieneinoltrata sia sempre aggiornato, così come l’indirizzo dove impostare latua
sottoscrizione a debian-private, se decidi di iscriverti.
Per ulteriori informazioni circa il database, visitare ‘Il database degli sviluppatori’ a pagina 16.
3.2
Mantenere la tua chiave privata
Sii molto accorto con le tue chiavi private. Non metterle in nessunserver pubblico o macchine
multi-utente, come ad esempio i serverDebian (leggi ‘Macchine Debian’ a pagina 14). Fai una
copia delle tuechiavi; tienine una copia offline. Leggi la documentazione fornitainsieme al
software, leggi le PGP FAQ (http://www.cam.ac.uk.pgp.net/pgpnet/pgp-faq/).
Se aggiungi firme alla tua chiave pubblica, o aggiungi altre identità,puoi aggiornare il server Debian mandando la chiave al server keyring.debian.org Se hai bisogno di aggiungere una chiavecompletamente nuova, o di rimuoverne una vecchia, manda una e-mail
a<[email protected]>. Si applicano le stesse procedure di estrazionechiavi
discusse in ‘Registrarsi come sviluppatore Debian’ a pagina 4.
Puoi trovare una discussione dettagliata sulla manutenzione dellechiavi Debian nella
documentazione del pacchetto debian-keyring.
3.3
Votare
Anche se Debian non è realmente una democrazia, noi usiamo un procedimentodemocratico
per eleggere i nostri leaders e per approvare risoluzionigenerali. Questi procedimenti sono
Capitolo 3. Compiti dello sviluppatore Debian
8
definiti dallaCostituzione Debian (http://www.debian.org/devel/constitution).
A parte l’elezione annuale del leader, le votazioni non sono sistematiche,e non sono svolte alla leggera. Ogni proposta e’ prima discussa sullamailing list <debian-vote@lists.
debian.org> e richiede svariate approvazioni primache il segretario del progetto dia l’inizio
alla procedura di voto.
Non sei obbligato a seguire le discussioni pre-voto, il segretarioannuncerà le votazioni diverse
volte su <[email protected]>(tutti gli sviluppatori dovrebbero essere iscritti a tale lista). Lademocrazia non funziona bene se le persone non prendono
parte al voto,è per questo che incoraggiamo tutti gli sviluppatori a votare. Il votoè condotto
attraverso messaggi e-mail criptati e firmati con GPG.
La lista di tuttte le proposte (passate e presenti) è disponibile sullapagina di Informazioni sulle votazioni Debian (http://www.debian.org/vote/),insieme alle informazioni su come
fare, sostenere e votare proposte.
3.4
Andare in vacanza
È comune per gli sviluppatori avere periodi di assenza, sia che sianovacanze pianificate o semplicemente essere oberati dal lavoro. La cosaimportante da capire è che gli altri sviluppatori
hanno bisogno disapere se sei in vacanza in modo che possano fare ciò che devono seaccade
un problema con i tuoi pacchetti o altri compiti nel progetto.
Solitamente ciò significa che altri sviluppatori sono autorizzati afare un NMU (vedi ‘NonMaintainer Upload (NMU)’ a pagina 55) del tuo pacchetto se un grossoproblema (bug releasecritical, aggiornamenti di sicurezza, ecc.)salta fuori mentre sei via. A volte non è niente di così
grave, ma ècomunque appropriato far sapere agli altri se sei indisponibile.
Per informare gli altri sviluppatori, ci sono due cose che dovresti fare.Per prima cosa manda una e-mail a <[email protected]> mettendo “[VAC] ”all’inizio
del subject del messaggio1 indicando il periodo in cui non sarai raggiungibile. Puoi anche
dareistruzioni speciali su cosa fare se succede un problema.
L’altra cosa da fare è quella di marcarti “in vacanza” nel database LDAP degli sviluppatori Debian (questainformazione è accessibile soltanto dagli sviluppatori Debian). Non dimenticarti
di togliere la flag “in vacanza” quando torni!
3.5
Cooperazione con gli sviluppatori upstream
Una grossa parte del tuo lavoro come mantainer Debian sarà di stare incontatto con gli sviluppatori upstream. Gli utenti Debian a voltesegnaleranno dei bug non specifici di Debian al nostro sistema ditracciamento dei bug. Devi inoltrare queste segnalazioni di bug aglisviluppatori
upstream in modo che possano essere risolti in un futurorilascio upstream.
1
Questo in modo che chi nonvolesse leggere tali messaggi possa filtrarli facilmente.
Capitolo 3. Compiti dello sviluppatore Debian
9
Anche se non è il tuo lavoro risolvere bug non specifici Debian, puoiliberamente farlo se ne
sei capace. Quando lo fai, assicurati di mandarela patch anche agli sviluppatori upstream.
Gli utenti e sviluppatoriDebian a volte manderanno delle patch che risolvono bug upstream
–dovresti valutare e nel caso mandare tali patch agli sviluppatori upstream.
Se devi modificare i sorgenti originali per far sì che il pacchettosia conforme ai requisiti della
politica Debian, dovresti proporre talimodifiche agli sviluppatori upstream in modo che quando rilascerannouna nuova versione, tu non dovrai modificarne i sorgenti. Qualunquemodifica
tu debba fare, cerca sempre di non separarti dai sorgentiupstream.
3.6
Gestire i bug release-critical
Generalmente dovresti gestire le segnalazioni di bug sui tuoi pacchetticome descritto nella
sezione ‘Gestire i bug’ a pagina 41. Nonostante ciò,esiste una speciale categoria di bug di cui
devi prenderti cura – icosiddetti release-critical bugs (RC bugs). Tutti le segnalazioni di bugcon
severità critica, grave o seria hanno unimpatto sulla possibilità che il pacchetto venga incluso
nel prossimorilascio stabile di Debian.Questi bug possono ritardare il rilascio e/o giustificarne
la rimozionedurante il periodo di “freeze”. Ecco perchè questi bug devono esserechiusi prima
possibile.
Gli sviluppatori che fanno parte del gruppo di Assicurazione Qualità (http://qa.debian.
org/) seguono tutti quei bug e tentano ad aiutarequando possibile. Se per qualche ragione
non riesci a risolvere un bug RCin un tuo pacchetto entro 2 settimane, dovresti o chiedere
aiuto mandandouna e-mail al gruppo di Assicurazione Qualità (QA) <debian-qa@lists.
debian.org>oppure spiegare le tue difficoltà e presentare un piano per risolverlemandando
una e-mail alla segnalazione del bug. Altrimenti, qualcuno delgruppo QA potrebbe avere
intenzione di effettuare un Non-Mantainer Upload(vedi ‘Non-Maintainer Upload (NMU)’ a
pagina 55) dopo aver provato a contattarti (potrebbero nonaspettare tanto quanto fanno di
solito prima di fare il loro NMU se nonvedono nessuna tua recente attività nel BTS).
3.7
Ritirarsi
Se scegli di abbandonare il progetto Debian, dovresti assicurarti dicompiere i seguenti
passaggi:
1 Abbandonare tutti i tuoi pacchetti, come descritto in ‘Abbandonare un pacchetto’ a
pagina 50.
2 Mandare una e-mail spiegando perchè lasci il progetto a <debian-private@lists.
debian.org>.
3 Fare sapere a chi mantiene le chiavi Debian (<[email protected]>)che
lasciil progetto.
Capitolo 3. Compiti dello sviluppatore Debian
10
11
Capitolo 4
Risorse per gli sviluppatori Debian
In questo capitolo troverai una road map molto concisa delle mailinglist Debian, le macchine
Debian che potrebbero essere disponibili perte come sviluppatore e tutte le altre risorse che
sono disponibiliper aiutarti nel tuo lavoro di mantainer.
4.1
Mailing list
Gran parte delle conversazioni tra sviluppatori (e utenti) Debian sonogestite attraverso un
grande numero di mailing list che ospitiamo all’indirizzolists.debian.org (http://
lists.debian.org/).Per ulteriori informazioni su come sottoscriversi o togliersi, come
postaree come non postare, dove trovare i vecchi post e come cercarli, comecontattare i
mantainer delle liste e vedere varie altre informazioni circa lemailing list, per favore vedi
http://www.debian.org/MailingLists/.Questa sezione coprirà solo gli aspetti delle
mailing list che sono diparticolare interesse per gli sviluppatori.
4.1.1
Regole di base
Quando rispondi ai messaggi sulla mailing list, per favore non mandareuna copia carbone
(CC) al mittente originario a meno che nonlo richiedano esplicitamente. Chiunque mandi un
messaggio a una mailinglist dovrebbe leggerla per vedere le risposte.
Il cross-posting (mandare lo stesso messaggio a più liste) è sconsigliato.Come sulla rete, per
favore minimizza il quoting degli articoli a cuistai rispondendo. In generale, per favore rispetta
le convenzioniusuali per mandare messaggi.
Per favore leggi il codice di condotta (http://www.debian.org/MailingLists/
#codeofconduct) per ulteriori informazioni.
4.1.2
Principali mailing list di sviluppo
Le mailing list Debian di base che gli sviluppatori dovrebbero usare sono:
Capitolo 4. Risorse per gli sviluppatori Debian
12
• <[email protected]>, usata per annunciare cose importanti agli sviluppatori. Ci si aspetta che tutti gli sviluppatori siano iscritti a questa
lista.
• <[email protected]>, usata per discussioni tecniche riguardanti lo
sviluppo.
• <[email protected]>, dove la policy Debian viene discussa e
votata.
• <[email protected]>, usate per discutere questioni non tecniche
riguardanti il progetto.
Sono disponibili altre mailing list per una varietà di argomenti speciali,vedi http://lists.
debian.org/ per una lista.
4.1.3
Liste speciali
<[email protected]> è una mailing list speciale per discussioni privatetra gli sviluppatori Debian. È intesa per essere usata per post che perqualunque ragione
non dovrebbero essere apertamente pubblicati. Per questo,è una lista a basso traffico, e gli
utenti sono pregati di non usare<[email protected]> a meno che non
sia assolutamente necessario.Inoltre, non inoltrare email da questa lista a nessuno. Gliarchivi
di questa lista non sono disponibili sul web per ovvie ragioni,ma puoi consultarli usando il
tuo account di shell su lists.debian.orge guardando nella directory ~debian/archive
/debian-private.
<[email protected]> è una mailing list speciale usata per conservare lacorrispondenza legata a Debian, come quando si contattano gli autoriupstream circa licenze, bug, ecc. o si discute il progetto con altre personedove potrebbe essere utile avere la
discussione archiviata da qualche parte.
4.1.4
Richiedere nuove liste relative allo sviluppo.
Prima di richiedere una mailing list correlata allo sviluppo di un pacchetto(o un piccolo gruppo
di pacchetti tra loro correlati), per favore considerase sia più appropriato usare un alias (via un
file .forward-aliasname sumaster.debian.org, che si traduce in un ragionevole [email protected]) o una mailing list autogestita suAlioth.
Se decidi che una mailing list regolare su lists.debian.org è realmente quelloche vuoi, vai avanti
e compila una richiesta, seguendo l’HOWTO (http://www.debian.org/MailingLists/
HOWTO_start_list).
Capitolo 4. Risorse per gli sviluppatori Debian
4.2
13
Canali IRC
Diversi canali IRC sono dedicati allo sviluppo di Debian. Sono principalmenteospitati sulla rete freenode (http://www.freenode.net/)(precedentemente nota come Open Projects
Network). La voce di DNSirc.debian.orgè un alias di irc.freenode.net.
Il canale principale per Debian in generale è #debian. Questo èun grosso canale “generalpurpose” dove gli utenti possono trovare notizierecenti nel topic e servite dai bot. #debian è
per gli utentiche parlano inglese; ci sono anche #debian.de, #debian-fr,#debian-br e altri canali
chiamati in modo simile per gli utentiche parlano altre lingue.
Il canale principale per lo sviluppo di Debian è #debian-devel.È un canale molto attivo in quanto
di solito ci sono sempre oltre 150persone loggate. È un canale per persone che lavorano su
Debian, non èun canale di supporto (esiste #debian per quello).È comunque aperto a chiunque
voglia leggere (e imparare). Il suotopic è comunemente pieno di informazioni interessanti per
glisviluppatori.
Siccome #debian-devel è un canale aperto, non dovresti parlarequi di questioni che sono discusse in <[email protected]>.Esiste un altro canale per questo scopo,
è chiamato #debian-privateed è protetto da una chiave. La chiave è disponibile negli archivi didebian-private in master.debian.org:~debian/archive/debian-private/,usa
sempilcemente zgrep cercando #debian-private intutti i file.
Ci sono altri canali addizionali dedicati ad argomenti specifici.#debian-bugs è usato per
coordinare i bug squash party.#debian-boot è usato per coordinare il lavoro sui floppydi
boot (ovvero l’installer). #debian-doc è usato occasionalmenteper parlare circa la documentazione, come il documento che stai leggendo.Altri canali sono dedicati a un’architettura o un set di pacchetti:#debian-bsd, #debian-kde, #debian-jr,#debian-edu, #debian-sf (pacchetto
SourceForge),#debian-oo (pacchetto OpenOffice) . . .
Esistono anche qualche canale di sviluppatori non in Inglese, peresempio #debian-devel-fr per
le persone che parlano Franceseinteressate allo sviluppo di Debian.
Esistono canali dedicati a Debian anche su altri network IRC, in particolaresul network IRC
Open and free technology community (OFTC) (http://www.oftc.net/).
4.3
Documentazione
Questo documento contiene molte informazioni molto utili agli sviluppatoriDebian, ma non
può contenere tutto. Per la maggior parte degli altri documentiinteressanti è presente il link
dall’Angolo degli sviluppatori (http://www.debian.org/devel/). Prenditi il tempo di
consultare tuttii collegamenti, imparerai molte più cose.
Capitolo 4. Risorse per gli sviluppatori Debian
4.4
14
Macchine Debian
Debian possiede diversi computer che fungono da server, la maggiorparte dei quali hanno
funzioni critiche nel pregetto Debian. La maggiorparte delle macchine sono usate per attività
di porting, e hanno tutteuna connessione permanente a Internet.
La maggior parte delle macchine sono disponibili per essere usatedagli sviluppatori, finchè
si attengano alle regole imposte nellaPolicy di utilizzo delle macchine Debian (http://www.
debian.org/devel/dmup).
In generale, puoi usare queste macchine a tua discrezione per scopicorrelati a Debian. Per favore sii cortese con gli amministratori disistema, e non usare tonnellate di spazio disco, banda o
CPU senzaaver ottenuto prima l’approvazione degli amministratori di sistema.Di solito queste
macchine sono gestite da volontari.
PEr favore fai attenzione a proteggere le tue password Debian e le chiaviSSH installate su
macchine Debian. Evita metodi di login o di upload chemandano le password su Internet in
chiaro, come telnet, FTP, POP ecc.
Per favore non mettere nessun materiale non correlato a Debian sui serverDebian, a meno che
tu non ne abbia il permesso.
La lista aggiornata delle macchine Debian è disponibile all’indirizzohttp://db.debian.
org/machines.cgi. Quella pagina web contiene i nomi dellemacchine, informazioni sui
contatti, informazioni su chi può entrarci,le chiavi SSH ecc.
Se hai un problema con il funzionamento di un server Debian, e pensiche gli operatori di sistema debbano esserne informati, il team degliamministratori di sistema Debian è raggiungibile
a <[email protected]>.
Se hai un problema con un certo servizio non correlato all’amministrazionedi sistema (come
pacchetti da rimuovere dall’archivio, suggerimenti peril sito web, ecc.), generalmente riporterai un bug su uno“pseudo-pacchetto”. Vedi ‘Riportare bug’ a pagina 73 per informazioni su
comeriportare i bug.
4.4.1
Il server bugs
bugs.debian.org è la locazione canonica del sistema di tracciamentodei bug (BTS). Se stai
pianificando di fare qualche analisi statisticao di processare i bug Debian, questo sarebbe il posto per farlo.Per favore esplica le tue intenzioni su <[email protected]>
primadi implementare qualsiasi cosa, comunque, per non duplicare inutilmentegli sforzi o
sprecare del tempo.
Tutti gli sviluppatori Debian hanno un account su bugs.debian.org.
Capitolo 4. Risorse per gli sviluppatori Debian
4.4.2
15
Il server ftp-master
Il server ftp-master.debian.org mantiene la canonica copiadell’archivio Debian (a parte i pacchetti non-US). Generalmente,gli upload di pacchetti vanno su questo server; vedi
‘Effetuare un upload’ a pagina 37.
I problemi con l’archivio FTP Debian devono generalmente essere riportaticome bug sullo pseudo-pacchetto ftp.debian.org o un’emaila <[email protected]>, ma vedi
anche le procedure in ‘Spostare, rimuovere, rinominare, adottare e abbandonare pacchetti’ a
pagina 49.
4.4.3
Il server non-US
Il server non-US, non-us.debian.org, mantiene la canonica copiadella parte non-US dell’archivio Debian. Se devi effettuare l’upload diun pacchetto in una delle sezioni non-US, fallo
su questo server; vedi‘Inviare un upload a non-US’ a pagina 38.
I problemi con l’archivio dei pacchetti non-US generalmente dovrebberoessere riportati come
bug sullo pseudo-pacchettononus.debian.org (nota la mancanza del trattino tra“non” e
“us” nel nome dello pseudo-pacchetto — questo percompatibilità all’indietro). Ricorda di controllare se qualcun’altro abbiao meno già riportato il problema sul sistema di tracciamento dei
bug (http://bugs.debian.org/nonus.debian.org).
4.4.4
Il server www-master
Il server web principale è www-master.debian.org.Tiene le pagine web ufficiali, la facciata
di Debian per moltinewbie.
Se scovi un problema nel server web Debian, generalmente dovresti riportareun bug contro lo
pseudo-pacchetto www.debian.org.Ricorda di controllare se qualcun’altro abbia o meno già
riportato ilproblema sul sistema di tracciamento dei bug (http://bugs.debian.org/www.
debian.org).
4.4.5
Il server web people
people.debian.org è il server usato per le pagine webpersonali degli sviluppatori su
qualunque cosa correlata a Debian.
Se hai delle informazioni su Debian che vuoi mettere a disposizionesul web,
puoi farlo mettendo il materiale nella directorypublic_html sotto la tua home directory supeople.debian.org,
che sarà quindi disponibileall’indirizzo
http://people.debian.org/~your-user-id/.
Dovresti usare questa particolare locazione solo perchè ne verranno fattedelle copie di backup,
mentre in altri host no.
Capitolo 4. Risorse per gli sviluppatori Debian
16
Di solito l’unica ragione per cui potresti voler usare un host diverso èquando hai bisogno di pubblicare materiale soggetto alle restrizioni diesportazione degli U.S.A., in
qual caso puoi usare uno degli altri serversituati fuori dagli Stati Uniti, come il già
menzionatonon-us.debian.org.
Se hai qualche domanda manda un’email a <[email protected]>.
4.4.6
Il server CVS
Il nostro server CVS è situato su cvs.debian.org.
Se hai bisogno di usare un server CVS che sia pubblicamente accessibile,per esempio, per
aiutarti a coordinare il lavoro su un pacchetto tramolti sviluppatori diversi, puoi richiedere
un’area CVS sul server.
Generalmente, cvs.debian.org offre una combinazione di accessoCVS locale, accesso
client-server anonimo a sola lettura e pieno accessoclient-server attraverso ssh. Inoltre, si
può accedereall’area CVS in sola lettura via web all’indirizzo http://cvs.debian.org/.
Per richiedere un’area CVS, manda una richiesta via email a<[email protected]>.
Includi nella richiesta il nome dell’areaCVS richiesta, l’account Debian che dovrebbe detenere
la root dell’areaCVS e perchè ne hai bisogno.
4.5
Il database degli sviluppatori
Il database degli sviluppatori, all’indirizzo https://db.debian.org/,è una directory
LDAP per gestire gli attributi degli sviluppatoriDebian. Puoi usare questa risorsa per cercare la lista deglisviluppatori Debian. Una parte di queste informazioni è accessibileattraverso
il servizio finger sui server Debian, provafinger [email protected] per vedere
che cosa riporta.
Gli sviluppatori possono effettuare il login nel database (https://db.debian.org/login.
html) per cambiare diverse informazioni su diloro, come:
• indirizzo di inoltro per la tua email debian.org
• iscrizione a debian-private
• se sei assente
• informazioni personali come il tuo indirizzo, nazione, latitudine e longitudine del posto
dove vivi per usarli nella mappa mondiale degli sviluppatori Debian (http://www.
debian.org/devel/developers.loc), numero di telefono e di fax, nickname IRC e
pagina web.
• password e shell preferita sulle macchine del progetto Debian
Capitolo 4. Risorse per gli sviluppatori Debian
17
Naturalmente, la maggior parte delle informazioni non sono accessibili alpubblico. Per ulteriori informazioni per favore leggi la documentazioneonline che puoi trovare all’indirizzo
http://db.debian.org/doc-general.html.
Uno può anche inviare le sue chiavi SSH perchè siano usate perl’autenticazione sulle macchine
ufficiali Debian, e persino aggiungerenuove voci DNS *.debian.net. Queste funzionalità sono
documentateall’indirizzo http://db.debian.org/doc-mail.html.
4.6
L’archivio Debian
La distribuzione Debian GNU/Linux contiene un grande numero di pacchetti(.deb, correntemente sono circa 9000) e pochialtri file aggiuntivi (come la documentazione e le immagini dei
dischidi installazione).
Ecco un albero di directory di esempio di un archivio Debian completo:
dists/stable/main/
dists/stable/main/binary-i386/
dists/stable/main/binary-m68k/
dists/stable/main/binary-alpha/
...
dists/stable/main/source/
...
dists/stable/main/disks-i386/
dists/stable/main/disks-m68k/
dists/stable/main/disks-alpha/
...
dists/stable/contrib/
dists/stable/contrib/binary-i386/
dists/stable/contrib/binary-m68k/
dists/stable/contrib/binary-alpha/
...
dists/stable/contrib/source/
dists/stable/non-free/
dists/stable/non-free/binary-i386/
dists/stable/non-free/binary-m68k/
dists/stable/non-free/binary-alpha/
...
dists/stable/non-free/source/
dists/testing/
dists/testing/main/
...
Capitolo 4. Risorse per gli sviluppatori Debian
18
dists/testing/contrib/
...
dists/testing/non-free/
...
dists/unstable
dists/unstable/main/
...
dists/unstable/contrib/
...
dists/unstable/non-free/
...
pool/
pool/main/a/
pool/main/a/apt/
...
pool/main/b/
pool/main/b/bash/
...
pool/main/liba/
pool/main/liba/libalias-perl/
...
pool/main/m/
pool/main/m/mailx/
...
pool/non-free/n/
pool/non-free/n/netscape/
...
Come puoi vedere, la directory di più alto livello contiene duedirectory,dists/ e pool/. L’ultima èuna “pool” nella quale i pacchetti ci sono veramente,e che è gestita dal database di manutenzione dell’archivio e irelativi programmi. La prima contiene le distribuzioni, stable,testing
e unstable. I file Packages eSources nelle sottodirectory delle distribuzioni possonoreferenziare file nella directory pool/. L’albero delledirectory sotto ognuna delle distribuzioni
è arrangiato in manieraidentica agli altri. Ciò che sotto descriviamo per stableè ugualmente
applicabile alle distribuzioni unstable etesting.
dists/stable contiene tre directory, chiamate main,contrib e non-free.
In ciascuna di queste aree c’è una directory per i pacchetti sorgente(source) e una directory
per ogni architettura supportata(binary-i386, binary-m68k, ecc.).
L’area main contiene delle directory addizionali chetengono le immagini disco e frammenti
essenziali di documentazionerichiesti per installare la distribuzione Debian suuna specifica
architettura (disks-i386,disks-m68k, ecc.).
Capitolo 4. Risorse per gli sviluppatori Debian
4.6.1
19
Sezioni
La sezione main dell’archivio Debian è quella che formala ditribuzione Debian GNU/Linux
ufficiale. Lasezione main è ufficiale perchè è pienamente conformea tutte le linee guida.
Le altre sezioni no, con gradualità diverse;perciò non fanno ufficialmente parte di Debian
GNU/Linux.
Ogni pacchetto nella sezione main deve essere pienamente conformealle Linee guida Debian sul software libero (http://www.debian.org/social_contract#
guidelines)(DFSG)e a tutti gli altri requisiti della policy come descritto nellaPolicy
Debian (http://www.debian.org/doc/debian-policy/). Le DFSG sono lanostra
definizione di “software libero.” controlla lapolicy Debian per i dettagli.
I pacchetti nella sezione contrib devono conformarsi alleDFSG, ma possono non soddisfare altri
requisiti. Per esempio,possono dipendere da pacchetti non-free.
I pacchetti che non sono conformi alla DFSG sono posti nellasezione non-free. Questi pacchetti
non sono consideratiparte della distribuzione Debian, anche se diamo supporto perl’utilizzo
e forniamo infrastrutture (come il nostro sistema ditracciamento dei bug e mailing list) per i
pacchetti di softwarenon-free.
La Policy Debian (http://www.debian.org/doc/debian-policy/) contieneuna definizione più esatta delle tre sezioni. La discussionesoprastante è solo un’introduzione.
La separazione delle tre sezioni al livello più alto dell’archivioè importante per chiunque abbia
intenzione di distribuire Debian,sia attraverso server FTP su internet sia su CD-ROM: distribuendosolo le sezioni main e contrib, uno può evitarequalunque rischio di tipo legale. Alcuni
pacchetti nella sezionenon-free non ammettono per esempio la distibuzionecommerciale.
D’altra parte, un commerciante di CD-ROM potrebbe facilmente controllare le licenze di ogni
singolo pacchettoin non-free e includere tutti quelli che può nel CD-ROM.(Siccome questo
varia enormemente da un commerciante all’altro, questolavoro non può essere svolto dagli
sviluppatori Debian.)
Nota anche che il termine “sezione” è usato anche per riferirsi allecategorie che simplificano l’organizzazione e la consultazione deipacchetti disponibili, p. es. admin, net, utilsecc.
Una volta queste sezioni (più che altro sottosezioni) esistevanonella forma di sottodirectory
nell’archivio Debian. Oggi queste esistonosolo nel campo “Section” degli header dei pacchetti.
4.6.2
Architetture
Nei primi tempi, il kernel Linux era disponibile solo per le piattaformeIntel i386 (o maggiori),
e così anche Debian. Ma quando Linux divennesempre più popolare, il kernel fu portato anche
su altre architetture.
Il kernel Linux 2.0 supporta Intel x86, DEC Alpha, SPARC, Motorola680x0 (come Atari, Amiga
e i Macintosh), MIPS, e PowerPC. Il kernelLinux 2.2 supporta ancora più architetture, incluse
ARM e UltraSPARC.Siccome Linux supporta quelle piattaforme, Debian decise che anch’essaavrebbe dovuto farlo. Quindi, Debian sta sviluppando dei porting; ineffetti, abbiamo anche
Capitolo 4. Risorse per gli sviluppatori Debian
20
in preparazione port per kernel non Linux.A parte i386 (il nostro nome per Intel x86), ci sono
m68k,alpha, powerpc, sparc, hurd-i386,arm, ia64, hppa, s390, mips,mipsel e sh al tempo di questo
documento.
Debian GNU/Linux 1.3 è disponibile solo per i386. Debian 2.0uscì per architetture i386 e m68k.
Debian 2.1supporta architetture i386, m68k, alpha,e sparc. Debian 2.2 aggiunse il supporto per
architetturepowerpc e arm. Debian 3.0 aggiunge il supporto acinque nuove architetture: ia64,
hppa, s390,mips and mipsel.
Informazioni per sviluppatori e utenti circa specifici port sonodisponibili nelle pagine web dei
portDebian (http://www.debian.org/ports/).
4.6.3
Pacchetti
Ci sono due tipi di pacchetti Debian, nominalmente pacchettisorgenti e binari.
I pacchetti sorgenti consistono di due o tre file: un file.dsce o un file .tar.gz o sia
un.orig.tar.gz che un file .diff.gz.
Se un pacchetto è sviluppato specialmente per Debian e non è distribuitoal di fuori di Debian,
c’è solo un file .tar.gz checontiene i sorgenti del programma. Se un pacchetto è distribuitoanche altrove, il file .orig.tar.gz contiene il cosiddetto codice sorgente upstream, che è il
codicesorgente che è distribuito dal mantainer upstream(spesso l’autore del software). In questo
caso, il.diff.gz contiene le modifiche effettuate dalmantainer Debian.
Il file .dsc elenca tutti i file nel pacchettosorgente insieme ai checksum (md5sums) e
qualcheinformazione addizionale sul pacchetto (mantainer, versione, ecc.).
4.6.4
Distribuzioni
Il sistema di directory descritto nel capitolo precedente è a suavolta contenuto nelle directory
delle distribuzioni.Ogni distribuzione è in realtà contenuta nella directorypool al livello più alto
dello stesso archivio Debian.
Per riepilogare, l’archivio Debian ha una directory di root in unserver FTP. Per esempio, nel
sito mirrorftp.us.debian.org, l’archivio Debian stesso ècontenuto in /debian, che è una
locazione comune(un altra è /pub/debian).
Una distribuzione comprende pacchetti Debian sorgenti e binarie i rispettivi file indice
Sources e Packages,contenenti le informazioni degli header da tutti quei pacchetti.I primi
sono contenuti nella directory pool/, mentrei secondi sono contenuti nella directory dists
/dell’archivio (per compatibilità all’indietro).
Stable, testing e unstable
Ci sono sempre distribuzioni chiamate stable (residente indists/stable), una chianata testing (residente indists/testing) e una chiamata unstable (residente indists/unstable).
Questo riflette il processo di sviluppo delprogetto Debian.
Capitolo 4. Risorse per gli sviluppatori Debian
21
Lo sviluppo attivo viene fatto nella distrubuzione unstable(ecco perchè questa distribuzione viene a volte chiamata ladistribuzione di sviluppo). Ogni sviluppatore Debian puòaggiornare i suoi pacchetti in questa distribuzione in qualsiasi momento.Di conseguenza, i contenuti di questa distribuzione cambiano giornalmente.Siccome non viene fatto alcuno sforzo speciale per assicurarsi che tuttofunzioni propriamente in questa distribuzione, a volte è
letteralmenteinstabile.
“testing” è generata automaticamente prendendoi pacchetti da unstable se questi soddisfano
certi criteri. Questicriteri dovrebbero assicurare una buona qualità per i pacchetti intesting.
L’aggiornamento a testing è lanciato ogni giorno dopo chei nuovi pacchetti vengano installati.
Vedi ‘Ulteriori informazioni sulla distribuzione testing’ in questa pagina.
Dopo un periodo di sviluppo, una volta che il release manager lo ritieneopportuno, la distribuzione testing viene “congelata”, il chesignifica che le regole che controllano come i pacchetti
sono spostatida unstable a testing vengono ristrette. I pacchettitroppo bacati sono rimossi. Nessun cambiamento è ammesso intesting a eccezione dei fix dei bug. Dopo che è passato un po’di
tempo, dipendentemente dai progressi, la distribuzione testingva in uno stato di ‘deep freeze’,
durante il quale non viene fatta alcunamodifica su di essa a eccezione di quelle necessarie per il
sistema diinstallazione. Questo è chiamato un “ciclo di test”,e può durare fino a due settimane.
Ci possono essere diversi ciclidi test, finchè la distribuzione è pronta per il rilascio, comedeciso
dal release manager. Alla fine dell’ultimo ciclo di test,la distribuzione testing è rinominata stable,rimpiazzando la vecchia distribuzione stable, che a quelpunto viene rimossa (anche se può
essere sempre trovata all’indirizzoarchive.debian.org).
Questo ciclo di sviluppo è basato sulla supposizione che la distribuzioneunstable diventa stable
dopo che è passata un periodo ditempo in testing. Persino una volta che una distribuzione
vieneconsiderata stabile, inevitabilmente rimangono ancora dei bug —ecco perchè la distribuzione stable viene ogni tanto aggiornata. Comunque,questi aggiornamenti sono controllati molto attentamente e devono essereintrodotti nell’archivio individualmente, per ridurre
il rischio di introdurrenuovi bug. Puoi trovare le aggiunte proposte per stable nelladirectory
proposed-updates. Questi pacchetti inproposed-updates che passano l’ispezione sono
periodicamentespostati in blocco nella distribuzionestable e il suo livello di revisione viene
incrementato (p.es.,‘3.0’ diventa ‘3.0r1’, ‘2.2r4’diventa ‘2.2r5’, e così via).
Nota che lo sviluppo sotto unstable continua anche duranteil periodo di “freeze”, siccome la
distribuzione unstablerimane al suo posto in parallelo con testing.
Ulteriori informazioni sulla distribuzione testing
Gli script che aggiornano la distribuzione testing vengonolanciati ogni giorno dopo l’installazione dei pacchetti aggiornati.Generano i file Packages per la distribuzione testing,ma lo
fanno in modo intelligente cercando di evitare qualsiasi inconsistenzae cercando di usare solo
pacchetti non bacati.
L’inclusione di un paccchetto da unstable è soggetta alle seguenticondizioni:
• Il pacchetto deve essere stato disponibile in unstable per diversigiorni; il numero preciso
dipende dal campo “urgency” dell’upload. È 10 giorniper urgenza bassa, 5 giorni per
Capitolo 4. Risorse per gli sviluppatori Debian
22
urgenza media e 2 giorni per urgenza elevata.Questi periodi possono essere raddoppiati
durante un freeze.
• Deve avere meno bug release-critical rispetto alla versione disponibile intesting;
• Deve essere disponibile per tutte le architetture per cui è statoprecedentemente fatto il build. ‘L’utility madison’ a pagina 26 può essere interessanteper controllare
quell’informazione.
• Non deve infrangere alcuna dipendenza di un pacchetto che è già disponibilein testing;
• I pacchetti sui quali dipende devono o essere disponibili in testingo essere accettati in
testing contemporaneamente (e lo saranno serispettano tutti i criteri necessari);
Per scoprire se un pacchetto stia o meno progredendo in testing vedil’output dello script
di testing sulla pagina web delladistribuzione testing (http://www.debian.org/devel/
testing), oppure usa ilprogramma grep-excuses che è nel pacchettodevscripts. Questa utility può essere facilmenteusata in un crontab(5) per tenere le personeinformate sul
progresso dei loro pacchetti in testing.
Il file update_excuses non fornisce sempre la ragione precisaper la quale il pacchetto è stato rifiutato, uno può dovere trovarlaper proprio conto cercando cosa potrebbe impedire l’inclusione del pacchetto.La pagina web testing (http://www.debian.org/devel/testing)
forniscequalche altra informazione circa i problemi comuni che possono causareguai simili.
A volte qualche pacchetto non entra mai in testing perchèl’insieme delle inter-dipendenze è
troppo complicato e non puòessere risolto dagli script. In quel caso si deve contattare ilrelease
manager che forzerà l’inclusione dei pacchetti.
In generale, per favore riferisciti alla pagina web testing (http://www.debian.org/
devel/testing) per ulteriori informazioni. Include ancherisposte a qualcuna delle domande
poste più di frequente.
Experimental
La distribuzione experimental è una distribuzione speciale.Non è una distribuzione completa
nello senso in cui lo sono ‘stable’e ‘unstable’. È invece intesa ad essere un area di stasi temporaneaper software altamente sperimentale dove c’è una buona possibilitàche il software possa
infrangere il tuo sistema, o software che èsemplicemente troppo instabile persino per la distribuzioneunstable (ma nonostante ciò esiste una ragione perfarne un pacchetto). Gli utenti che
scaricano e installano pacchettida experimental ci si aspetta che siano stati debitamenteavvisati.
In breve, dalla distribuzione experimental nonci si può aspettare nulla.
Queste sono le linee di sources.list(5) perexperimental:
deb http://ftp.xy.debian.org/debian/ ../project/experimental
maindeb-src http://ftp.xy.debian.org/debian/ ../project/experimental main
Capitolo 4. Risorse per gli sviluppatori Debian
23
Se esiste una possibilità che il software possa fare gravi danni a unsistema, è altamente probabile che sia meglio metterlo in experimental.Per esempio, un file system compresso sperimentale
dovrebbe probabilmenteandare in experimental.
Ogni volta che c’è una nuova versione upstream di un pacchetto che introducenuove features ma ne infrange un gran numero di vecchie, o non si dovrebbefarne l’upload o si dovrebbe farlo in experimental.Una nuova versione beta di qualche software che usa una configurazionecompletamente differenrte può andare in experimental, adiscrezione del mantainer. Se
stai lavorando su una situazione in cuil’aggiornamento è incompatibile o complesso puoi anche usareexperimental come un’area di stasi, in modo che i testerpossano ottenerne un accesso
rapido.
Qualche software sperimentale può lo stesso andare in unstable,con qualche avviso nella descrizione, ma non è raccomandato in quanto ipacchetti da unstable ci si aspetta che si propaghino
intesting e quindi in stable. Non dovresti temere diusare experimental siccome non causa alcun
dolore agliftpmaster, i pacchetti in experimental vengono rimossi automaticamenteuna volta
che effettui l’upload del pacchetto in unstablecon un numero di versione più alto.
Nuovi software che probabilmente non danneggeranno il tuo sistema possonoandare
direttamente in unstable.
Un alternativa a experimental è di usare il tuo spazio webpersonale su people.debian.org.
4.6.5
Nomi in codice delle release
Ogni release di una distribuzione Debian ha un nome in codice:Debian 1.1 è chiamata ‘buzz’;
Debian 1.2, ‘rex’; Debian 1.3, ‘bo’;Debian 2.0, ‘hamm’; Debian 2.1, ‘slink’; Debian 2.2, ‘potato’;e
Debian 3.0, ‘woody’. C’è anche una “pseudo-distribuzione”, chiamata‘sid’, che è la corrente
distribuzione ‘unstable’; siccome i pacchettivengono spostati da ‘unstable’ a ‘testing’ come si
avvicinano a unacondizione di stabilità, ‘sid’ stessa non viene mai rilasciata.Così come i soliti
contenuti di una distibuzione Debian, ‘sid’ contienepacchetti per architetture che non sono
ancora ufficialmente supportate orilasciate da Debian. Queste architetture sono pianificate a
essereintegrate nella distribuzione principale in qualche data futura.
Siccome Debian ha un modello di sviluppo aperto (ovvero chiunque puòpartecipare e seguire
lo sviluppo) anche le distribuzioni ‘unstable’e ‘testing’ sono distribuite su internet attraverso la rete di serverFTP e HTTP Debian. Quindi, se avessimo chiamato ‘testing’ la directoryche contiene la versione candidata alla release, avremmo dovutorinominarla ‘stable’ quando
la versione fosse stata rilasciata, laqual cosa avrebbe forzato tutti i mirror FTP a riscaricarsi
l’interadistribuzione (che è abbastanza grossa).
D’altro canto, se avessimo chiamato sin dall’inizio le directory delledistribuzioni Debian-x.y, La
gente penserebbe che la releaseDebian x.y è disponibile. (Ciò è successo in passato, unvenditore di CD-ROM costruì un cdrom Debian 1.0 basato su una versionedi sviluppo pre-1.0. Questa
è la ragione per cui la prima releaseufficiale Debian fu la 1.1 e non la 1.0.)
Quindi, i nomi delle directory delle distribuzioni nell’archiviosono determinate dai loro nomi in codice e non dal loro stato direlease (p.es. ‘slink’). Questi nomi rimangono sempre gli
Capitolo 4. Risorse per gli sviluppatori Debian
24
stessidurante il periodo di sviluppo e dopo il rilascio; linksimbolici, che possono essere facilmente cambiati, indicano larelease corrente della distribuzione stabile. Ecco perchéle directory
reali delle distribuzioni usano i nomi incodice, mentre link simbolici per stable,testing, e unstable
puntano alle directoryappropriate delle distribuzioni.
4.7
Mirror Debian
I vari archivi per i download e il sito web hanno diversi mirrordisponibili in modo da non
sottoporre i nostri server a carichidi lavoro troppo pesanti. In effetti, alcuni nostri server nonsono pubblici — al loro posto, una prima serie di mirrorsi bilanciano il carico. In questo modo
gli utenti accedono sempreai mirror e si abituano ad usarli, la qual cosa permette a Debiandi
distribuire meglio i propri requisiti di banda su diversiserver e network, e di base fa in modo
che gli utenti evitino diaccanirsi su una locazione primaria. Nota che la prima serie dimirror è
sempre aggiornata in quanto si aggiornano al comandodei siti interni (chiamiamo questa cosa
“push mirroring”).
Tutte le informazioni sui mirror Debian, inclusa una lista dei serverFTP/HTTP pubblici disponibili, possono essere trovate all’indirizzohttp://www.debian.org/mirror/. Questa utile
pagina include ancheinformazioni e strumenti che possono esserti d’aiuto se sei interessatoa
impostare un mirror tuo, sia per uso interno o di pubblico accesso.
Nota che i mirror sono generalmente gestiti da terze parti che sonointeressate ad aiutare
Debian, perciò gli sviluppatori generalmentenon hanno un account su quelle macchine.
4.8
Il sistema incoming
Il sistema incoming è responsabile di collezionare pacchetti aggiornatie installarli nell’archivio Debian. Consiste in un insieme di directorye script che sono installati sia su
ftp-master.debian.org sia sunon-us.debian.org.
I pacchetti vengono inviati in upload da tutti i mantainer in unadirectory chiamata
unchecked. Questa directory vienescandita ogni 15 minuti dallo script katie, cheverifica
l’integrità dei pacchetti inviati in upload e le lorofirme crittografiche. Se il pacchetto viene considerato prontoper essere installato, è spostato nella directory accepted.Se questo è il primo
upload del pacchetto, esso viene spostato nelladirectory new, dove aspetta l’approvazione dei
ftpmaster.Se il pacchetto contiene file che devono essere installati a mano vienespostato nella
directory byhand, dove aspetta l’installazionemanuale da parte dei ftpmaster. Altrimenti, se
viene scovato un qualsiasierrore, il pacchetto viene rifiutato e spostato nella directoryreject.
Una volta che il pacchetto viene accettato il sistema manda una mail diconferma al mantainer, chiude tutti i bug marcati come risoltidall’upload e gli auto-builder possono cominciare
a ricompilarlo. Il pacchettoè ora pubblicamente accessibile all’indirizzo http://incoming.
debian.org/ (nonesiste nessun URL del genere per i pacchetti nell’archivio non-US) finchènon viene realmente installato nell’archivio Debian. Questo accade solouna volta al giorno,
Capitolo 4. Risorse per gli sviluppatori Debian
25
il pacchetto viene poi rimosso da incoming e installatonella pool con tutti gli altri pacchetti. Una volta che tutti gli altriaggiornamenti (per esempio la generazione dei nuovi file indicePackages e Sources) vengono completati, vieneinvocato uno script speciale per chiedere
a tutti i mirror primari diaggiornarsi.
Il software di manutenzione dell’archivio manderà inoltre i file.changes firmati con OpenPGP/GnuPG che hai inviato inupload alle mailing list appropriate. Se un pacchetto viene rilasciato conDistribution: impostato a ‘stable’, l’annuncio è inviato a<debian-changes@
lists.debian.org>. Invece, se il pacchetto viene rilasciato conDistribution: impostato a ‘unstable’ oppure ‘experimental’,l’annuncio verrà inviato a <debian-devel-changes@
lists.debian.org>.
Tutti gli sviluppatori Debian hanno accesso in scrittura alla directoryunchecked in modo da
inviare in upload i loro pacchetti,hanno anche tale accesso alla directory reject in mododa rimuovere i loro upload non validi o per spostare qualche file dinuovo nella directory
unchecked. Ma tutte le altre directorysono scrivibili solo dagli ftpmaster, ecco perchè non
puoi rimuovereun upload una volta che è stato accettato.
4.8.1
Incoming ritardato
La directory unchecked ha una speciale sottodirectoryDELAYED. Essa stessa è suddivisa in
nove directorychiamate da 1-day a 9-day. I pacchettiche vengono inviati in upload in una
di queste directory verrannospostati nella directory unchecked reale dopo il corrispondentenumero di giorni. Questo viene fatto da uno script che è lanciatoogni giorno e che sposta i
pacchetti tra le varie directory.Quelli che sono in “1-day” sono installati in uncheckedmentre
gli altri vengono spostati nelle directory adiacenti (peresempio, un pacchetto in 5-day sarà
spostato in4-day). Questa feature è particolarmente utile allepersone che stanno facendo dei
non-maintainer uploads. Inveceche aspettare prima di fare l’upload di un NMU, è inviato
inupload appena è pronto in una di quelle directory DELAYED/x-day.Questo lascia il corrispondente numero di giorni al mantainerper reagire e fare loro stessi l’upload di un altro fix se
nonsono completamente soddisfatti dal NMU. In alternativa possonorimuovere il NMU.
L’uso della feature delayed può essere semplificato con un pocodi integrazione nel tuo
strumento di upload. Per esempio, seusi dupload (vedi ‘dupload’ a pagina 83), puoi
aggiungerequesto pezzetto al tuo file di configurazione:
$delay = ($ENV{DELAY} || 7);$cfg{’delayed’} = {
fqdn => "ftp-master.debian.org", login => "iltuologindebian",
=> "scpb"};
incoming => "/org
Una volta che hai fatto tale modifica, dupload può essereusato per effettuare facilmente
l’upload di un pacchetto in una delledirectory delayed:
DELAY=5 dupload --to delayed <changes-file>
Capitolo 4. Risorse per gli sviluppatori Debian
4.9
4.9.1
26
Informazioni sui pacchetti
Sul web
Ciascun pacchetto ha diverse pagine web dedicate.http://packages.debian.org/package-namevisual
ogni versione del pacchetto disponibile nellevarie distribuzioni. Ogni versione si collega a
una paginache fornisce informazioni, inclusa la descrizione del pacchetto,le dipendenze e i
collegamenti per il download del pacchetto.
Il sistema di tracciamento dei bug tiene traccia dei bug perogni pacchetto. Puoi vedere i bug
di un certo pacchetto all’indirizzo http://bugs.debian.org/package-name.
4.9.2
L’utility madison
madison è un’utility a linea di comando che è disponibilesu entrambi
ftp-master.debian.org e non-us.debian.org.Usa un singolo argomento corrispondente al nome di un pacchetto. Comerisultato visualizza quale versione del pacchetto
è disponibile perogni combinazione di architettura e distribuzione. Un esempio lospiegherà
meglio.
$ madison libdbd-mysql-perllibdbd-mysql-perl |
1.2202-4 |
stable | source, alpha,arm, i386, m68k, powerpc, sparclibdbd-mysql-perl |
1.221
testing | alphalibdbd-mysql-perl |
1.2219-1 |
unstable | source, alpha,arm
In questo esempio, puoi vedere che la versione in unstable è diversada quella in testing e che
c’è stato un NMU solo binario del pacchettoper l’architettura alpha. Ogni volta il pacchetto è
stato ricompilato sullamaggior parte delle architetture.
4.10
Il sistema di tracciamento dei pacchetti
Il sistema di tracciamento dei pacchetti (PTS) è uno strumentobasato su e-mail atto a tenere
traccia dell’attività di un pacchettosorgente. Questo significa in realtà che puoi ricevere le
stesseemail che riceve il mantainer, semplicemente sottoscrivendoti alpacchetto nel PTS.
Ogni email inviata attraverso il PTS viene classificata con unadelle parole chiave sotto elencate.
Questo ti permetterà di selezionarele email che vuoi ricevere.
Di default riceverai:
bts Tutti i bug report e le conseguenti discussioni.
bts-control Le notifiche email da <[email protected]>circa i cambiamenti di
stato dei bug report.
upload-source Le notifiche email da katie quando un upload vieneaccettato.
Capitolo 4. Risorse per gli sviluppatori Debian
27
katie-other Altre email di avvertimento ed errore da katie (comeuna disparità di
override per il campo sezione e/o priorità).
default Qualunque email non automatica inviata al PTS da persone che volevanocontattare i sottoscritti al pacchetto. Questo può essere fatto inviandouna mail a
[email protected]. Per prevenire lospam, tutti i messaggi
inviati a quegli indirizzi devono contenere l’headerX-PTS-Approved con un valore non
vuoto.
summary (Questa è un’espansione pianificata.)Le email regolari di riepilogo circa lo stato del
pacchetto (statistichesui bug, una vista d’insieme sul porting, il progresso in testing, . . . ).
Puoi anche decidere di ricevere delle informazioni addizionali:
upload-binary La notifica email da katie quando viene accettato un uploaddi un pacchetto binario. In altre parole, ogni volta che un demone di buildo un porter effettua un
upload del tuo pacchetto per un’altra architettura,puoi ricevere una email per tracciare
come il tuo pacchetto venga ricompilatoper tutte le architetture.
cvs Notifiche di commit CVS, se il pacchetto ha un archivio CVS e il mantainerha impostato
l’inoltro delle notifiche di commit al PTS.
ddtp Traduzioni di descrizioni o di template di debconf inviate alprogetto di traduzione delle
descrizioni Debian.
4.10.1
L’interfaccia email del PTS
Puoi controllare le tue sottoscrizioni al PTS mandando varicomandi a <[email protected].
org>.
subscribe <sourcepackage> [<email>] Sottoscrive email alle comunicazioni relative
al pacchetto sorgente sourcepackage. Se il secondo argomento non è presente viene usato
l’indirizzo del mittente. Se sourcepackage non è un valido pacchetto sorgente, riceverai
un avvertimento. Comunque se è un pacchetto binario valido, il PTS ti sottoscriverà al
pacchetto sorgente corrispondente.
unsubscribe <sourcepackage> [<email>] Rimuove una precedente sottoscrizione al
pacchetto sorgente sourcepackage usando l’indirizzo email specificato oppure l’indirizzo
del mittente se il secondo argomento non è specificato.
which [<email>] Lista tutte le sottoscrizioni per il mittente o l’indirizzo email
opzionalmente specificato.
keyword [<email>] Ti dice le parole chiave che stai accettando. Per una spiegazione sulle
parole chiave, vedi sopra. Ecco un veloce riepilogo:
• bts: mail provenienti dal sistema di tracciamento dei bug Debian
Capitolo 4. Risorse per gli sviluppatori Debian
28
• bts-control: risposte alle mail inviate a <[email protected]>
• summary: mail automatiche di repilogo sullo stato di un pacchetto
• cvs: notifiche di commit CVS
• ddtp: traduzioni di descrizioni e template di debconf
• upload-source: annuncio dell’avvenuta accettazione di un nuovo upload di
sorgenti
• upload-binary: annuncio di un nuovo upload solo binario (porting)
• katie-other: altre mail dagli ftpmaster (disparità di override, ecc.)
• default: tutte le altre mail (quelle che non sono “automatiche”)
keyword <sourcepackage> [<email>] Come il precededente ma per il dato pacchetto sorgente, siccome puoi selezionare un set di keyword differenti per ogni pacchetto
sorgente.
keyword [<email>] {+|-|=} <lista di keyword> Accetta (+) o rifiuta (-) le mail
classificate sotto le date parole chiave. Definisce la lista (=) delle parole chiave accettate.
keyword <sourcepackage> [<email>] {+|-|=} <lista di keyword> Come
il
precedente ma sovrascrive la lista delle parole chiave per il pacchetto sorgente indicato.
quit | thanks | -- Ferma l’analisi dei comandi. Tutte le linee successive sono ignorate
dal bot.
4.10.2
Filtrare le mail del PTS
Una volta che sei sottoscritto a un pacchetto, riceverai le mail speditaa
[email protected]. Queste mailhanno appesi degli header
speciali per lasciartele filtrare in una mailboxspeciale (p.es. con procmail). Gli header
aggiunti sonoX-Loop, X-PTS-Package, X-PTS-Keyword eX-Unsubscribe.
Ecco un esempio di header aggiunti per una notifica di upload disorgenti del pacchetto dpkg:
X-Loop: [email protected]: dpkgX-PTS-Keyword: upload-so
4.10.3
Inoltrare i commit CVS nel PTS
Se usi un archivio CVS pubblicamente accessibile per mantenere iltuo pacchetto Debian puoi
volere inoltrare le notifiche di commit alPTS in modo che chi si è sottoscritto (e i possibili
co-mantainer)possano seguire da vicino l’evoluzione del pacchetto.
Una volta che hai impostato l’archivio CVS per generare le notifichedi commit, devi semplicemente assicurarti che mandi una copia di questeemail a
[email protected].
Solo le personeche accettano la
keyword cvs riceveranno queste notifiche.
Capitolo 4. Risorse per gli sviluppatori Debian
4.10.4
29
L’interfaccia web del PTS
Il PTS ha un’interfaccia web all’indirizzo http://packages.qa.debian.org/che mette
insieme un grande numero di informazioni su ogni pacchettosorgente. Mette in evidenza molti
link utili (BTS, statistiche di QA,informazioni sui contatti, stato delle traduzioni DDTP, log di
buildd)e raccoglie molte altre informazioni da vari posti (le ultime 30 vocidi changelog, stato
di testing, . . . ). È uno strumento molto utilese vuoi conoscere cosa sta succedendo su uno
specifico pacchetto sorgente.Oltretutto c’è una form che permette di sottoscriversi facilmente
al PTSvia email.
Puoi saltare direttamente alla pagina web di uno specifico pacchetto sorgentecon un URL tipo
http://packages.qa.debian.org/sourcepackage.
Questa interfaccia web è stata designata come un portale per lo sviluppo dipacchetti: puoi
aggiungere contenuti personalizzati sulle pagine dei tuoipacchetti. Puoi aggiungere “informazioni statiche” (notizie che devonoessere disponibili per un tempo indefinito) e notizie nella
sezione“latest news” (ultime notizie).
Notizie statiche possono essere usate per indicare:
• la disponibilità di un progetto ospitato su Aliothper co-mantenere il pacchetto
• un link per il sito web upstream
• un link al bug tracker upstream
• l’esistenza di un canale IRC dedicato al software
• qualunque altra risorsa disponibile che può essere utile per la manutenzionedel
pacchetto
Notizie classiche possono essere usate per annunciare che:
• pacchetti beta sono disponibili per il testing
• si aspettano pacchetti finali per la prossima settimana
• la pacchettizazione sta per essere rifatta da zero
• sono disponibili dei backport
• il mantainer è “in vacanza” (se vogliono pubblicare questa informazione)
• si sta lavorando per un NMU
• qualcosa di importante sta per essere fatto al pacchetto
Entrambi i tipi di news sono generati in maniera simile: devi solo mandareuna email a
<[email protected]> oppure a<[email protected]>. La mail
Capitolo 4. Risorse per gli sviluppatori Debian
30
dovrebbe indicare a quale pacchettoconcerne mettendo il nome del pacchetto sorgente nell’header X-PTS-Packagedella email o in un pseudo-header Package (come nei report del
BTS). Seun URL è disponibile nell’header X-PTS-Url della email o nel pseudo-headerUrl,
allora il risultato è un link a tale URL invece che una completa news.
Ecco qualche esempio di mail valide usate per generare news nel PTS.Il primo aggiunge un
link all’interfaccia cvsweb di debian-cd nellasezione “informazioni statiche”:
From: Raphael Hertzog <[email protected]>To: [email protected]
debian-cd CVS repository with cvswebPackage: debian-cdUrl: http://cvs.debian.org/
Il secondo è un annuncio spedito a una mailing list che è anche mandato alPTS in modo che
venga pubblicato sulla pagina web PTS del pacchetto. Notal’uso del campo BCC per evitare
risposte inviate per errore al PTS.
From: Raphael Hertzog <[email protected]>To: [email protected]
2.0 backported for woodyX-PTS-Package: galeonHello gnomers!I’m glad to announce t
You’ll findeverything here:...
Pensaci due volte prima di aggiungere una news al PTS perchè dopo non saraipiù in grado di
rimuoverla e nemmeno di modificarla. L’unica cosa che puoifare è mandare un’altra news che
renderà obsolete le informazioni contenutenella precedente.
4.11
Vista d’insieme dei pacchetti degli sviluppatori
Un portale web di QA (assicurazione qualità) è disponibile all’indirizzohttp://qa.debian.
org/developer.php che mostra una tabella che elenca tutti i pacchettidi un singolo sviluppatore (includendo quelli in cui è elencato comeco-maintainer). La tabella ti da un buon riepilogo sui pacchetti dellosviluppatore: numero di bug per severità, lista delle versioni disponibiliin
ogni distribuzione, stato di testing e molto altro inclusi i link aqualunque altra informazione
utile.
È una buona idea quella di controllare regolarmente i tuoistessi dati in modo da non dimenticarti di nessun bug aperto e inmodo di non dimenticarti quali pacchetti sono sotto la tua
responsabilità.
4.12
Debian *Forge: Alioth
Alioth è un servizio Debian abbastanza nuovo, basato su una versione leggermentemodificata del software GForge (un evoluzione di SourceForge). Questosoftware offre agli sviluppatori accesso a strumenti facili da usare comebug tracker, patch manager, project/task manager, servizi di hosting di file,mailing list, archivi CVS ecc. Tutti questi strumenti sono gestiti
tramiteinterfaccia web.
Capitolo 4. Risorse per gli sviluppatori Debian
31
È inteso a fornire infrastrutture a progetti di software liberospalleggiati o diretti da Debian, facilitare le contribuzioni da sviluppatoriesterni ai progetti iniziati da Debian e aiutare i progetti
i cui obiettivisono la promozione di Debian o dei suoi derivati.
Per informazioni aggiuntive visita http://alioth.debian.org/.
Capitolo 4. Risorse per gli sviluppatori Debian
32
33
Capitolo 5
Gestire i pacchetti
Questi capitolo contiene informazioni relativa alla creazione, upload,gestione e “porting” di
pacchetti.
5.1
Nuovi pacchetti
Se vuoi creare un nuovo pacchetto per la distribuzione Debian, dovrestiprima consultare
la lista dei Pacchetti aventibisogno di lavoro e futuri (http://www.debian.org/devel/
wnpp/) (WNPP). Controllando tale lista puoiassicurarti che nessuno stia ancora lavorando per
fare un pacchetto diquel software, e che non si duplichino gli sforzi. Leggi le pagine web
WNPP (http://www.debian.org/devel/wnpp/) per ulteriori informazioni.
Assumendo che nessun’altro stia già lavorando sul tuo futuro pacchetto,devi segnalare un bug
(‘Riportare bug’ a pagina 73) verso il pseudo-pacchettownpp descivendo la tua intenzione di
creare un nuovopacchetto includendo, ma non limitandoti a, la descrizione del pacchetto,la
sua licenza e l’URL da dove può essere scaricato.
Dovresti mettere come soggetto “ITP: foo– short description”, sostituendo il nome del nuovopaccheto a foo. La severità del bug dovrebbe essere impostataa wishlist. Se pensi che sia necessario, mandane una copia a<[email protected]> impostando l’indirizzo nell’intestazioneX-Debbugs-CC: del messaggio (no, non usare CC:,perchè in quel modo
l’oggetto del messaggio non riporterà il numerodel bug).
Per favore includi un campo Closes: bug#nnnnnnel changelog nuovo pacchetto in modo
daautomaticamente chiudere il bug quando il nuovo pacchetto entrerànell’archivio. (‘Quando
i bug vengono chiusi da nuovi upload.’ a pagina 44).
Ci sono diverse ragioni per le quali chiediamo ai mantainersdi annunciare le loro inenzioni:
• Aiuta i (potenziali nuovi) mantainer di sfruttarel’esperienza delle persone della lista, e fa
loro sapere se qualcun’altroci sta già lavorando sopra.
• Fa sapere ad altre persone che stanno pensando di lavorare sul pacchettoche esiste già
un volontario, quindi gli sforzi possono essere ripartiti.
Capitolo 5. Gestire i pacchetti
34
• Fa sapere agli altri mantainer di più sul pacchetto alla descrizionedi una sola linea e la
frase “Initial release” del changelog che vienespedita a debian-devel-changes.
• È di aiuto per le persone che usano unstable (e formano la nostra prima linea di
tester).Dovremmo incoraggiare queste persone.
• Gli annunci fanno sapere ai mantainter e alle altre parti interessatecosa sta succedendo e
cosa c’è di nuovo all’interno del progetto.
5.2
Registrare i cambiamenti dei pacchetti
Le modifiche che apporti al pacchetto devono essere registrate neldebian/changelog.
Le registrazioni devono contenere unadescrizione concisa di cosa è cambiato, perchè
(se non è chiaro) especificare se dei bug sono stati chiusi. Registrano anche quando ilpacchetto è stato completato.
Questo file verrà installato in/usr/share/doc
/package/changelog.Debian.gz, o/usr/share/doc/package/changelog.gz per i
pacchettinativi.
Il file debian/changelog è conforme a una certa struttura,con diversi campi. Un campo
degno di nota, distribution,è descritto in ‘Scegliere la distribuzione’ a pagina 36. Ulteriori informazioni sullastruttura di questo file possono essere trovate nella sezione dellaPolicy Debian
intitolata “debian/changelog”.
Le voci nel changelog possono essere usate per chiudere automaticamentedei bug Debian
quando il pacchetto verrà installato nell’archivio.Leggi ‘Quando i bug vengono chiusi da nuovi
upload.’ a pagina 44.
È una cosa convenzionale che la voce del changelog di un pacchettoche contiene una nuova
versione del software sia:
* new upstream version
Esistono degli strumenti che ti permettono di creare vocie completare il changelog per il
rilascio— leggi ‘devscripts’ a pagina 84 e ‘dpkg-dev-el’ a pagina 85.
Leggi anche ‘Procedimenti consigliati per debian/changelog’ a pagina 65.
5.3
Controllare il pacchetto
Prima di effettuare l’upload di un pacchetto, dovresti effettuare deicontrolli di base su di esso. Dovresti almeno provare a svolgere leseguenti attività di base (avrai bisogno di avere da
qualche parteuna vecchia versione dello stesso pacchetto):
• Installa il pacchetto e assicurati che il software funziona, oaggiorna il pacchetto da una
vecchia versione alla tua nuova seun pacchetto Debian per esso esiste già.
Capitolo 5. Gestire i pacchetti
35
• Lancia lintian sul pacchetto. Puoi lanciare lintian come segue: lintian
-vpackage-version.changes. In questo modo saranno controllati sia il pacchetto
sorgente cheil pacchetto binario. Se non capisci l’output generato da lintian prova ad
aggiungere lo switch -i,che porterà lintian a riportare una descrizione moltoprolissa
del problema.
Normalmente, non si dovrebbe effettuare l’upload di un pacchettose lintian segnala degli
errori (cominceranno con E).
Per ulteriori informazioni su lintian, leggi ‘lintian’ a pagina 80.
• Opzionalmente lancia ‘debdiff’ a pagina 81 per analizzare i cambiamenti dallaversione
precedente, se ne esiste una.
• Effettua un downgrade del pacchetto alla versione precedente (se esiste)— questo mette
alla prova gli script postrm eprerm.
• Rimuovi il pacchetto, poi reinstallalo.
5.4
Layout del pacchetto sorgente
Esistono due tipi di pacchetti Debian sorgenti:
• i cosiddetti pacchetti nativi, nei quali non c’è distinzione tra i sorgenti originali e le patch
applicate per Debian
• i (più comuni) pacchetti dove esistono i sorgenti originali accompagnati da un altro file
che contiene le patch applicate per Debian.
Per i pacchetti nativi, il pacchetto sorgente include un file Debian di controllo dei sorgenti
(.dsc) e il file con i sorgenti (.tar.gz).Il pacchetto sorgente di un pacchetto non-nativo include il file Debian dicontrollo dei sorgenti, il file con i sorgenti originali (.orig.tar.gz)e le
patch Debian (.diff.gz).
Se un pacchetto è nativo oppure no viene determinato quando vienecostruito da
dpkg-buildpackage(1). Il resto di questasezione si riferisce solo ai pacchetti non-nativi.
La prima volta che viene effettuato l’upload di una nuova versionecorrispondente a una nuova
versione upstream, dovrebbe essere effettuatol’upload anche del file tar dei sorgenti originali includendolo nel file.changes. Conseguentemente, quello stesso file tardovrebbe essere
usato per costruire le nuove “diff” e i nuovi file.dsc, senza bisogno di ripeterne l’upload.
Per default, dpkg-genchanges edpkg-buildpackage includeranno i sorgenti originalise
e solo se la parte realativa alla revisione Debian del numero diversione del sorgente è 0 o 1,
indicante una nuova versione upstream.Questo comportamento può essere modificato usando
-sa perincluderlo sempre o -sd per lasciarlo sempre da parte.
Se nessun sorgente originale viene incluso nell’upload, il file tardei sorgenti originali usato
da dpkg-source percostruire il file .dsc le diff per farne l’uploaddeve essere byte-per-byte
identico a quello già presente inarchivio.
Capitolo 5. Gestire i pacchetti
5.5
36
Scegliere la distribuzione
Ogni upload deve specificare in quale distribuzione deveessere incluso il pacchetto. Il processo di costruzione del pacchettoestrae questa informazione dalla prima linea del filedebian
/changelog e la pone nel campo Distributiondel file .changes.
Ci sono diversi valori possibili per questo campo: ‘stable’, ‘unstable’,‘testing-proposedupdates’ e ‘experimental’. Normalmente, al momentodell’upload i pacchetti sono destinati
a unstable.
Attualmente, ci sono altre due distribuzioni possibili: ‘stable-security’e ‘testing-security’, ma
per queste leggi ‘Gestire i bug di sicurezza’ a pagina 44 per ulterioriinformazioni.
Tecnicamente è possibile effettuare l’upload di un pacchetto in piùdistribuzioni allo stesso tempo ma di solito non ha alcun senso farloperchè le dipendenze del pacchetto possono cambiare a seconda delladistribuzione. In particolare, non ha mai senso combinare la
distribuzioneexperimental con qualunque altra. (vedi ‘Experimental’ a pagina 22).
5.5.1
Caso speciale: upload alla distribuzione stable
Effetuare un upload alla distribuzione stable implica che ilpacchetto verrà posto nella directory
stable-proposed-updatesdell’archivio Debian per essere ulteriormente testata prima che
sia realmenteincluso in stable.
Bisognerebbe apporre maggiore attenzione quando si effettua un upload perstable. Di base, un
pacchetto dovrebbe essere mandato in uploadin stable solo se si verifica uno dei seguenti casi:
• un problema nella funzionalità realmente critico
• il pacchetto diventa ininstallabile
• manca il pacchetto in una certa architettura
Nel passato, si usava fare upload verso stable anche perproblemi relativi alla sicurezza. Comunque, questa pratica è sconsigliatain quanto gli upload usati per gli advisory di sicurezza Debian
sonoautomaticamente copiati nell’archivio proposed-updatesappropriato quando l’advisory viene rilasciata. Vedi ‘Gestire i bug di sicurezza’ a pagina 44per informazioni dettagliate su
come gestire i problemi di sicurezza.
Cambiare qualsiasi altra cosa nel pacchetto che non sia importante èsconsigliato, perchè
perfino i fix piu’ scontati possono in seguitocausare dei bug.
Pacchetti mandati in upload su stable devono essere compilati insistemi che girano su stable,
in modo che le loro dipendenze sianolimitate alle librerie (e altri pacchetti) disponibili in stable;per esempio, un pacchetto di cui si sia effettuato l’upload in stableche dipende da una libreria esistente solo in unstable sarà rifiutato.Effettuare cambiamenti alle dipendenze di altri
pacchetti (giocando conProvides o file shlibs), rendendo questi altri pacchettipossibilmente
ininstallabili, è fortemente sconsigliato.
Capitolo 5. Gestire i pacchetti
37
Il “Release Team” (che può essere contattato tramite <[email protected].
org>)valuterà regolarmente gli upload in stable-proposed-updates edeciderà se il tuo pacchetto
può essere incluso in stable.Per favore sii chiaro (e prolisso se necessario) nelle voci nel tuochangelog per gli upload in stable, in quanto altrimenti ilpacchetto non sarà considerato per
l’inclusione.
5.5.2
Caso speciale: upload a testing-proposed-updates
La distribuzione testing è composta dai pacchetti da unstable in accordo alle regolespiegate in
‘Ulteriori informazioni sulla distribuzione testing’ a pagina 21. In ogni caso, il release manager
può fermare gliscript di testing quando ha intenzione di fare un “freeze” della distribuzione.In
quel caso, puoi volere effettuare upload a testing-proposed-updatesper fornire fix di pacchetti
durante il freeze.
Tieni a mente che quegli upload non sono processati automaticamente, devonopassare per le
mani del release manager. Dovresti quindi avere una buonaragione per effettuare upload lì.
Per sapere quale sia una buona ragione negliocchi del release manager, dovresti leggere le
istruzioni cheregolarmente da su <[email protected]>.
Non dovresti effettuare upload su testing-proposed-updates quando puoiaggiornare i toi pacchetti attraverso unstable. Se non puoi (per esempioperchè hai una nuova versione in sviluppo in
unstable), puoi usarlo ma è raccomandatochiedere prima l’autorizzazione al release manager.
5.6
5.6.1
Effetuare un upload
Inviare un upload a ftp-master
Per inviare un pacchetto in upload, hai bisogno di un account personalesu ftp-master.
debian.org, cosa che dovresti avere essendoun mantainer ufficiale. Se usi scp o rsyncper
trasferire i file, posizionali in /org/ftp.debian.org/incoming/; se usi FTPanonimo,
posizionali in /pub/UploadQueue/.
Se vuoi usare la funzione descritta in ‘Incoming ritardato’ a pagina 25,dovrai mandare l’upload
a ftp-master. È l’unico punto diupload che supporta l’immissione ritardata.
Per piacere nota che dovresti trasferire il file changes per ultimo.Altrimenti, il tuo upload può
essere rifiutato perchè il software dimanutenzione dell’archivio scorrerà il file changes e vedrà
che nontutti i file sono stati inviati in upload. Se non hai voglia di trasferireil file changes per
ultimo, puoi semplicimente copiare i tuoi file in unadirectory temporanea in ftp-master e
quindi spostarli in/org/ftp.debian.org/incoming/.
Nota: Non inviare a ftp-master upload di pacchetticrittografici che appartengono a contrib
o non-free.Upload di tali software dovrebbero andare a non-us (vedi ‘Inviare un upload a
non-US’ nella pagina seguente). Inoltre pachetti contenenti codice brevettatoda il governo degli Stati Uniti non possono essere inviati in upload a ftp-master; dipendentemente dal caso
Capitolo 5. Gestire i pacchetti
38
potrebbero essere comunqueinviati a non-US/non-free (è in non-free per caratteristichedella distribuzione e non a causa della licenza del software). Se non puoiinviarlo in upload a
ftp-master, non puoi neanche farlo alle codedi upload oltreoceano su chiark o erlangen.
Se non seisicuro se i controlli sulle licenze o sualla crittografia degli StatiUniti si applicano al
tuo pacchetto, manda un messaggio a <[email protected]>e chiedi.
Puoi anche trovare utili per l’upload dei pacchetti i pacchetti Debian‘dupload’ a pagina 83
o ‘dput’ a pagina 83. Questi maneggevoli programmiaiutano ad automatizzare il processo
dell’upload di pacchetti in Debian.
Dopo l’upload del tuo pacchetto, puoi controllare come il software dimanutenzione
dell’archivio lo processerà facendo giraredinstall sul tuo file changes:
dinstall -n foo.changes
Nota che dput può automaticamente fare questo per te.
5.6.2
Inviare un upload a non-US
Come sopra discusso, sofware a esportazione controllata non dovrebberoessere inviati a
ftp-master. Al suo posto, spedisci il pacchettoa non-us.debian.org,ponendo i file in
/org/non-us.debian.org/incoming/ (di nuovo, sia ‘dupload’ a pagina 83 che ‘dput’ a
pagina 83possono fare questo per te se propriamente invocati).Di default, puoi usare gli stessi
account/password che usi suftp-master. Se per gli upload usi FTP anonimo, poni i filein
/pub/UploadQueue/.
Puoi controllare i tuoi upload allo stesso modo di come fai suftp-master, con:
dinstall -n foo.changes
Nota che i cittadini o i residenti negli Stati Uniti sono soggettia restrizioni sull’esportazione di
software crittografico. Al tempodella scrittura di questo documento, i cittadini degli Stati Unitisono autorizzati a esportare qualche software crittografico, soggettoa regole di notificazione
dal Dipartimento sul Commercio degli StatiUniti. Comunque, questa restrizione è stata posta
in deroga per isoftware già disponibile al di fuori degli Stati Uniti. Di conseguenza,qualsiasi
software crittografico che appartiene alla sezione maindell’archivio Debian e che non dipende
da nessun pacchetto esterno amain (e.g., non dipende da niente in non-US/main)puo’ essere
inviato a ftp-master o alle sue code, sopradescritte.
La policy Debian non previene upload su non-US da cittadini o residentidegli Stati Uniti, ma
queste persone dovrebbero fare attenzione nel farlo.È raccomandato che gli sviluppatori intraprendano tutti i passinecessari per assicurarsi che non violino le correnti leggi degliStati Uniti
effettuando un upload su non-US, compreso consultarsicon un avvocato.
Per i pacchetti in non-US/main, non-US/contrib,gli sviluppatori dovrebbero almeno seguire leprocedure specificate dal Governodegli Stati Uniti (http://www.bxa.doc.gov/
Capitolo 5. Gestire i pacchetti
39
Encryption/PubAvailEncSourceCodeNofify.html). I mantainer di pacchetti in nonUS/non-freedovrebbero in aggiunta consultare le regole per la notificazione dulle esportazioni
(http://www.bxa.doc.gov/Encryption/) sul software non libero.
Questa sezione è esclusivamente a titolo informativo e noncostituisce dei consigli legali. Di
nuovo, è fortemente raccomandato chei cittadini e residenti degli Stati Uniti consultino un
avvocatoprima di effettuare upload a non-US.
5.6.3
Upload via chiark
Se hai una connessione di rete lenta verso ftp-master, esistonodelle alternative. Una è quella
di inviare file in upload a Incomingattraverso una coda di upload in Europa su chiark.
Per dettaglicollegati a ftp://ftp.chiark.greenend.org.uk/pub/debian/private/
project/README.how-to-upload.
Nota: Non inviare in upload pacchetti contenenti software che èa esportazione controllata dal governo degli Stati Uniti sulla coda inchiark. Siccome questa coda di upload va
in ftp-master,le prescrizioni trovate in ‘Inviare un upload a ftp-master’ a pagina 37 si
applicano anchequa.
Il programma dupload supporta gli upload a chiark;per favore fai riferimento alla
documentazione fornita con il programmaper i dettagli.
5.6.4
Upload via erlangen
Un altra coda di upload è disponibile in Germania: semplicemente inviai file in upload via FTP
anonimo a ftp://ftp.uni-erlangen.de/pub/Linux/debian/UploadQueue/.
L’upload deve essere un upload completo Debian, come lo invieresti aIncoming di
ftp-master, ovvero dei file .changesinsieme agli altri file menzionati nei .changes stessi. Ildemone della coda controlla anche che il .changes siacorrettamente firmato con GnuPG
o OpenPGP da uno sviluppatore Debian,in modo che nessun file fasullo possa intrufolarsi in
ftp-masterattraverso questa coda. PEr favore assicurati anche che il campoMaintainer nel
.changes contiene il tuo indirizzoe-mail. L’indirizzo lì trovato è usato per tutte le risposte,
propriocome in ftp-master.
Non c’è alcn bisogno di muovere i tuoi file in una directory secondariadopo l’upload, come su
chiark. E, in ogni caso, dovrestiricevere una mail di risposta dal demone della coda spiegando cosaè successo al tuo pacchetto. È sperabile che sia stato spostato inftp-master, ma in
caso di errori sarai comunque avvisato.
Nota: Non inviare in upload pacchetti contenenti software che èa esportazione controllata
dal governo degli Stati Uniti sulla coda inerlangen. Siccome questa coda di upload va
in ftp-master,le prescrizioni trovate in ‘Inviare un upload a ftp-master’ a pagina 37 si
applicano anchequa.
Il programma dupload supporta gli upload a erlangen;per favore fai riferimento alla
documentazione fornita con il programmaper i dettagli.
Capitolo 5. Gestire i pacchetti
5.6.5
40
Altre code di upload
Un altra coda di upload basata negli Stati Uniti è disponibile, ed èun buon backup nel caso ci
siano problemi a raggiungere ftp-master.Puoi inviare file in upload, esattamente come in
erlangen, a ftp://samosa.debian.org/pub/UploadQueue/.
Una coda di upload è disponibile in Giappone: semplicemente invia ifile in upload via FTP
anonimo a ftp://master.debian.or.jp/pub/Incoming/upload/.
5.6.6
Notificazione che un nuovo pacchetto è stato installato
I mantainer dell’archivio Debian sono responsabili per la gestione degliupload dei pacchetti.
Per la maggior parte, gli upload sono giornalmentegestiti automaticamente dagli strumenti di
manutenzione dell’archivio,katie. Specificatamente, gli aggiornamenti di pacchettiesistenti
nella distribuzione ‘unstable’ sono gestiti automaticamente.In altri casi, specialmente nei nuovi
pacchetti, il posizionamentodel pacchetto in upload nella distribuzione è gestito manualmente.Quando gli upload sono gestiti manualmente, il cambiamento all’archiviopuò prendere fino
a un mese di tempo. Per favore sii paziente.
In ogni caso, riceverai una email di notifica indicante che il pacchettoè stato aggiunto all’archivio, la quale indica anche quali bug sarannochiusi dall’upload. Per favore esamina
con attenzione la notifica,controllando se qualche bug che avevi intenzione di chiudere non
èscattato.
La notifica di installazione ti informerà anche su in quale sezioneil pacchetto è stato inserito.
Se esiste disparità, riceverai unaemail separata per avvisarti di ciò. Continua a leggere sotto.
Nota anche che se effettui upload attraverso le code, anche il softwaredemone di coda ti
manderà una notifica via email.
5.7
Specificare sezione, sottosezione e priorità del pacchetto
I campi Section e Priority del filedebian/control non specifica in realtà in che luogo il
fileverrà piazzato nell archivio, e nemmeno la sua priorità. Per conservarel’integrità complessiva dell’archivio, sono i mantainer dell’archivioche hanno il controllo su quei campi. I valori
nel filedebian/control sono in realtà solo suggerimenti.
I mantainer dell’archivio tengono traccia delle sezioni e prioritàcanoniche per i pacchetti nel
file override. Se esiste unadisparità tra il file override e i campi indicati nel filedebian/control,
allora riceverai una email notificantela divergenza quando il pacchetto sarà installati nell’archivio.Puoi o correggere il tuo file debian/control per iltuo prossimo upload, oppure puoi
desiderare di apportare unamodifica nel file override.
Per alterare la sezione reale in cui viene posto un pacchetto, deviprima assicurarti che
il debian/control nel tuopacchetto sia accurato. Dopodichè, manda una email a
Capitolo 5. Gestire i pacchetti
41
<[email protected]>oppure segnala un bug di ftp.debian.org richiedendoche la sezione o la priorità del tuo pacchetto venga modificata dallavecchia alla nuova.
Assicurati di spiegare le tue ragioni.
Per ulteriori informazioni circa i file override, vedidpkg-scanpackages(8) e http://www.
debian.org/Bugs/Developer#maintincorrect.
Nota che il campo Section specifica sia la sezione che lasottosezione, descritte in ‘Sezioni’ a
pagina 19. Se la sezioneè “main”, dovrebbe essere omessa. La lista delle sottosezioni permessepuò essere trovata in http://www.debian.org/doc/debian-policy/ch-archive.
html#s-subsections.
5.8
Gestire i bug
Ogni sviluppatore deve essere in grado di lavorare con il sistemadi tracciamento dei bug
(http://www.debian.org/Bugs/) Debian. Questo include sapere comearchiviare propriamente i bug report (vedi‘Riportare bug’ a pagina 73), come aggiornarli e registrarli, e come
processarli echiuderli.
Le caratteristiche del sistema di tracciamento deibug interessanti per gli sviluppatori sono descritte nella documentazione per gli sviluppatori sul BTS (http://www.debian.org/Bugs/
Developer).Questo include chiudere bug, inviare messaggi di followup, assegnareseverità e
tag, marcare bug come inoltrati e altro.
Operazioni come reassegnare bug ad altri pacchetti, unire bug report separati che riguardano
la stessa cosa, o riaprire bug quandosono stati chiusi premeturamente, sono gestite usando il
cosiddettomail server di controllo. Tutti i comandi disponibili in questo server sono descritti nelladocumentazione del server di controllo del BTS (http://www.debian.org/Bugs/
server-control).
5.8.1
Monitorare i bug
Se vuoi essere un buon mantainer, dovresti cotrollare periodicamenteil sistema di tracciamento dei bug Debian (BTS) (http://www.debian.org/Bugs/)per i tuoi pacchetti. Il
BTS contiene tutti i bug aperti contro ituoi pacchetti. Puoi controllarli visitando questa
pagina:http://bugs.debian.org/[email protected].
I mantainer interagiscono con il BTS attraverso l’indirizzo emailbugs.debian.org. La
documentazione sui comandi disponibili puòessere trovata su http://www.debian.org/
Bugs/, oppure, se hai installato ilpacchetto doc-debian, puoi dare un’occhiata ai filein locale
/usr/share/doc/debian/bug-*.
Qualcuno trova utile ricevere dei resoconti periodici sui bug aperti.Puoi aggiungere un cron
job come i seguentise vuoi ricevere settimanalmente una email sottolineante tutti i bug aperti
contro i tuoi pacchetti.
# chiedi un resoconto settimanale sui bug nei miei pacchetti0 17 * * fri
ech
Capitolo 5. Gestire i pacchetti
42
Sostituisci address con il tuo indirizzo come mantainer ufficialeDebian.
5.8.2
Rispondere ai bug
Quando rispondi ai bug, assicurati che qualunque discussione tu intraprendacirca i bug sia
inviata sia a chi ha originalmente inviato il bug che albug stesso (p.es., <[email protected].
org>). Se stai scrivendo una nuovaemail e non ricordi l’indirizzo email di chi ha inviato il bug,
puoi usarel’indirizzo <[email protected]> per contattarlo ememorizzare
la tua email nel log del bug (ciò significa che non hai bisogno diinviare una copia della mail a
<[email protected]>).
Se ricevi un bug recante la dicitura “FTBFS”, ciò significa “Fails to buildfrom source” - fallisce
durante il build dai sorgenti .I porter usano spesso questo acronimo.
Una volta che hai finito con un bug (p.es. lohai risolto), marcalo con done (chiudilo) mandando
un messaggioesplicativo a <[email protected]>. Se stai risolvendo unbug cambiando il pacchetto ed effettuandone un upload, puoi automatizzarela chiusura del bug come
descritto in ‘Quando i bug vengono chiusi da nuovi upload.’ a pagina 44.
Non dovresti mai chiudere bug attraverso il comando delbug server close inviato a
<[email protected]>. Se fai così,il segnalatore originario non riceverà alcuna
informazione sul perchèdetto bug è stato chiuso.
5.8.3
Bug housekeeping
Come mantainer, toverai spesso bug in altri pacchetti o ti verrannosegnalati bug in tuoi pacchetti che sono in realtà bug di altri pacchetti.Le feature del sistema di tracciamento dei buginteressanti per gli sviluppatori sono descritte nellaDocumentazione sul BTS per gli sviluppatoriDebian (http://www.debian.org/Bugs/Developer). Operazioni come reassegnare, fondere e marcare le segnalazionidi bug sono descritte nella documentazionedel server
di controllo del BTS (http://www.debian.org/Bugs/server-control). Questa sezione contiene alcune linee guidaper la gestione dei tuoi bug, basate sull’esperienza collettiva
deglisviluppatori Debian.
Segnalare bug per problemi che incontri in altri pacchetti fa partedegli “obblighi civili” nell’essere un mantainer,vedi ‘Riportare bug’ a pagina 73 per i dettagli. In ogni caso, gestire i bugnei
tuoi stessi pacchetti è ancora più importante.
Di seguito è riportata una lista di passi che puoi seguire pergestire una segnalazione di bug.
1 Stabilire se la segnalazione corrisponda o meno realmente a un bug.A volte gli utenti
stanno solo invocando un programma nel modo sbagliatoperchè non hanno letto la documentazione. Se pensi che sia successo inrealtà questo, chiudi semplicemente il bug indicando abbastanza informazioniper permettere all’utente di risolvere il problema (indica la giustadocumentazione e cose così). Se giungono in continuazione segnalazionisullo
stesso problema potresti chiederti se la documentazione siaadeguata o se il programma
Capitolo 5. Gestire i pacchetti
43
non dovrebbe accorgersi del problema emandare in output un messaggio di errore più
informativo. Questo potrebbe essere un problema da sottoporre all’autore delsoftware.
Se il segnalatore originale del bug non è d’accordo con la tua decisionedi chiudere il
bug, possono riaprirlo finchè non trovate un accordosu come gestirlo. Se non riesci a
trovarlo, puoi volere marcare ilbug wontfix per fare sapere alla gente che il bug esiste
mache non sarà corretto. Se questa situazione è inaccettabile, tu (o ilsegnalatore) puoi
richiedere una “sentenza” della commissione tecnicariassegnando il bug a tech-ctte
(puoi usare ilcomando “clone” del BTS se desideri di tenerlo segnalato sul tuopacchetto).
Prima di farlo, per piacere leggi le procedure raccomandate (http://www.debian.
org/devel/tech-ctte).
2 Se il bug è reale ma è causato da un altro pacchetto, riassegnalosemplicemente al pacchetto giusto. Se non sai a quale pacchettodovrebbe essere riassegnato, puoi o chiedere
aiuto in<[email protected]> o riassegnarlo a debian-policyper
fare decidere a loro quale pacchetto sia bacato.
A volte puoi avere bisogno di aggiustare la severità del bug in modo checorrisponda
alla nostra definizione di severità. Questo perché la gentetende a gonfiare la severità dei
bug per assicurarsi che venganorisolti velocemente. Certi bug possono persino venire
degradatia ‘wishlist’ quando il cambiamento richiesto è solo cosmetico.
3 Il segnalatore del bug può avere dimenticato di fornire alcune informazioni,in tal caso
devi chiedergli le informazioni necessarie. Puoi usare il tagmoreinfo per marcare il bug
di conseguenza. Oltretutto, se non puoiriprodurre il bug, marcalo unreproducible.
Chiunque sia in grado diriprodurre il bug è quindi invitato a fornire ulteriori informazioni su comefare per riprodurlo. Dopo qualche mese, se nessuno ha mandato
informazioni,il bug può essere chiuso.
4 Se il bug è dovuto alla pacchettizzazione, risolvilo semplicemente. Se nonsei in
grado di risolverlo da solo, marca il bug con help.Puoi anche chiedere aiuto
su <[email protected]> oppure <[email protected].
org>.Se è un problema a livello upstream, devi inoltrarlo all’autore originale.Inoltrare
un bug non è abbastanza, devi conrollare a ogni release se il bug sia stato risolto o meno. In caso affermativo,chiudilo semplicemente, altrimenti devi ricordarne l’esistenza
all’autore.Se hai l’abilità necessaria puoi preparare una patch che risolve il bug espedirla
allo stesso tempo all’autore. Assicurati di mandare la patchal BTS e marcare il bug con
patch.
5 Se hai risolto un bug in locale, o una patch è stata inviataall’archivio CVS, puoi marcare il bug come pending per farsapere alla gente che il bug è stato corretto e che
verrà chiuso conil prossimo upload (aggiungendo closes: nel changelog).Questo è
particolarmente utile se ci sono più sviluppatori che lavoranosullo stesso pacchetto.
6 Una volta che un pacchetto corretto è disponibile nella distribuzioneunstable, puoi chiudere il bug. Ciò puoò essere fatto automaticamente,vedi ‘Quando i bug vengono chiusi
da nuovi upload.’ nella pagina successiva.
Capitolo 5. Gestire i pacchetti
5.8.4
44
Quando i bug vengono chiusi da nuovi upload.
Intanto che bug e problemi nei tuoi pacchetti vengono risolti, è tuaresponsabilità come mantainer del pacchetto chiudere il bug. Comunque,non dovresti chiudere il bug finché il pacchetto
che lo corregge nonsia stato accettato nell’archivio Debian. Di conseguenza, una voltache ricevi la notifica che il tuo pacchetto aggiornato è statoinstallato nell’archivio, puoi e dovresti
chiudere il bug nel BTS.
È comunque possibile evitare di dover chiudere manualmente i bug dopogli upload — elenca
semplicemente i bug risolti nel tuo filedebian/changelog, rispettando una certa sintassi, e
ilsoftware di manutenzione dell’archivio chiuderà il bug per te. Per esempio:
acme-cannon (3.1415) unstable; urgency=low
* Riempito di opzioni (closes: Bug
In termini tecnici, la seguente espressione regolare Perl descrive comesono identificati i
changelog che chiudono bug:
/closes:\s*(?:bug)?\#\s*\d+(?:,\s*(?:bug)?\#\s*\d+)*/ig
Noi preferiamo la sintassi closes:
con il testo delchangelog.
#XXX, essendola più concisa e la più facile da integrare
Se ti succede di sbagliare a scrivere il numero di un bug o di dimenticareun bug nelle voci del
changelog, non esitare ad annullare ogni dannocausato dall’errore. Per riaprire bug chiusi per
errore, manda un comandoreopen XXX all’indirizzo del controllo del sistemadi tracciamento
dei bug, <[email protected]>. Per chiudere i rimanentibug risolti dal tuo upload,
manda il file .changes a<[email protected]>, dove XXX è il numero deltuo
bug.
Tieni a mente che non è obbligatorio chiudere i bug usando il changelogcome descritto sopra. Se vuoi chiudere bug che semplicemente non hannoniente a che fare con gli upload
che hai fatto, fallo mandando una emaildi spiegazione a <[email protected]>.
NONchiudere bug nella voce del changelog di una versione se i cambiamenti fattiin quella
versione non hanno niente a che fare con il bug.
Per informazioni generali su come scrivere le tue voci nel changelog, vedi‘Procedimenti
consigliati per debian/changelog’ a pagina 65.
5.8.5
Gestire i bug di sicurezza
Per la loro natura sensibile , i bug disicurezza devono essere gestiti con molta attenzione. Il
Team di sicurezzaDebian esiste per coordinare queta attività, tenendo traccia dei problemidi
sicurezza esistenti, aiutando i mantainer con problemi di sicurezzao risolvendoli direttamente,
mandando advisory di sicurezza emantenendo security.debian.org.
Capitolo 5. Gestire i pacchetti
45
Quando vieni a conoscenza dell’esistenza di un bug di sicurezza inun pacchetto Debian, che
tu ne sia o meno il mantainer raccogliinformazioni pertinenti al problema, e contatta prontamente il teamdi sicurezza presso <[email protected]> il più presto possibile.Per
esempio, sono informazioni utili:
• Quali versioni del pacchetto sono riconosciute essere affette dal bug. Controlla ogni
versione presente in una release Debian supportata, così come testing e unstable.
• La natura del rimedio, se disponibile (le patch sono perticolarmente d’aiuto)
• Qualunque pacchetto “riparato” che hai personalmente preparato (manda solo i file
.diff.gz e .dsc e leggi prima ‘Preparare i pacchetti per indirizzare i problemi di
sicurezza’ nella pagina successiva)
• Qualunque assistenza sei in grado di fornire per aiutare il testing (exploit, regression
testing, ecc.)
• Qualunque informazione necessaria per l’advisory (vedi ‘Advisory di sicurezza’ nella
pagina seguente)
Riservatezza
Al contrario della maggior parte delle altre attività in Debian, a voltele informazioni sui problemi di sicurezza devono essere tenute privateper un certo tempo. Questo permette ai distributori di software dicoordinare il rilascio delle informazioni in modo da minimizzare l’esposizione dei loro utenti. Questa decisionedipende dalla natura del problema e del rimedio
corrispondente, e sesia già di pubblico dominio.
Ci sono diversi modi in cui uno sviluppatore può venire a conoscenzadi un problema di
sicurezza:
• lo nota su un forum pubblico (mailing list, sito web, ecc.)
• qualcuno manda un bug report
• qualcuno li informa tramite un’email privata
Nei primi due casi, l’informazione è pubblica ed è importante avere un rimedio il più presto
possibile. Nell’ultimo caso, comunque, potrebbe non essere un informazione pubblica. In quel
caso ci sono poche alternative possibili per gestire il problema:
• Se l’esposizione di sicurezza è minima, a volte non c’è bisogno di tenere segreto il
problema e un rimedio dovrebbe essere creato e rilasciato.
• Se il problema è grave, è preferibile condividere le informazioni con gli altri produttori e
coordinarne il rilascio. Il team di sicurezza mantiene i contatti con le varie organizzazioni
e individui e può prendersene cura.
In ogni caso, se chi riporta il problema chiede che esso non sia reso pubblico, tale richiesta
dovrebbe essere rispettata, con l’ovvia eccezione di informare il team di sicurezza in modo
che una fix possa essere prodotta per una release stabile di Debian. Quando si mandano
informazioni confidenziali al team di sicurezza, assicurati di menzionare il fatto.
Per favore nota che se la segretezza è necessaria non puoi mandareuna fix in upload suunstable (o da qualsiasi altra parte, come un archivio CVS pubblico).Non è sufficente offuscare i
Capitolo 5. Gestire i pacchetti
46
dettagli delle modifiche, essendo ilcodice stesso pubblico, e può essere (e sarà) esaminato dal
pubblicoin generale.
Ci sono due ragioni per rilasciare informazioni anche se è richiestoun certo grado di sicurezza:
il problema era risaputo da un certo tempo,o il problema o l’exploit è diventato pubblico.
Advisory di sicurezza
Le advisory di sicurezza sono rilasciate solo per la corrente, rilasciatadistribuzione stabile,
e non per testing o unstable. Quando sonorilasciate, le advisory sono inviate alla mailing
list<[email protected]> e postate sulle pagine web di sicurezza (http://www.debian.org/security/).Le advisory di sicurezza vengono scritte
e postate dal team disicurezza. Nonostante ciò saranno certamente contenti se unmantainer
può fornire qualche informazione per loro, o scrivere partedel testo. Le informazioni che
dovrebbero comparire in un advisoryincludono:
• Una descrizione del problema e della sua portata, includendo:
– Il tipo del problema (privilege escalation, denial of service, etc.)
– Quali privilegi possono essere ottenuti, e da chi (seda qualcuno)
– Come può essere sfruttato
– Se sia sfruttabile in remoto o in locale
– Come il problema è stato risolto
Questa informazione permette agli utenti di stimare la minaccia ailoro sistemi.
• Numeri di versione dei pacchetti affetti
• Numeri di versione dei pacchetti sistemati
• Informazioni su dove ottenere i pacchetti aggiornati (di solito dall’archivio di sicurezza
Debian)
• Riferimenti alle advisory originali CVE (http://cve.mitre.org), identificatori, e
quant’altro. informazioni utili per stabilire referenze incrociate alla vulnerabilità
Preparare i pacchetti per indirizzare i problemi di sicurezza
Un modo per assistere il team di sicurezza nei loro compiti è difornirli di pacchetti sistemati
adatti per un advisory di sicurezza peril rilascio di Debian stable.
Quando viene aggiornata la release stable, bisogna fare attenzione per evitare di cambiare il
comportamento del sistema o introdurre nuovi bug. Per fare ciò, fai meno modifiche possibile
per sistemare il bug. Gli utenti e gli amministratori si fidano del comportamento esatto di una
release una volta che è stata fatta, quindi qualsiasi modifica effettuata potrebbe infrangere il
sistema di qualcuno. Ciò è specialmente vero con le librerie: assicurati di non cambiare mai le
API o ABI, non importa quanto piccolo sia il cambiamento.
Ciò significa che muoversi verso una nuova versione upstream non èuna buona soluzione.
Invece, i cambiamenti rilevanti dovrebbero essereapplicate alla versione presente nella release
Debian stabile corrente.Generalmente, i mantainer upstream sono disponibili ad aiutarti incaso
di bisogno. Altrimenti, il team di sicurezza Debian può esserein grado di aiutarti.
Capitolo 5. Gestire i pacchetti
47
In qualche caso, non è possibile effettuare il back-port di un fix di sicurezza, per esempio quando unanotevole quantità di codice sorgente deve essere modificata o riscritta.Se questo è il caso, potrebbe essere necessario ripiegare su una nuovaversione upstream. Comunque, questo
succede solo in situazioni estreme,e devi sempre prima coordinarti con il team di sicurezza.
Esiste un’altra linea guida importante correlata a questo: provasempre le tue modifiche. Se hai
un exploit disponibile, provaloe guarda se veramente ha successo sul pacchetto vecchio efallisce su quello sistemato. Prova anche altre, normali azioni,siccome a volte un fix di sicurezza può infrangerealtre feature che non hanno apparentemente alcuna relazione in modimolto
sottili.
NON includere alcuna modifica nel tuo pacchetto chenon sia direttamente correlata alla risoluzione della vulnerabilità.Queste avranno solo bisogno di essere ripristinate, causandoperdite
di tempo. Se ci sono altri bug nel tuo pacchetto che vorrestisistemare, effettua un upload in
proposed-updates nel solito modo,dopo il rilascio dell’advisory di sicurezza. Il meccanismo
degliaggiornamenti di sicurezza non è un modo per introdurre modifiche neltuo pacchetto che
sarebbero altrimenti rifiutate dalla release stabile,qundi per favore non cercare di farlo.
Riesamina e prova le tue modifiche più che puoi. Controlla le differenzecon la versione precedente in continuazione (interdiff dalpacchetto patchutils e debdiff dadevscripts
sono strumenti utili per questo, vedi‘debdiff’ a pagina 81).
Assicurati di verificare le seguenti cose:
• Assegna al giusta distribuzione nel tuo debian/changelog.
Per stable è
stable-security e per testing è testing-security, e per la release stable
precedente è oldstable-security. Non indicare distribution-proposed-updates o
stable!
• Crea delle descrittive e significative voci di changelog. Gli altri si riferiranno su quelle per
determinare se un particolare bug è stato risolto. Includi sempre un riferimento esterno,
preferabilmente un identificatore CVE, in modo che possa essere referenziato in modo
incrociato. Includi le stesse informazioni nel changelog per unstable, in modo che sia
chiaro che è stato risolto lo stesso bug, essendo ciò molto di aiuto quando si verifica che
il bug è risolto nella prossima release stabile. Se un identificatore CVE non è ancora stato
assegnato, il team di sicurezza ne richiederà uno in modo che possa essere incluso nel
pacchetto e nell’advisory.
• Assicurati che il numero di versione sia giusto. Deve essere più alto rispetto al pacchetto
corrente, ma più basso rispetto alle versioni dei pacchetti nelle distribuzioni successive.
Se sei in dubbio, provalo con dpkg --compare-versions. Stai attento a non usare
nuovamente un numero di versione che hai già usato per un precedente upload. Per
testing, deve esserci una versione più alta in unstable. Se non ne esiste ancora una (per
esempio, se sia testing che unstable hanno la stessa versione) devi prima effettuare un
upload di una nuova versione in unstable.
• Non effettuare upload di soli sorgenti se il tuo pacchetto ha qualche pacchetto binaryall (non usare l’opzione -S di dpkg-buildpackage). L’infrastruttura buildd non ne
effettuerà il build. Questo si applica anche agli upload di pacchetti normali.
Capitolo 5. Gestire i pacchetti
48
• A meno che il sorgente upstream sia stato precedentemente inviato in upload a security.debian.org (da un precedente aggiornamento di sicurezza), costruisci l’upload con tutti i sorgenti upstream (dpkg-buildpackage -sa). Se c’è stato un precedente upload
a security.debian.org con la stessa versione upstream, puoi inviare l’upload senza il
sorgente upstream (dpkg-buildpackage -sd).
• Assicurati di usare esattamente lo stesso *.orig.tar.gz usato nell’archivio normale,
altrimenti non sarà in seguito possibile spostare il fix di sicurezza nell’archivio principale.
• Effettua il build del pacchetto su un sistema pulito che ha pacchetti installati solo dalla
distribuzione per cui stai effettuando il build. Se non possiedi un sistema così, puoi usare
una macchina debian.org (see ‘Macchine Debian’ a pagina 14) o impostare un chroot
(vedi ‘pbuilder’ a pagina 83 e ‘debootstrap’ a pagina 83).
Upload del pacchetto sistemato
NON effettuare un upload alla coda di upload disicurezza (oldstable-security, stable-security,
ecc.) senza avereprecedentemente ottenuto l’autorizzazione dal team di sicurezza. Seil pacchetto non soddisfa pienamente le richieste del team, porterànumerosi problemi e ritardi
durante la gestione dell’upload nonvoluto.
NON inviare i tuoi fix a proposed-updates senzaccordinarti con il team di sicurezza. I pacchetti
dasecurity.debian.org saranno automaticamente copiati nella directoryproposed-updates. Se
un pacchetto con lo stesso o più alto numero diversione è già installato all’interno dell’archivio,
l’aggiornamentodi sicurezza sarà rifiutato dal sistema dell’archivio. In quel modo,invece, la
distribuzione stable finirà senza un aggiornamento disicurezza per questo pacchetto.
Una volta che hai creato e controllato il nuovo pacchetto ed èstato approvato dal
team di sicurezza, deve essere inviato inupload in modo che possa essere installato negli archivi. Pergli aggiornamenti di sicurezza, il posto in cui inviare l’uploadè
ftp://security.debian.org/pub/SecurityUploadQueue/ .
Una volta che un upload alla coda di sicurezza è stato accettato,il pacchetto sarà automaticamente ricostruito per tutte learchitetture e messo da parte per la verifica dal team di
sicurezza.
Gli upload in attesa di essere accettati o verificati sono accessibilisolo dal team di sicurezza.
Questo è necessario siccome ci possonoessere dei fix per problemi di sicurezza che non possono
ancora esseredivulgati.
Se un membro del team di sicurezza accetta un pacchetto, questo saràinstallato su
security.debian.org così come nella giustadistribution-proposed-updates su ftp-master o
nell’archivionon-US.
Capitolo 5. Gestire i pacchetti
5.9
49
Spostare, rimuovere, rinominare, adottare e abbandonare
pacchetti
Alcune operazioni di manipolazione dell’archivio non sono automatizzatenel processo di
upload Debian. Queste procedure dovrebbero essereseguite manualmente dai mantainers.
Questo capitolo fornisce dellelinee guida su cosa fare in questi casi.
5.9.1
Spostare pacchetti
A volte un pacchetto cambia la propria sezione. Per esempio, unpacchetto dalla sezione ‘nonfree’ potrebbe cambiare la proprialicenza in GPL in una successiva versione, in qual caso il
pacchettodovrebbe essere spostato in ‘main’ oppure ‘contrib’.1
Se devi cambiare la sezione di uno dei tuoi pacchetti, cambia leinformazioni di controllo
del pacchetto per posizionarlo sella sezionedesiderata, e invialo nuovamente in upload (vedi laPolicy Debian (http://www.debian.org/doc/debian-policy/) per i dettagli).Se
la tua nuova sezione è valida, sarà spostato automaticamente.Se ciò non accade, contatta gli
ftpmasters per comprendere cosa èsuccesso.
Se, d’altro canto, devi cambiare la subsection di uno deituoi pacchetti (p.es. “devel”, “admin”),la procedura è leggermentediversa. Correggi la sottosezione come appare nel file di
controllodel pacchetto, e invialo nuovamente in upload. In aggiunta, avraibisogno di far sì che
il file override venga aggiornato, come descrittoin ‘Specificare sezione, sottosezione e priorità
del pacchetto’ a pagina 40.
5.9.2
Rimuovere pacchetti
Se per qualche ragione vuoi completamente rimuovere un pacchetto (perdire, se è una
vecchia libreria di compatibilità che non è piùnecessaria), devi mandare un bug contro
ftp.debian.orgchiedendo che il pacchetto venga rimosso. Assicurati di indicare daquale
distribuzione debba venire rimosso il pacchetto. Normalmente,puoi rimuovere pacchetti solo
da unstable ed experimental.I pacchetti non vengono rimossi da testing direttamente.Piuttosto,
verranno automaticamente rimossi dopo che il pacchettosia stato rimosso da unstable e nessun
pacchetto dipenda daesso.
Devi anche giustificare la richiesta spiegandone in dettaglio idettagli. Ciò per evitare rimozioni
indesiderate e tenere traccia delperchè un pacchetto è stato rimosso. Per esempio, puoi fornire
ilnome del pacchetto che sostituisce quello da rimuovere.
Di solito puoi chiedere la rimozione solo di un pacchetto mantenuto date stesso. Se vuoi
rimuovere un altro pacchetto, devi ottenerel’autorizzazione del suo mantainer.
Se sei in dubbio sul fatto che un pacchetto sia disponibileo meno, manda un email
a <[email protected]> chiedendo altreopinioni. È inoltre interessante il programmaapt-cache del pacchetto apt.Quando viene lanciato come apt-cache
1
Vedi la Policy Debian (http://www.debian.org/doc/debian-policy/)per le linee guida su a quale
sezione appartiene un pacchetto.
Capitolo 5. Gestire i pacchetti
50
showpkgpackage, il programma mostrerà i dettagli dipackage, incluse le dipendenze inverse.
La rimozionedei pacchetti abbandonati è discussa su <[email protected]>.
Una volta che il pacchetto è stato rimosso, bisognerebbe gestirne ibug. Dovrebbero o essere riassegnati a un altro pacchetto nel casoin cui il codice reale si sia evoluto in un altro
pacchetto (p.es.libfoo12 è stato rimosso perchè libfoo13 losostituisce) oppure chiusi se
semplicemente il software non fa piùparte di Debian.
Rimuovere pacchetti da Incoming
In passato, era possibile rimuovere pacchetti da incoming.Comunque, con l’introduzione del
nuovo sistema di incoming, ciò non èpiù possibile. Piuttosto, devi inviare in upload una nuova
revisione deltuo pacchetto con una versione superiore a quella del pacchetto che haiintenzione di sostituire. Entrambe le versioni verranno installateall’interno dell’archivio ma solo la
versione più alta sarà realmentedisponibile in unstable, siccome la versione precedente saràimmediatamente sostituita dalla più alta. Comunque, se controllicorrettamente i tuoi pacchetti, il
bisogno di sostituire un pacchettonon dovrebbe succedere troppo spesso.
5.9.3
Rimpiazzare o rinominare pacchetti
Quando sbagli a dare il nome al tuo pacchetto, dovresti seguire un processocomposto da
due fasi per rinominarlo. Prima di tutto, imposta il tuo filedebian/control per sostituire ed essere in conflitto con il nome obsoleto del pacchetto(vedi la Policy Debian (http:
//www.debian.org/doc/debian-policy/) per idettagli). Una volta che hai effettuato
l’upload del pacchetto e che ilpacchetto stesso è stato spostato nell’archivio, invia un bug controftp.debian.org chiedendo di rimuovere il pacchetto con ilnome vecchio. Allo stesso
tempo non dimenticare di riassegnarepropriamente i bug del pacchetto.
Altre volte, puoi commettere uno sbaglio mentre costruisci il tuopacchetto e volerlo sostituire. Il solo modo di farlo è di aumentareil numero di versione è inviare in upload una nuova
versione. La vecchiaversione scadrà nel solito modo. Nota che questo si applica in ogniparte
del tuo pacchetto, sorgenti compresi: se vuoi rimpiazzare latarball dei sorgenti upstream del
tuo pacchetto, dovrai inviarlo inupload con una versione differente. Una semplice possibilità è
disostituire foo_1.00.orig.tar.gz confoo_1.00+0.orig.tar.gz. Questa restrizione
dà a ogni filesul sito ftp un nome unico, cosa che aiuta ad assicurare consistenzaattraverso la
rete dei mirror.
5.9.4
Abbandonare un pacchetto
Se non sei più in grado di mantenere un pacchetto, devi informare glialtri di questo, e vedere che il pacchetto sia marcato come orphaned.Dovresti impostare il mantainer del pacchetto a Debian QA Group<[email protected]> e inviare un bug report contro
il pseudo-pacchettownpp. Il bug report dovrebbe essere intitolatoO: package -- short
descriptionindicando che il pacchetto è ora abbandonato. La severità del bug dovrebbeessere impostata a normal. Se pensi che sia necessario, mandaneuna copia a <debian-devel@
Capitolo 5. Gestire i pacchetti
51
lists.debian.org> mattendo l’indirizzo nell’headerX-Debbugs-CC: del messaggio (no,
non usare CC:, in quel modo l’oggettodel messaggio non indicherà il numero del bug).
Se il pacchetto è specialmente cruciale per Debian, dovresti invece mandareun bug contro wnpp e intitolarlo: RFA: package-- short description e impostarne la severità
aimportant. RFA sta per Request For Adoption(richiesta di adozione). In questo caso mandane
certamente una copia adebian-devel, come descritto poc’anzi.
Leggi le istruzioni sulle pagine web WNPP (http://www.debian.org/devel/wnpp/)per
ulteriori informazioni.
5.9.5
Adottare un pacchetto
Una lista dei pacchetti che necessitano un nuovo mantainer è disponibilenella lista dei pacchetti futuri e in bisogno di lavoro (WNPP) (http://www.debian.org/devel/wnpp/). Se
vuoi prenderti in carica la manutenzione di qualsiasi pacchettoelencato nella WNPP, per favore
guarda la succitata pagina perinformazioni e conoscere le procedure da seguire.
Non è corretto semplicemente rilevare un pacchetto che pensi siatrascurato — questo sarebbe un hijacking di pacchetti. Puoicertamente contattare il mantainer corrente e chiedergli se
puoiprendere il pacchetto sotto la tua custodia. Se hai delle ragioni percredere che un mantainer è andato “AWOL” (absent without leave), vedi ‘Trattare con mantainer inattivi e/o
irraggiungibili’ a pagina 75.
Generalmente, non puoi prendere il possesso del pacchetto senza ilconsenso del mantainer
corrente. Anche se ti ignorano, non ci sonolo stesso le basi per rilevare un pacchetto. Le
lamentele sui mantainerdovrebbero essere fatte sulla mailing list degli sviluppatori. Se ladiscussione non si conclude in modo positivo, e il problema è di naturatecnica, considera la possibilità di portarlo all’attenzione delcomitato tecnico (vedi la pagina web del comitato tecnico
(http://www.debian.org/devel/tech-ctte) per ulteriori informazioni).
Se rilevi un vecchio pacchetto, probabilmente vuoi essere elencatocome il mantainer ufficiale del pacchetto nel sistema dei bug.Questo avverrà automaticamente una volta che effettui
un upload di unanuova versione con il campo Maintainer: aggiornato, anche seci vorrà
qualche ora dopo che l’upload è stato fatto. Se non ti aspettidi effettuare alcun upload di una
nuova versione per un po’ di tempo,puoi usare ‘Il sistema di tracciamento dei pacchetti’ a pagina 26 per ottenere i bug report.Assicurati comunque che il vecchio mantainer non abbia dei
problemia continuare a ricevere i bug durante quel periodo.
5.10
Porting
Debian supporta sempre più architetture. Anche se non sei un porter,e usi una sola architettura, fa parte dei tuoi doveri di mantaineressere conscio dei problemi relativi alla portabilità.
Quindi, anchese non sei un porter, dovresti comunque leggere buona parte di questoparagrafo.
Il porting è l’atto di costruire pacchetti Debian per architetturediverse da quella originaria del
mantainer del pacchetto binario.È un’attività unica ed essenziale. Infatti, i porter effetuanola
Capitolo 5. Gestire i pacchetti
52
maggior parte della compilazione reale di pacchetti Debian. Peresempio, per ogni singolo
pacchetto binario per i386,deve esserci una ricompilazione per ogni architettura, il chesignifica
12 ulteriori build.
5.10.1
Essere cortesi con i porter
I porters hanno un compito difficile e unico, dovendo avere a che farecon un grande numero
di pacchetti. Idealmente, ogni pacchetto sorgentedovrebbe riuscire nel build al primo colpo. Sfortunatamente ciò spessonon accade. Questa sezione contiene una lista di errori <–
FIXME:era gotchas –> commessi di frequente dai mantainer Debian —problemi comuni che
spesso pesanosui porter e rendono il loro lavoro inutilmente difficile.
La prima e più importarte cosa è rispondere velocemente ai bug oproblemi sollevati dai porter.
Per favore sii cortese con i porter,come se fossero co-mantainer del tuo pacchetto (e in un certo
sensolo sono). Per favore sii tollerante con bug report succinti o persinonon chiari, fa del tuo
meglio per ricercare cosa sia il problema.
Ad oggi, la maggior parte dei problemi incontrati dai porter sonocausati da bug di pacchettizzazione nei pacchetti sorgenti.Ecco una lista di cose che dovresti controllare o esserne a
conoscenza.
1 Assicurati che i settaggi Build-Depends eBuild-Depends-Indep nel tuo debian
/controlsiano correttamente impostati. Il miglior modo per assicurarseneè quello di usare il pacchetto debootstrap percreare un ambiente chroot unstable (vedi
‘debootstrap’ a pagina 83).All’interno di quell’ambiente chroot, installa il pacchettobuild-essential e tutte le dipendenzemenzionate nei campi Build-Depends
e/oBuild-Depends-Indep. Dopodichè prova a fare il build deltuo pacchetto all’interno di quell’ambiente chroot. Questoprocedimento può essere automatizzato tramite l’uso del programmapbuilder il quale è fornito dal pacchetto omonimo(vedi ‘pbuilder’
a pagina 83).
Se non puoi impostare un chroot corretto, dpkg-depcheckpuò aiutarti (vedi
‘dpkg-depcheck’ a pagina 85).
Vedi la Policy Debian (http://www.debian.org/doc/debian-policy/) peristruzioni su come impostare le dipendenze di build.
2 Non impostare “architecture” a un valore diverso da “all” o “any”a meno che tu non
sappia cosa stai facendo. In troppi casi i mantainernon seguono le istruzioni della Policy Debian (http://www.debian.org/doc/debian-policy/). Impostare la tua
architettura a “i386”è generalmente sbagliato.
3 Assicurati che il tuo pacchetto sorgente sia corretto.
Lanciadpkg-source -x
package.dsc per essere sicuroche il tuo pacchetto sorgente si decomprima correttamente. Dopodichè,da lì, prova a effettuare il build del tuo pacchetto da zero
condpkg-buildpackage.
4 Assicurati di non inserire nel pacchetto sorgente i filedebian/files o debian
/substvars.Questi file dovrebbero essere rimossi dal target ‘clean’ didebian/rules.
Capitolo 5. Gestire i pacchetti
53
5 Assicurati di non fare affidamento su programmi installati in localeo su particolari configurazioni. Per esempio,non dovresti mai chiamare programmi in /usr/local/bin
osimili. Prova a non fare affidamento a programmi impostati in modospeciale. Prova a
fare il build del tuo pacchetto su un altra macchina,anche se della stessa architettura.
6 Non dipendere dal fatto che il pacchetto che stai costruendo sia giàinstallato (un sottocaso del problema sopra descritto).
7 Non dipendere se possibile dal fatto che il compilatore sia di unacerta versione. Se
non è possibile, assicurati che le tue dipendenzedi build rifletta la restrizione, anche
se stai probabilmente cercandodei guai, siccome a volte architetture diverse hanno dei
compilatoristandard diversi.
8 Assicurati che il tuo debian/rules contenga separatamente i target “binary-arch” e
“binary-indep”, come richiede la Policy Debian.Assicurati che i due target lavorino in
modo indipendente tra diloro, il che significa che si possa invocarne uno senza prima
averinvocato l’altro. Per provarlo, prova a lanciaredpkg-buildpackage -B.
5.10.2
Linee guida per gli upload dei porter
Se il pacchetto effettua il build senza problemi sull’architetturasu cui si deve fare il porting, sei
fortunato e il tuo lavoro sarà facile.Questa sezione si applica per questi casi; descrive come fare
il builde l’upload del tuo pacchetto binario in modo che sia propriamente installatonell’archivio. Se devi apportare delle correzioni al pacchetto per farein modo che possa essere compilato
per l’altra architettura, stai inrealtà effettuando un NMU, qundi devi invece consultare ‘Come
fare un NMU di sorgenti’ a pagina 58.
Per un upload del porter, non si apporta alcuna modifica al sorgente.Non hai bisogno di toccare
nessuno dei file nel pacchetto sorgente.Ciò include anche debian/changelog.
Il
modo
invocare
dpkg-buildpackage
èdpkg-buildpackage -B
-mporter-email.Ovviamente imposta porter-email con il tuo indirizzoemail. Questo
effettuerà il build binario solo per le parti del pacchettodipendenti dall’architettura, usando il
target ‘binary-arch’in debian/rules.
Ricompilazione di NMU esclusivamente binari
A volte l’upload iniziale del porter è problematico in quanto l’ambientein cui è stato costruito il pacchetto non è abbastanza buono (librerievecchie o obsolete, cattivo compilatore, . . . ).In
tal caso potresti semplicemente doverlo ricompilare in un ambienteaggiornato. In questo caso, devi incrementare il numero di versione, inmodo che il vecchio pacchetto non funzionante possa essere rimpiazzatonell’archivio Debian (katie si rifiuta di installare nuovipacchetti
se non hanno un numero di versione maggiore rispetto a quellocorrentemente disponibile).
Nonostante le modifiche richieste al changelog,queste sono chiamate NMU solo binari — in
questo caso non c’è bisognodi fare scattare tutte le altre architetture perconsiderarsi superate o
richiederne la ricompilazione.
Capitolo 5. Gestire i pacchetti
54
Tali ricompilazioni richiedono una speciale “magica” numerazione diversione, in modo che
gli strumenti di manutenzione dell’archivioriconoscano che, sebbene ci sia una nuova versione Debian, non esisteun corrispondente aggiornamento dei sorgenti. Se sbagli, i mantainerdell’archivio respingeranno il tuo upload (dovuto alla mancanza delcorrispondente codice
sorgente).
La “magia” per un NMU solo di ricompilazione viene fatta scattareusando il numero di terzo
livello sulla parte Debian del numero diversione. Per esempio, se stai ricompilando la versione
“2.9-3”,il tuo NMU dovrebbe avere versione “2.9-3.0.1”. Se l’ultima versioneera“3.4-2.1”, il tuo
NMU dovrebbe avere il numero di versione“3.4-2.1.1”.
Quando fare un NMU di sorgenti se sei un porter
I porter che effettuano un NMU di sorgenti seguono generalmente lelinee guida trovate in
‘Non-Maintainer Upload (NMU)’ a fronte, esattamente come gli altri.Comunque, ci si aspetta
che il ciclo di attesa per un NMU sorgentedi un porter sia minore rispetto per uno normale,
siccome i porterdevono far fronte a una grande quantità di pacchetti. Di nuovo,la situazione
cambia dipendentemente dalla distribuzione su cuisi vuole effettuare l’upload.
Comunque, se sei un porter e stai facendo un NMU per ‘unstable’, dovrestiseguire le linee
guida sopra descritte, con due variazioni.Primo, il tempo di attesa accettabile — il tempo tra
quando il bugè inviato al BTS e quando va bene fare un NMU — è di sette giorniper i porter
che lavorano sulla distribuzione unstable. Questo periodopuò essere accorciato se il problema
è critico e ostacola l’attivitàdi porting, a discrezione del gruppo dei porter. (Ricorda, niente
ditutto ciò è Policy, ma solo accordi sulle linee guida.)
Secondo, i porter che effettuano NMU di sorgenti dovrebbero assicurarsiche il bug che inviano
al BTS dovrebbe essere di severità ‘serious’ omaggiore. Ciò assicura che un singolo pacchetto
sorgente possa esserecompilato su tutte le architetture supportate da Debian al tempo delrilascio. È molto importante il fatto di avere una versione delpacchetto binario e sorgente per tutte
le architetture in modo da soddisfarei requisiti di molte licenze.
I porter dovrebbero provare a evitare patch che girano semplicementeattorno a bug nella versione corrente dell’ambiente di compilazione,del kernel, o delle libc. A volte questi kludgenon
si possono evitare. Se devi girare attorno a bug del compilatoree cose simili, assicurati di definire propriamente il tuo lavoro con#ifdef; inoltre, documenta i kludge che fai in modo che
lagente possa sapere come rimuoverli una volta che il problema esternoè stato risolto.
I porter possono anche avere un posto non ufficiale dove riporre irisultati del proprio lavoro
durante il periodo di attesa. Ciòaiuta gli altri che usano il port a trarne beneficio anche duranteil periodo di attesa. Ovviamente tali locazioni non hanno nessuna’benedizione’ ne riscontro
ufficiale, quindi i clientisono avvisati.
5.10.3
Infrastrutture e automazione nel porting
Esiste un’infrastruttura e diversi strumenti per aiutare ad automatizzareil porting dei pacchetti. Questa sezione contiene una breve vista d’insiemedi questa automazione e di que-
Capitolo 5. Gestire i pacchetti
55
sti strumenti; leggi la documentazione delpacchetto o altri riferimenti per le informazioni
complete.
Mailing list e pagine web
Le pagine web contenenti lo stato di ogni port si trovanoall’indirizzo http://www.debian.
org/ports/.
Ogni port di Debian ha la propria mailing list. La lista delle mailinglist dei porting si
trova all’indirizzo http://lists.debian.org/ports.html.Queste liste sono usate per
coordinare i porter e per mettere in contattogli utenti di un dato port con i porter.
Strumenti dei porter
Le descrizioni dei diversi strumenti per il porting si trovanoin ‘Porting tools’ a pagina 85.
buildd
Il sistema buildd è usato come un sistema distribuitoclient-server di build delle distribuzioni.
Di solito è usato insieme aauto-builders, che sono host “slave” che semplicementecontrollano
e cercano di fare il build automatico dei pacchettidei quali si deve effettuare il porting. Esiste
anche un’interfacciaemail al sistema, che permette ai porter di controllare un pacchettosorgente
(di solito uno di cui non si puo’ ancora fare il buildautomaticamente) e lavorarci sopra.
buildd non è ancora disponibile come pacchetto;comunque, la maggior parte dei porter o
lo stanno correntementeusando o pianificando di usarlo in un futuro non lontano. Il builderreale è pacchettizzato come sbuild, vedi la suadescrizione in ‘sbuild’ a pagina 83.Il sistema buildd completo include anche un certonumero di componenti ancora da pacchettizzare
molto utili che vengonousati continuamente, come andrea e wanna-build.
Una parte delle informazioni prodotte da buildd che sonogeneralmente utili ai porter sono disponibili sul web all’indirizzo http://buildd.debian.org/. Queste informazioni includono le informazioni aggiornategiornalmente da andrea (dipendenze deisorgenti) e
quinn-diff (pacchetti che necessitano unaricompilazione).
Siamo abbastanza fieri di questo sistema, siccome ha tanti usi possibili.Gruppi di sviluppatori
indipendenti possono usare il sistema per diversevarianti secondarie di Debian, che possono essereo meno di interesse generale (per esempio, una versione di Debian costruitacon il
bound-checking di gcc). Renderà inoltre Debian ingrado di ricompilare velocemente intere
distribuzioni.
5.11
Non-Maintainer Upload (NMU)
In certe circostanze è necessario per qualcuno che non sia il mantainerufficiale del pacchetto
effettuarne una release. Questoè chiamato un non-maintainer upload, in breve NMU.
Capitolo 5. Gestire i pacchetti
56
I porter Debian, i quali compilano i pacchetti per differentiarchitetture, effettuano occasionalmente dei NMU solo binari comeparte della loro attività di porter (vedi ‘Porting’ a pagina 51).Un altra ragione per cui vengono fatti dei NMU è quando unosviluppatore Debian
necessita di correggere pacchetti di altrisviluppatori in modo da indirizzare seri problemi di
sicurezza obug paralizzanti, specialmente durante il periodo di freeze, o quandoil mantainer
del pacchetto non è in grado di risolvere il problemain tempi ragionevoli.
Questo capitolo contiene informazioni che forniscono le linee guidasu quando e come dovrebbero essere fatti i NMU. Una distinzionefondamentale è fatta tra NMU di sorgenti e solo binari,
spiegatanella prossima sezione.
5.11.1
Terminologia
Ci sono due nuovi termini usati all’interno di questa sezioni:“NMU solo binari” e “NMU di
sorgenti”. Questi termini vengonousati con dei significati tecnici specifici in tutto questo documento.NMU di sorgenti e solo binari sono simili tra loro, siccome implicanoentrambi un
upload di un pacchetto da uno sviluppatore che non è ilmantainer ufficiale del pacchetto. Ecco
perchè è unnon-maintainer upload.
Un NMU di sorgenti è un upload di un pacchetto fatto da uno sviluppatoreche non è il mantainer ufficiale del pacchetto, fatto per risolvereun baco del pacchetto. Gli NMU di sorgenti implicano sempre dellemodifiche al sorgente (anche se è solo una modifica aldebian/changelog).
Cio può essere sia una modifica alsorgente upstream o una modifica alla parte Debian del sorgente.Nota, comunque, che NMU di sorgenti possono anche includere pacchettidipendenti
dall’architettura, così come una diff Debian aggiornata.
Un NMU solo binario è una ricompilazione e upload di un pacchettobinario per una certa
architettura. Di solito è parte di un lavorodi porting. Un NMU solo binario è un upload,
non effettuato dal suomantainer, della versione binaria del pacchetto, senza che sianorichieste
modifiche ai sorgenti. Ci sono diversi casi in cui i porterdevono risolvere dei problemi nei
sorgenti per farli compilare nellaloro architettura; questo sarebbe considerato un NMU di sorgentipiuttosto che un NMU solo binario. Come puoi vedere, non facciamoalcuna distinzione
nella terminologia tra NMU di porter e NMU nondi porter.
Entrambe le classi di NMU, di sorgenti e solo binari, possono essereriferite con il termine generico “NMU”. Ciò nonostante, questo causaspesso confusione, in quanto per molta gente
“NMU” significa “NMUdi sorgenti”, quindi è meglio fare attenzione. In questo capitolo, seusiamo il termine generico “NMU” ci riferiamo a qualunque tipo dinon-mantainer upload, che
sia di entrambi (sorgenti e binari) o solodi binari.
5.11.2
Chi può fare un NMU
Solo i mantainer Debian ufficiali e registrati possono fare NMU binario di sorgenti, Un mantainer ufficiale è qualcuno che ha la sua chiavenel keyring Debian. I non sviluppatori, comunque,
sono incoraggiati ascaricare il pacchetto sorgente e iniziare a lavorarci su per risolverei problemi; comunque, piutosto che fare un NMU, dovrebbero semplicementeinviare patch al sistema
di tracciamento dei bug. I mantainer quasi sempreapprezzano le patch di qualità e i bug report.
Capitolo 5. Gestire i pacchetti
5.11.3
57
Quando fare un NMU di sorgenti
Le linee guida su quando fare un NMU di sorgenti dipendono dalladistribuzione bersaglio, ovvero stable, unstable o experimental.I porter hanno delle regole leggermente differenti rispetto
ai non-porter, a causa delle loro circostanze uniche (vedi‘Quando fare un NMU di sorgenti se
sei un porter’ a pagina 54).
Quando viene trovato un bug di sicurezza, il team di sicurezzapuò effettuare un NMU. Per
favore vedi ‘Gestire i bug di sicurezza’ a pagina 44per ulteriori informazioni.
Durante il ciclo di rilascio (vedi ‘Stable, testing e unstable’ a pagina 20),gli NMU che sistemano
bug di sicurezza di severità uguale o maggiorea serious sono incoraggiati e accettati. Anche
in questo caso dovresticomunque adoperarti per contattare il mantainer del pacchetto; potrebbestare giusto per inviare in upload un fix per il problema. Come perqualunque NMU di
sorgenti, devono essere seguite le linee guida in‘Come fare un NMU di sorgenti’ nella pagina
successiva. Si fanno eccezioni speciali per ‘Bug squashing party’ a pagina 74.
Upload di fix per bug in unstable dovrebbero essere fatti solo rispettandoquesto protocollo:
• Assicurati che i bug a cui è indirizzato a risolvere il NMU sono tuttischedati nel sistema
di tracciamento dei bug (BTS). Se non lo sono,inviali immediatamente.
• Aspetta qualche giorno la risposta dal mantainer. Se non ricevi alcunarisposta, puoi se
vuoi aiutarli inviando la patch che sistema il bug.Non dimenticare di marcare il bug con
la parola chiave “patch”.
• Aspetta ancora qualche giorno. Se ancora non ricevi risposta dalmantainer, scrivigli una
email annunciando la tua intenzione difare un NMU sul pacchetto. Prepara un NMU
come descritto in‘Come fare un NMU di sorgenti’ nella pagina successiva, controllalo
attentamente sulla tua macchina(vedi ‘Controllare il pacchetto’ a pagina 34).Controlla
doppiamente che la tua patch non abbia alcun inaspettatoeffetto collaterale. Assicurati
che la tua patch sia più piccola enon distruttiva possibile.
• Invia il pacchetto in upload a incoming in DELAYED/7-day(vedi ‘Incoming ritardato’ a
pagina 25), manda la patch definitiva al mantainervia BTS e spiegagli che hanno 7 giorni
per reagire se vogliono cancellarel’NMU.
• Segui quello che accade, sei responsabile per qualsiasi bug tu abbiaintrodotto con il tuo
NMU. Probabilmente dovresti usare ‘Il sistema di tracciamento dei pacchetti’ a pagina 26
(PTS) per essere informato dello stato delpacchetto dopo il tuo NMU.
A volte, il release manager di un gruppo organizzato di sviluppatori puòannunciare un certo
periodo di tempo in cui le regole sugli NMU vengonorese meno severe. Questo di solito implica l’accorciamento del periododi attesa che precede l’invio dei fix e del periodo DELAYED.
È importantenotare che anche durante i cosiddetti “bug squashing party”, colui cheesegue
l’NMU deve prima inviare i bug e contattare lo sviluppatore e poiagire.
Capitolo 5. Gestire i pacchetti
5.11.4
58
Come fare un NMU di sorgenti
Ciò che segue si applica ai porter finchè giocano il doppio ruolo dibug-fixer e porter di pacchetti. Se un porter deve modificare l’archiviodei sorgenti Debian, il suo upload è automaticamente
un NMU di sorgentied è soggetto alle sue regole. Se un porter sta solo inviando in uploadun
pacchetto binario ricompilato, le regole sono differenti; vedi‘Linee guida per gli upload dei
porter’ a pagina 53.
Prima di tutto è essenziale che le patch NMU dovrebbero essere menodistruttive possibile per
i sorgenti. Non fare dell’housekeeping ditask , non cambiare il nome dimoduli o di file, non
spostare directory; in generale, non aggiustareniente che non sia rotto. Rendi la patch più piccola possibile. Seci sono cose che esteticamente non ti piacciono, parlane al mantainerDebian,
parlane al mantainer upstream, o riporta un bug. In ogni caso,modifiche estetiche non devono
essere fatte in un non-maintainerupload.
Numerazione versioni NMU di sorgenti
Ogni volta che fai delle modifiche ad un pacchetto, anche banali,devi cambiare il numero di
versione. Questo permette al nostro sistemadi funzionare.
Se stai facendo un non-maintainer upload (NMU), dovresti aggiungereun nuovo numero di
versione minore alla parte debian-revisiondel numero di versione (la parte dopo l’ultimotrattino). Questo numero extra minore comincerà da ‘1’. Per esempio,considera il pacchetto ‘foo’,
che è alla versione 1.1-3. Nell’archivio,il file di controllo del sorgente del pacchetto sarebbefoo_1.1-3.dsc. La versione upstream è ‘1.1’ e la revisioneDebian è ‘3’. Il successivo NMU
aggiungerebbe un nuovo numero minore ‘.1’alla revisione Debian; il nuovo file di controllo del
sorgente sarebbefoo_1.1-3.1.dsc.
Il numero minore della revisione Debian serve per evitare di rubareuno dei numeri di versione
dei mantainer del pacchetto, che potrebbedistruggere il loro lavoro. Ha anche il vantaggio
di renderevisibilmente chiaro che un pacchetto nell’archivio non è stato fattodal mantainer
ufficiale.
Se non c’è nessuna componente debian-revision nel numero diversione ne dovrebbe essere creata una, cominciando da ‘0.1’. Se èassolutamente necessario per qualcuno che non sia il solito
mantainerrilasciare una release basata su una nuova versione upstream, questapersona dovrebbe cominciare con il valore debian-revision a‘0.1’. Il mantainer ufficiale di un pacchetto
dovrebbe cominciare lasua numerazione debian-revision con ‘1’.
Gli NMU di sorgenti devono avere una nuova voce di changelog
Un non-mantainer che fa un NMU di sorgenti deve creare una voce dichangelog, descrivendo
quali bug sono sistemati dal NMU, e generalmenteperchè era richiesto un NMU e cosa ha risolto. La voce di changelogavrà l’indirizzo email del non-mantainer nella voce di log e ilnumero
della versione del NMU in essa.
Per consuetudine, le voci di changelog degli NMU di sorgenti comincianocon la linea
Capitolo 5. Gestire i pacchetti
59
* Non-maintainer upload
NMU di sorgenti e il sistema di tracciamento dei bug
I mantainer diversi dal mantainer ufficiale del pacchetto dovrebberofare meno modifiche possibili al pacchetto, e dovrebbero sempre mandareuna patch nel formato “unified context diff”
(diff -u) spiegandoi dettagli delle loro modifiche al sistema di tracciamento dei bug.
E se stai semplicemente ricompilando il pacchetto? Se hai solo bisognodi ricompilarlo per una
singola architettura puoi fare un NMU solobinario come descritto in ‘Ricompilazione di NMU
esclusivamente binari’ a pagina 53 il che nonrichiede l’invio di alcuna patch. Se vuoi che il
pacchetto vengaricompilato per tutte le architetture, fai un NMU di sorgenti comeal solito e
dovrai spedire una patch.
Se il NMU (non-mantainer upload) di sorgenti risolve qualche bugesistente, tali bug piuttosto
che essere chiusi dovrebbero esseremarcati come fixed nel sistema di tracciamento dei bug.Per
convenzione, solo il mantainer ufficiale del pacchetto o chiha originariamente riportato il bug
sono autorizzati a chiuderebug. Fortunatamente il sistema dell’archivio Debian riconosce iNMU e quindi marca appropriatamente i bug sistemati dal NMU sechi lo ha inviato ha elencato
tutti i bug nel changelog con lasintassi Closes: bug#nnnnn(vedi‘Quando i bug vengono
chiusi da nuovi upload.’ a pagina 44 per ulteriori informazioni su comechiudere bug attraverso il changelog). Marcare i bug fixedassicura che tutti sappiano che il bug è stato risolto
in un NMU;comunque il bug è lasciato aperto finche le modifiche fatte nelNMU non siano
ufficialmente incorporate nel pacchetto dal suomantainer ufficiale.
Inoltre, dopo aver fatto un NMU, devi aprire un nuovo bug e includereuna patch mostrando
tutte le modifiche che hai apportato. In alternativapuoi mandare quelle informazioni ai bug
esistenti che sono stati sistematidal tuo NMU. Il mantainer normale o applicherà la patch o
impiegherà unmetodo alternativo per risolvere il problema. A volte i bug sono sistematia
monte in modo indipendente, che è un altra buona ragione per annullarele modifiche fatte
dalla patch NMU. Se il mantainer decide di non applicarela patch NMU ma di rilasciare una
nuova versione, egli deve assicurarsi chela nuova versione upstream risolva sul serio ogni
problema che è statosistemato nella release del non-mantainer.
In aggiunta, il mantainer normale dovrebbe sempre conservarela voce nel changelog che
documenta il non-mantainer upload.
Costruire NMU di sorgenti
I NMU di sorgenti dei pacchetti sono costruiti normalmente. Scegliuna distribuzione usando
le stesse regole trovate in ‘Scegliere la distribuzione’ a pagina 36, segui le altre prescrizioni in
‘Effetuare un upload’ a pagina 37.
Assicurati di non cambiare il valore del mantainer nelfile debian/control. Il tuo nome come
dato nella vocedel NMU del file debian/changelog sarà usato per firmareil file changes.
Capitolo 5. Gestire i pacchetti
5.11.5
60
Riconoscere un NMU
Se viene effettuato un NMU su uno dei tuoi pacchetti, devi incorporarele modifiche nella tua
copia dei sorgenti. Questo è facile, devi soloapplicare la patch che ti è stata spedita. Una volta
che l’hai fatto,devi chiudere i bug che sono stati marcati come fixed dal NMU. Puoichiuderli o
manualmente mandando le mail richieste al BTS o aggiungendole richieste closes: #nnnn
nella voce del changelog del tuoprossimo upload.
In ogni caso, non dovresti essere arrabbiato per il NMU. Un NMU non èun attacco personale
nei confronti del mantainer, è una prova chequalcuno tiene abbastanza al pacchetto da volerti
aiutare nel tuolavoro, quindi dovresti esserne grato. Potresti anche volerglichiedere se sarebbero interessati ad aiutarti più frequentemente comeco-mantainer o mantainer di riserva (vedi
‘Manutenzione collaborativa’ in questa pagina).
5.12
Manutenzione collaborativa
“Manutenzione collaborativa” è un termine che descrive la condivisionedei compiti di manutenzione di pacchetti da parte di più persone.Questa collaborazione è quasi sempre una buona
idea, siccome porta auna maggiore qualità e velocizza i tempi di sistemazione dei bug. Èfortemente raccomandato che i pacchetti con una priorità Standardo che fanno parte del sistema
base abbiano dei co-mantainer.
Generalmente c’è un mantainer principale e uno o più co-mantainer. Ilmantainer principale
è la persona il cui nome è elencato nel campoMaintainer del file debian/control. Icomantainer sono tutti gli altri.
Nella sua forma di base, il processo di aggiungere un nuovo co-mantainerè abbastanza
semplice:
• Dai al co-mantainer accesso ai sorgenti da cui costruisci il pacchetto.Generalmente questo implica l’uso di un sistema di controllo di versionenetwork-capable, come CVS o
Subversion.
• Aggiungi il nome e l’indirizzo corretti del maintainer al campoUploaders nella sezione
globale del file debian/control.
Uploaders: John Buzz <[email protected]>, Adam Rex
<[email protected]>
• Usando il PTS (‘Il sistema di tracciamento dei pacchetti’ a pagina 26), i comaintainerdovrebbero iscriversi all’appropriato pacchetto sorgente.
La manutenzione collaborativa spesso può essere ulteriormente facilitatacon l’uso degli
strumenti su Alioth (vedi ‘Debian *Forge: Alioth’ a pagina 30).
61
Capitolo 6
Procedimenti di pacchetizzazione
consigliati
La qualità di Debian è in gran parte dovuta alla policy Debian (http://www.debian.org/
doc/debian-policy/), che definisce degli espliciti requisiti di basea cui tutti i pacchetti
Debian devono conformarsi. C’è anche ormai unpassato di esperienze condivise che vanno
oltre la policy Debian, unaccumulo di anni di esperienza nella pacchettizzazione. Molta gente
digrande talento ha creato strumenti grandiosi, strumenti che aiutano te,il mantainer Debian,
a creare e mantenere pacchetti eccellenti.
Questo capitolo indica alcuni procedimenti consigliati per sviluppatori Debian.Tutti queste
raccomandazioni sono da considerarsi tali, non sono requisiti.Questi sono solo consigli soggettivi, avvisi e puntatori collezionati da sviluppatori Debian. Sentiti libero di scegliere ciò che
ritieni opportuno.
6.1
Procedimenti consigliati per debian/rules
Le seguenti raccomandazioni riguardano il file debian/rules.Considerando che il file
debian/rules controlla il processo di build del pacchetto e seleziona i file che debbono andare nel pacchetto (direttamente o indirettamente), è solitamente il file su cui i maintainerpassano
più tempo.
6.1.1
Script helper
La ragione per cui utilizzare gli script helper in debian/rules è che permettono ai maintainer di usare e condividere una logica comunetra più pacchetti. Si prenda per esempio il
problema di installare deglielementi di menu: è necessario mettere il file in /usr/lib/menu,e
aggiungere comandi ai maintainer script per registrare e eliminare elementidal menu. Visto
che si tratta di una cosa molto comune che i pacchetti fanno,perchè ogni maintainer dovrebbe
Capitolo 6. Procedimenti di pacchetizzazione consigliati
62
riscrivere tutto ciò da solo, a volte con deibug? Inoltre, supponendo che la directory dei menu
cambi, ogni pacchetto dovrebbe essere modificato.
Gli script helper si occupano di queste problematiche. Rispettando leconvenzioni, gli script
helper si prendono cura di tutti i dettagli.I cambiamenti della policy possono essere introdotti
negli script helper;in questo modo è suffigiente ricostruire i pacchetti con la nuova versiondegli
helper e nessun altro cambiamento.
‘Overview of Debian Maintainer Tools’ a pagina 79 contiene un paio di diversi helper. Il sistema (a nostroparere) migliore e più comune è debhelper. I precedenti sistemi, come debmake,
erano “monolitici”:non era possibile scegliere la parte desiderata del sistema ed utilizzarla,si
doveva utilizzare il sistema intero per fare tutto. debhelper,invece, è una raccolta di piccoli
programmi dh_*. Per esempio,dh_installman installa e comprime le pagine di manuale,dh_installmenu installa i file menu e via dicendo. Offre quindiabbastanza flessibilità da
essere in grado di utilizzare i piccoli script helper, quando servono, insieme ad altri comandi
in debian/rules.
Si può iniziare con debhelper leggendodebhelper(1), e seguendo gli esempi forniticon il
pacchetto. dh_make, dal pacchettodh-make (si veda ‘dh-make’ a pagina 82), può essereusato per convertire un pacchetto sorgente “vanilla” in uno che fa usodi debhelper. Questa
scorciatoia, comunque, non dovrebbe convincerti che non hai bisogno di disturbarti a capire i singoli script dh_*. Se userai un helper, hai bisogno diimpararlo, per comprenderne il
comportamento.
Alcuni sono convinti che i normali file debian/rules sianomeglio, visto che non c’è bisogno
di imparare nessun sistema di helper.La scelta dipende completamente da te. Usa il metodo
che preferisci.Molti esempi di debian/rules vanilla sono disponibili suhttp://people.
debian.org/~srivasta/rules/.
6.1.2
Separare le patch in file multipli
Pacchetti grandi e complessi possono avere molti bug su cui lavorare.Correggendo un bug
direttamente nei sorgenti, può diventare difficiledifferenziare le varie patch applicate. Può diventare un bel problemaquando è necessario aggiornare il pacchetto ad un nuovo rilascioupstream che integra alcune delle modifiche (ma non tutte). Non èpossibile prendere l’insieme
totale dei diff (per esempio, da .diff.gz) e trovare in maniera unitaria le patch cherisolvono
bug chiusi dall’upstream.
Sfortunatamente, al momento il sistema di pacchettizzazione non fornisceil supporto per separare le patch in più file. Comunque, ci sono modi perseparare le patch: i file che le contengono
sono inclusi nel file patch Debian (.diff.gz), solitamente nella directory debian/.L’unica differenza è che non vengono applicate immediatamente da dpkg-source,ma dalla regola
build di debian/rules. La regolaclean si occupa di invertire questo comportamento.
dbs è uno degli approcci più comuni a questo problema. Consentedi fare tutto quello che è
stato spiegato precedentemente e agevola la creazionee l’aggiornamento di vecchie patch. Si
veda il pacchetto dbs per ulteriori informazioni e hello-dbs come esempio.
Capitolo 6. Procedimenti di pacchetizzazione consigliati
63
Anche dpatch ha queste caratteristiche, ma è pensato per essereancora più facile da usare.
Si faccia riferimento al pacchetto dpatch come fonte di documentazione ed esempi (in /usr
/share/doc/dpatch).
6.1.3
Pacchetti binari multipli
Un singolo pacchetto sorgente costruisce spesso più di un pacchettobinario, sia per fornire
più versioni dello stesso software (es.,il pacchetto sorgente di vim) o per dividere ungrosso
pacchetto in pacchetti più piccoli (es., se l’utente può installare solo il sottoinsieme di pacchetti
di cui ha bisogno, risparmiando un po’ di spazio disco).
La seconda situazione può essere trattata facilmente in debian/rules.Semplicemente, è necessario spostare i file appropriati dalla directory di build negli alberi temporanei dei pacchetti. Per farlo si possonousare install oppure dh_install, dal pacchetto debhelper.
Ci si assicuri di controllarecome interagiscono i vari pacchetti, assicurandosi di avere le
correttedipendenze tra pacchetti in debian/control.
Il primo caso è un pochino più difficile visto che coinvolge ricompilazioni multiple dello stesso
software ma con opzioni di configurazionedifferenti. Il pacchetto sorgente di vim è un esempio
dicome gestire questa situazione usando un file debian/rulesscritto a mano.
6.2
Procedimenti consigliati per debian/control
I consigli seguenti sono relativi al file debian/control. Sono unsupplemento alla Policy
on package descriptions (http://www.debian.org/doc/debian-policy/ch-binary.
html#s-descriptions).
La descrizione del pacchetto, definita dal campo corrispondente del filecontrol, contiene sia
la descrizione breve (synopsis) che quella lunga del pacchetto. ‘Linee guida generiche per le
descrizioni dei pacchetti’ in questa pagina descrive alcune lineeguida applicabili ad entrambe.‘La sinossi del pacchetto, o descrizione breve’ nella pagina seguente fornisce consigli specifici alla descrizione breve,mentre ‘La descrizione lunga’ a pagina 65 contiene consigli relativi
alla descrizione lunga.
6.2.1
Linee guida generiche per le descrizioni dei pacchetti
La descrizione di un pacchetto dovrebbe essere scritta pensando alprobabile utente medio,
la persona media che userà e trarrà beneficiodal pacchetto. Per esempio, pacchetti di sviluppo sono per glisviluppatori, e possono presentare un linguaggio tecnico. Altregeneriche
applicazioni, come gli editor, dovrebbero essere scritti perun utente meno tecnico.
La nostra revisione delle descrizioni dei pacchetti ci ha portatoa concludere che molte descrizioni dei pacchetti sono tecniche,il che significa che non sono scritte per avere un senso per
gliutenti non esperti. A meno che il tuo pacchetto sia realmente soloper utenti esperti, questo
è un problema.
Capitolo 6. Procedimenti di pacchetizzazione consigliati
64
Come puoi scrivere per utenti non tecnicamente esperti? Evita iljargon. Evita di riferirti ad
altre applicazioni o framework con iquali l’utente potrebbe non essere familiare — “GNOME” o “KDE”vanno bene, siccome questi termini sono probabilmente familiari agliutenti, ma
“GTK+” probabilmente no. Prova a non assumere nessunaconoscenza in assoluto. Se devi
usare termini tecnici, introducili.
Sii obiettivo. Le descrizioni dei pacchetti non sono il posto perpromuovere il tuo pacchetto,
non importa quanto ci tieni. Ricordache al lettore potrebbero non importare le stesse cose a cui
tieni.
Riferimenti ai nomi di qualunque altro software, pacchetto, nome diprotocollo, standard
o specifica dovrebbero usare le loro formecanoniche, se esistono. Per esempio, usa “X
Window System”, “X11”oppure “X”; e non non “X Windows”, “X-Windows”, or “X Window”.Usa “GTK+”, non “GTK” o “gtk”. Usa “GNOME”, non “Gnome”. Usa“PostScript”,
non “Postscript” oppure “postscript”.
Se hai problemi a scrivere la tua descrizione, potresti
<[email protected]> e chiedere aiuto.
6.2.2
voleremandarla
a
La sinossi del pacchetto, o descrizione breve
La linea della sinossi (la descrizione breve) dovrebbe essere concisa.Non deve ripetere il nome
del pacchetto (questa è policy).
È una buona idea pensare alla sinossi come una clausola appositivae non come una frase completa. Una clausola appositiva è definita inWordNet come una relazione grammaticale tra
una parola e una conseguentefrase sostantiva, p.es. , “Rudolph the red-nosed reindeer”. Qui
la clausolaappositiva è “red-nosed reindeer”. Siccome la sinossi è una clausola più cheuna
frase completa, la nostra raccomandazione è che non cominci con la letteramaiuscola nè finisca con un punto. Non dovrebbe inoltre cominciare con unarticolo, sia definito (“the”) che
indefinito(“a” oppure “an”).
Potrebbe aiutarti immaginare che la sinossi sia combinata con ilnome del pacchetto nel modo
seguente:
package-name is a synopsis.
Alternativamente, potrebbe avere un senso pensarla come
package-name is synopsis.
oppure, se il nome stesso del pacchetto è plurale (come per esempio“developers-tools”)
package-name are synopsis.
Questo modo di creare una frase dal nome del pacchetto e la sinossidovrebbe essere considerato euristico e non una regola stretta. Cisono alcuni casi in cui non ha senso cercare di formare
una frase.
Capitolo 6. Procedimenti di pacchetizzazione consigliati
6.2.3
65
La descrizione lunga
La descrizione lunga è la principale fonte d’informazioni disponibileall’utente circa un pacchetto prima che lo installi. Dovrebbe forniretutte le informazioni necessarie all’utente per
decidere seinstallare o meno il pacchetto. Assumi che l’utente abbia già lettola sinossi del
pacchetto.
La descrizione lunga dovrebbe consistere in frasi complete.
Il primo paragrafo della descrizione lunga dovrebbe rispondere alleseguenti domande: cosa fa
il pacchetto? Quali compiti aiuta l’utentea svolgere? È importante descrivere ciò in modi non
tecnici,a meno che ovviamente il pacchetto sia destinato proprio a personeesperte.
I paragrafi seguenti dovrebbero rispondere alle seguenti domande: perchèdovrei come utente
avere bisogno di questo pacchetto? Quali altrecaratteristiche ha il pacchetto? Cosa ha in più
o in meno comparatocon altri pacchetti (p.es. “se hai bisogno di X, usa invece Y”)?Questo
pacchetto è correlato ad altri in qualche modo che non possaessere gestito dal manager dei
pacchetti (p.es. “questo è un clientper il server foo”)?
Stai attento ad evitare errori ortografici o grammaticali. Assicuratidi controllarne l’ortografia.
ispell ha un’opzione speciale-g per i file debian/control:
ispell -d american -g debian/control
6.2.4
Home page upstream
Ci raccomandiamo che tu aggiunga l’URL della home page del pacchettoalla sua descrizione in
debian/control. Questa informazionedovrebbe essere aggiunta alla fine della descrizione,
usando il seguenteformato:
.
Homepage: http://some-project.some-place.org/
Nota che gli spazi che precedono la linea, che servono per romperecorrettamente le linee.
Per vedere un esempio di come viene visualizzato,vedi http://packages.debian.org/
unstable/text/docbook-dsssl.html.
Se non c’è nessuna home page per il software, naturalmente non si dovrebbeinserire.
Nota che ci aspettiamo che questo campo venga eventualmente rimpiazzatoda un vero e proprio campo in debian/control riconosciutoda dpkg e packages.debian.org. Se non
hai voglia dispostare la home page dalla descrizione a questo campo, probabilmentedovresti
aspettare finchè detto campo sia disponibile.
6.3
Procedimenti consigliati per debian/changelog
I seguenti procedimenti integrano la Policy dei file changelog (http://www.debian.org/
doc/debian-policy/ch-docs.html#s-changelogs).
Capitolo 6. Procedimenti di pacchetizzazione consigliati
6.3.1
66
Scrivere voci di changelog utili
La voce di changelog per una revisione di un pacchetto documenta lemodifiche effettuate in
quella revisione, e solo quelle. Concentratinel descrivere le modifiche significanti e visibili
dall’utente che sono state fatte dall’ultima versione.
Focalizzati su cosa è stato cambiato — chi, come e quandogeneralmente sono meno importanti.
Detto ciò, ricordati di accreditareeducatamente le persone che hanno fornito un valido aiuto
nel preparareil pacchetto (p.es. chi ha mandato delle patch).
Non c’è bisogno di elaborare le modifiche triviali e ovvie. Puoi ancheunire diverse modifiche
in una sola voce. Dall’altro lato non esseretroppo succinto quando spieghi dei cambiamenti
importanti. Siispecialmente chiaro se ci sono modifiche che influiscono il comportamentodel
programma. Per ulteriori siegazioni, usa il fileREADME.Debian.
Usa l’inglese comune in modo che la maggioranza dei lettori possacomprenderlo. Evita abbreviazioni, gergo tecnico e il jargon quandospieghi modifiche che chiudono bug, specialmente
per bug inviati dautenti che non ti sono sembrati particolarmente esperti. Siieducato, non
rispondere male.
A volte è desiderabile premettere i nomi dei file che sono statimodificati alle voci di changelog. Non c’è comunque bisogno dielencare esplicitamente ogni file modificato, specialmente
sedette modifiche sono piccole o ripetitive. Puoi usare le wildcards.
Quando ti riferisci a bug, non presumere niente. Di quale era ilproblema, e aggiungi la stringa
“closes: #nnnnn”. Vedi‘Quando i bug vengono chiusi da nuovi upload.’ a pagina 44 per
ulteriori informazioni.
6.3.2
Concetti comunemente sbagliati sulle voci di changelog
Le voci di changelog non dovrebbero documentareinformazioni generiche di pacchettizzazione (“Hey, if you’re lookingfor foo.conf, it’s in /etc/blah/.”),siccome gli amministratori e
gli utenti si pensa conoscano almenolontanamente come queste cose vengono generalmente arrangiate neisistemi Debian. Menzionalo, comunque, se cambi la locazione di un file
diconfigurazione.
I bug chiusi con una voce di changelog dovrebbero essere quelli chesono realmente risolti
nella stessa revisione del pacchetto. Chiuderebug nel changelog che non c’entrano nulla è una
cattiva abitudine.Vedi ‘Quando i bug vengono chiusi da nuovi upload.’ a pagina 44.
Le voci di changelog non dovrebbero essere usatiper discutere con chi ha riportato bug (“I
don’t see segfaultswhen starting foo with option bar; send in more info”), frasigeneriche sulla vita, l’universo e altro (“sorry this uploadtook me so long, but I caught the flu”), oppure
chiedere aiuto(“the bug list on this package is huge, please lend me a hand”).Queste cose generalmente non saranno notate da chi vorrestiraggiungere, ma potrebbe irritare persone che
desiderano leggereinformazioni circa le modifiche reali apportate al pacchetto.Vedi ‘Rispondere ai bug’ a pagina 42 per ulteriori informazioni su comeusare il sistema di tracciamento dei
bug.
Capitolo 6. Procedimenti di pacchetizzazione consigliati
67
È tradizione riconoscere i bug risolti tramite non-mantainer upload nella prima voce
dichangelog dell’upload del mantainer, per esempio, in una voce comequesta:
* Maintainer upload, closes: #42345, #44484, #42444.
Questo chiuderà i bug NMU marcati “fixed” quando il pacchettoentrerà in archivio. Nello
stesso modo è possibile chiudere bugriportati perchè è stato fatto un NMU. Certamente è anche
perfettamenteaccettabile chiudere bug risolti da NMU in altri modi; vedi ‘Rispondere ai bug’
a pagina 42.
6.3.3
Errori comuni nelle voci di changelog
Gli esempi seguenti mostrano degli errori comuni o esempi di cattivostile nelle voci di
changelog.
* Fixed all outstanding bugs.
Questo ovviamente non dice agli utenti nulla di utile.
* Applied patch from Jane Random.
Cosa faceva la patch?
* Late night install target overhaul.
Revisione (Overhaul) che ha portato a cosa? Il menzionare latarda notte dovrebbe ricordarci
che non dovremmo fidarci delcodice?
* Fix vsync FU w/ ancient CRTs.
Troppi acronimi, e non è ben chiaro a cosa ci si riferisce,o come è stato aggiustato.
* This is not a bug, closes: #nnnnnn.
Prima di tutto non c’è assolutamente bisogno di fare un uploaddel pacchetto per dare questa informazione; usa invece il sistemadi tracciamento dei bug. Inoltre, non c’è nessuna spiegazione
sulperchè il report non è un bug.
* Has been fixed for ages, but I forgot to close; closes: #54321.
Capitolo 6. Procedimenti di pacchetizzazione consigliati
68
Se per qualche ragione non hai menzionato il numero del bug in una precedentevoce di changelog, non c’è alcun problema, chiudi semplicemente il bugnormalmente tramite il BTS. Non
c’è bisogno di toccare il file di changelog,assumendo che la descrizione del fix sia già dentro (questo si applica ancheai fix dagli autori/mantainer originali, non devi tenere traccia nel
tuochangelog dei bug risolti secoli fa).
* Closes: #12345, #12346, #15432
Dov’è la descrizione? Se non riesci a pensare a un messaggio esplicativo,comincia inserendo il
titolo di ogni diverso bug.
6.4
Procedimenti consigliati per gli script del mantainer
Gli script del mantainer includono i file debian/postinst,debian/preinst, debian
/prerm edebian/postrm. Questi script si prendono cura di ogniimpostazione di installazione o rimozione del pacchetto che non ègestita dalla semplice creazione o cancellazione di file edirectory. Le seguenti informazioni sono un supplemento della Policy Debian
(http://www.debian.org/doc/debian-policy/).
Gli script del mantainer devono essere idempotenti. Ciò significache devi assicurarti che non
capiti nulla di male se lo script vienechiamato due volte quando normalmente dovrebbe essere
chiamato unavolta sola.
Lo standard input e lo standard output possono essere rediretti(p.es. in pipe) a scopo di
logging, quindi non basarti sul fattoche siano delle tty.
Tutti i prompt o configurazioni interattive dovrebbero essere tenutial minimo indispensabile.
Quando è necessario, dovresti usare ilpacchetto debconf per l’interfaccia. In ogni casoricorda
che puoi presentare dei prompt solo nella fase configuredello script postinst.
Tieni gli script del mantainer più semplici possibili. Ti consigliamo diusare script shell POSIX
puri. Ricordati che se hai bisogno di qualisasifunzionalità bash, lo script deve avere una linea bash sh-bang. ShellPOSIX o bash sono preferiti al perl, siccome abilitanodebhelper ad
aggiungere facilmente dei pezzi agli script.
Se modifichi gli script del mantainer, assicurati di testare la rimozionedel pacchetto, la duplice
installazione e il purge. Assicurati che unpacchetto di cui è stato fatto il purge sia completamente sparito, ilche significa che deve rimuovere qualunque file direttamente oindirettamente
creato in qualsiasi script del mantainer.
Se hai la necessità di controllare l’esistenza di un comando, dovrestiusare qualcosa come
if [ -x /usr/sbin/install-docs ]; then ...
Se non vuoi codificare inflessibilmentela path del comando nel tuo script del mantainer, la
seguente funzioneconforme allo standard POSIX può essere d’aiuto:
Capitolo 6. Procedimenti di pacchetizzazione consigliati
69
pathfind() {
OLDIFS="$IFS"
IFS=:
for p in $PATH; do
if [ -x "$p/$*" ]; then
IFS="$OLDIFS"
return 0
fi
done
IFS="$OLDIFS"
return 1
}
Puoi usare questa funzione per cercare la $PATH per il nomedi un comando, passato come argomento. Ritorna true (zero) se il comandoè stato trovato, altrimenti false. Questo è veramente
il modo piùportabile, in quanto command -v, type, ewhich non sono POSIX.
Anche se which è un’alternativa accettabile, essendo provenientedal pacchetto richiesto
debianutils, non risiede nellapartizione di root. In effetti, è in /usr/bin invece che in
/bin, quindi non si può usare in script che sono lanciati primache la partizione /usr sia
montata. Comunque, la maggior partedegli script non avranno questo problema.
6.5
Gestione della configurazione con debconf
Debconf è un sistema di gestione della configurazione chepuò essere usato da tutti i vari
script di pacchettizzazione (principalmentepostinst) per richiedere un feedback dall’utente
che concernecome configurare il pacchetto. Interazioni dirette con l’utente ora devonoessere
evitate in favore di interazioni tramite debconf.Ciò in futuro permetterà installazioni non
interattive.
Debconf è un grande strumento ma spesso è usato in modo povero. Molti erroricomuni sono
elencati nella pagina di manualedebconf-devel(7). È qualcosa che devi necessariamente
leggere se decidi di usare debconf.
6.6
6.6.1
Internazionalizzazione
Gestire le traduzioni di debconf
Come i porter, i traduttori hanno un compito difficile. Lavorano sutanti pacchetti e devono collaborare con molti diversi mantainer.Inoltre, la maggior parte delle volte non parlano
nativamente l’inglesequindi potresti dover essere particolarmente paziente con loro.
Lo scopo di debconf era di rendere la configurazionedi pacchetti più facile sia per i mantainer che per gli utenti.Originalmente, la traduzione dei template di debconf era gestita
Capitolo 6. Procedimenti di pacchetizzazione consigliati
70
condebconf-mergetemplate. Quella tecnica è comunque oramaideprecata; il modo migliore di realizzare l’internazionalizzazione didebconf è quello di usare il pacchettopo-debconf.
Questo metodo è più semplice sia peri mantainer che per i traduttori; vengono forniti degli
script ditransizione.
Usando po-debconf, la traduzione è tenuta in filepo (presi dalle tecniche di traduzione di gettext).File template speciali contengono i messaggi originali e segnano qualimessaggi sono traducibili. Quando cambi il valore di un campotraducibile, lanciando
debconf-updatepo, la traduzione èmarcata che necessita attenzione dai traduttori. Quindi, al tempo dieffettuare il build, il programma dh_installdebconfsi prende cura di tutte
le magie necessarie per aggiungere la templatecon le traduzioni aggiornate nei pacchetti binari.
Per i dettagli, ilriferimento è la pagina di manuale po-debconf(7).
6.6.2
Documentazione internazionalizzata.
L’internazionalizzazione della documentazione è cruciale per gli utenti,ma richiede molto lavoro. Non c’è modo di eliminare tutto quel lavoro, mapuoi rendere le cose più facili ai
traduttori.
Se mantieni della documentazione di qualsiasi dimensione, è più facileper i traduttori se hanno accesso a un sistema di controllo dei sorgenti.Ciò permette ai traduttori di vedere la differenza tra due versioni delladocumentazione, quindi, per esempio, possono vedere cosa ha bisogno diessere nuovamente tradotto.
È raccomandato che la documentazionetradotta mantenga una nota circa su quale revisione del
controllo deisorgenti si basa la traduzione.
Un sistema interessante è fornito da
doc-check (http://cvs.debian.org/boot-floppies/documentation/doc-check?
rev=HEADcontent-type=text/vnd.viewcvs-markup) nel pacchetto boot-floppies,
il quale mostra una vista d’insiemedello stato della traduzione per ogni data lingua, usando
commentistrutturati per la revisione corrente del file che deve essere tradotto e,per un file tradotto, la revisione del file originale su cui è basata latraduzione. Potresti volere adattare e
fornire tutto questo nella tuaarea CVS.
Se mantieni documentazione XML o SGML, ti suggeriamo di isolare qualsiasiinformazione
indipendente dal linguaggio e definirle come entità in unfile separato che è incluso da tutte le
diverse traduzioni. Questo rendemolto più facile per esempio tenere gli URL aggiornati in più
file.
6.7
6.7.1
Situazioni comuni di pacchettizzazione
Pacchetti che usano autoconf/automake
Tenere aggiornati i file di autoconf config.sub econfig.guess è critico per i porter, specialmente per learchitetture più volatili. Qualche procedimento di pacchettizzazione moltobuono per qualunque pacchetto che usa autoconf e/oautomake sono stati sintetizzati in
/usr/share/doc/autotools-dev/README.Debian.gznel pacchetto autotools-dev.
Sei fortemente incoraggiatoa leggere questo file e a seguire le raccomandazioni fornite.
Capitolo 6. Procedimenti di pacchetizzazione consigliati
6.7.2
71
Librerie
Le librerie sono sempre difficili da pacchettizzare per svariate ragioni.La policy impone molte
restrizioni per facilitare la loro manutenzionee per assicurare che gli aggiornamenti vengano effettuati più facilmentepossibile quando una nuova versione upstream viene rilasciata.Un
malfunzionamento in una libreria può provocare il malfunzionamento didozzine di pacchetti
dipendenti.
I procedimenti consigliati per la pacchettizzazione delle libreriesono stati raggruppati ne
la guida della pacchettizazione delle librerie (http://www.netfort.gr.jp/~dancer/
column/libpkg-guide/).
6.7.3
Documentazione
Assicurati di seguire la Policy sulla documentazione (http://www.debian.org/doc/
debian-policy/ch-docs.html).
Se il tuo pacchetto contiene documentazione costruita da XML oSGML, ti raccomandiamo di
non fornire i sorgenti XML o SGML nel o neipacchetti binari. Se gli utenti vogliono i sorgenti
della documentazione,dovrebbero procurarsi il pacchetto sorgente.
La policy specifica che la documentazione dovrebbe essere fornita informato HTML. Noi raccomandiamo anche di fornire documentazione neiformati PDF e puro testo se conveniente e se è possibile ottenereoutput di qualità. Comunque, generalmente non è appropriato
fornireversioni in testo puro di documentazione la cui sorgente è in formatoHTML.
I manuali forniti più importanti dovrebbero registrarsi adoc-base durante l’installazione.
Vedila documentazione del pacchetto doc-baseper ulteriori informazioni.
6.7.4
Tipologie specifiche di pacchetti
Un discreto numero di tipologie specifiche di pacchetti hanno dellesotto-policy speciali e
corrispondenti regole e procedimenti dipacchettizzazione:
• Pacchetti correlati al perl hanno una policy perl (http://www.debian.org/doc/
packaging-manuals/perl-policy/), qualche esempio di pacchetti che seguonotale
policy sono libdbd-pg-perl (modulo perl binario) olibmldbm-perl (modulo perl
indipendente dall’architettura).
• Pacchetti correlati al python hanno la loro policy python; vedi/usr/share/doc
/python/python-policy.txt.gz nel pacchetto python.
• Pacchetti correlati a emacs hanno la policy emacs (http://www.debian.org/doc/
packaging-manuals/debian-emacs-policy).
• Pacchetti correlati a java hanno la loro policy java (http://www.debian.org/doc/
packaging-manuals/java-policy/).
Capitolo 6. Procedimenti di pacchetizzazione consigliati
72
• Pacchetti correlati a ocaml hanno la loro policy, situata in/usr/share/doc/ocaml
/ocaml_packaging_policy.gz nel pacchetto ocaml. Un buonesempio è il pacchetto
sorgente camlzip.
• Pacchetti che forniscono DTD XML o SGML dovrebbero conformarsi alleraccomendazioni nel pacchetto sgml-base-doc.
• Pacchetti lisp dovrebbero registrarsi acommon-lisp-controller, circa il quale vedi
/usr/share/doc/common-lisp-controller/README.packaging.
6.7.5
Dati indipendenti dall’architettura
Non è raro avere un gran numero di dati indipendenti dall’architetturapacchettizati insieme
a un programma. Per esempio, file audio, unacollezione di icone, pattern di sfondo, o altri
file grafici. Se ladimensione di tali dati è trascurabile rispetto alla dimensione delresto del
pacchetto, è probabilmente meglio tenere tutto in un singolopacchetto.
Comunque, se la dimensione dei dati è considerevole, considera lapossibilità di dividerli in
un pacchetto separato e indipendentedall’architettura (“_all.deb”). Facendo questo, eviti un’inutileduplicazione degli stessi dati in undici o più .deb, uno per ogniarchitettura. Mentre ciò
aggiunge un po’ di overhead extra nei filePackages, salva un bel po’ di spazio sui mirror
Debian.Separare i dati indipendenti dall’architettura riduce inoltre il tempodi lavorazione di
lintian o linda (vedi‘Package lint tools’ a pagina 80) quando lanciati sull’intero archivio
Debian.
73
Capitolo 7
Oltre la pacchettizzazione
Debian è molto di più che la semplice pacchettizzazione di sofwaree la manutenzione di tali pacchetti. Questo capitolo contieneinformazioni circa i modi, spesso decisamente critici,
dicontribuire a Debian oltre la semplice creazione e manutenzionedi pacchetti.
Essendo un’organizzazione di volontari, Debian si basa sulladiscrezione dei propri membri
nella scelta di su che cosa voglionolavorare e nella scelta delle cose più importanti sulle quali
impiegareil proprio tempo.
7.1
Riportare bug
Ti incoraggiamo a mandare bug appena ne trovi nei pacchetti Debian.In effetti, gli sviluppatori
Debian sono spesso la prima linea deitester. Trovare e riportare bug nei pacchetti degli altri
svilupatorifa progredire la qualità di Debian.
Leggi le instruzioni per riportare bug (http://www.debian.org/Bugs/Reporting)nel
sistema di tracciamento dei bug (http://www.debian.org/Bugs/) di Debian.
Prova a riportare il bug da un account di utente normale dal qualeti aspetti di ricevere posta,
in modo che la gente possa raggiungertise hanno bisogno di ulteriori informazioni circa il bug.
Noninviare bug come root.
Puoi usare uno strumento come reportbug(1) perriportare bug. Esso può automatizzare e
generalmente facilitare il processo.
Assicurati che il bug non sia già stato riportato a un pacchetto.Ogni
pacchetto
ha
una
lista
di
bug
facilmente
raggiungibile
all’indirizzohttp://bugs.debian.org/packagename.Utility come querybts(1) possono inoltrefornire tale informazione (e anche reportbug di solitoinvocherà querybts prima di
inviare).
Cerca di inviare i tuoi bug nel posto giusto. Quando per esempio iltuo bug riguarda un pacchetto che sovrascrive file di un altro pacchetto,controlla la lista dei bug di entrambi i pacchetti
in modo daevitare di archiviare bug report doppi.
Capitolo 7. Oltre la pacchettizzazione
74
Come extra , puoi scorrere altri pacchetti,fondendo bug che sono stati riportati più di una volta,
o marcandoi bug come ‘fixed’ quando sono già stati risolti. Nota che quandonon sei né chi ha
riportato il bug né il mantainer del pacchetto,non dovresti chiudere il bug (a meno che non hai
il permesso delmantainer).
Ogni tanto puoi voler controllare cosa è successo al bug reportche hai inviato. Cogli questa
opportunità per chiudere i bug chenon puoi più riprodurre. Per cercare tutti i bug che hai
riportato,devi solo visitare http://bugs.debian.org/from:<your-email-addr>.
7.1.1
Riportare un gran numero di bug in una volta sola
Riportare un grande numero di bug per lo stesso problema su ungran numero di pacchetti
differenti — p.es., più di 10 —è un apratica deprecata. Fai tutto il possibile per evitare del tuttobug in massa. Per esempio, se il controllo per il problema può essereautomatizzato, aggiungi
un nuovo controllo a lintianin modo che venga emesso un errore o un avvertimento.
Se riporti più di 10 bug in una volta sola sullo stesso argomento,è raccomandato mandare
un messaggio a <[email protected]> descrivendola tue intenzioni prima
di inviare il report. Questo permetterà aglialtri sviluppatori di verificare che il bug sia un
problema reale.In aggiunta, aiuterà prevenire una situazione in cui diversi mantainerinizino a
inviare lo stesso bug report simultaneamente.
Nota che quando mandi molti bug sullo stesso soggetto, dovresti inviareil bug report a
<[email protected]> in modo che ilreport non venga inoltrato alla mailing list
di distribuzione del bug.
7.2
7.2.1
Opere di assicurazione qualità
Lavori giornalieri
Anche se esiste un gruppo di persone dedicato all’assicurazionequalità, i doveri di QA non
sono riservati a loro. Puoi perteciparein questo lavoro tenendo i tuoi pacchetti il più possibile
liberida bug, e più “puliti” possibile per lintian (vedi ‘lintian’ a pagina 80).Se trovi che non
sia possibile, allora dovresti considere l’opportunitàdi abbandonare (orphaning) qualcuno dei
tuoi pacchetti (vedi ‘Abbandonare un pacchetto’ a pagina 50). Alternativamente puoi chiedere
l’aiuto di altre personein modo da risolvere tutti i tuoi bug che hai in arretrato(puoi chiedere
aiuto su <[email protected]> oppure <[email protected].
org>).Allo stesso tempo, puoi cercare dei co-mantainer (vedi‘Manutenzione collaborativa’ a
pagina 60).
7.2.2
Bug squashing party
Ogni tanto il gruppo QA organizza dei bug squashing party per eliminarepiù problemi possibile. Sono annunciati su <[email protected]>e l’annuncio
Capitolo 7. Oltre la pacchettizzazione
75
spiega su quale area ci si concentrerà durante il party:generalmente si concentrano su bug release critical ma può succedere chedecidino di aiutare a finire un’importante aggiornamento in
corso d’opera(come una nuova versione del perl che richiede la ricompilazione di tuttii moduli
binari).
Le regole per i non-mantainer upload differiscono durante i party inquanto l’annuncio del
party è considerato come un annuncio preventivoper i NMU. Se hai pacchetti che possono
essere affetti dal party (perchèper esempio hanno bug release critical), dovresti mandare un
update aognuno dei bug corrispondenti per spiegare il loro stato corrente e cosati aspetti dal
party. Se non vuoi un NMU, o se sei interessato solo auna patch, o se ti occuperai da solo del
bug, per piacere spiegalo nelBTS.
Le persone che partecipano al party hanno regole speciali per gli NMU,essi possono effettuare
dei NMU senza prima avvertire se inviano i loroNMU almeno in DELAYED/3-day. Tutti le
altre regole sui NMU si applicanocome al solito, essi dovrebbero inviare la patch del NMU
al BTS (in unodei bug aperti risolti dal NMU o in un nuovo bug marcato come fixed).Essi
dovrebbero inoltre rispettare le volontà del mantainer se egli neha espresso qualcuna.
Se qualcuno non si sente tranquillo con unNMU, egli dovrebbe semplicemente mandare una
patch al BTS. È moltomeglio che un NMU sbagliato.
7.3
Contattare altri mantainer
Durante la tua vita in Debian, avrai bisogno di contattare altrimantainer per varie ragioni. Potresti voler discutere un nuovomodo di cooperare tra un insieme di pacchetti correlati, oppurepotresti semplicemente ricordare a qualcuno che è disponibile unanuova versione upstream
di cui hai bisogno.
Cercare l’indirizzo email del mantainer del pacchetto può distrarti.Fortunatamente esiste un
semplice alias,<package>@packages.debian.org, che fornisce un modo perinviare email
al mantainer, qualunque sia il suo (o i loro) indirizzoemail. Sostituisci <package> con il nome
di un pacchettobinario o sorgente.
Potresti anche essere interessato a contattare le persone che sonosottoscritte a un dato pacchetto
sorgente attraverso‘Il sistema di tracciamento dei pacchetti’ a pagina 26. Puoi farlo usando
l’indirizzo email<package-name>@packages.qa.debian.org.
7.4
Trattare con mantainer inattivi e/o irraggiungibili
Se noti che un pacchetto abbia carenze di manutenzione, dovrestiassicurarti che il mantainer
sia attivo e continuerà a lavorare aisuoi pacchetti. È possibile che non siano più attivi ma nonsi
siano deregistrati dal sistema, tanto per dire. Dall’altro lato,è anche possibile che abbiano solo
bisogno di un promemoria.
Il primo passo è contattare educatamente il mantainer e aspettare unarisposta per un tempo
ragionevole. È abbastanza difficile definireun “tempo ragionevole”, ma è importante tenere
Capitolo 7. Oltre la pacchettizzazione
76
conto che la vita realeè a volte molto movimentata. Un modo di gestire questa situazione
sarebbemandare un promemoria dopo due settimane.
Se il mantainer non risponde entro quattro settimane (un mese), sipuò presumere che probabilmente non si riceverà mai una risposta.Se questo accade, dovresti investigare ulteriormente
e cercare di ottenerepiù informazioni utili possibili sul mantainer in questione. Ciò include:
• Le informazioni modello “echelon” disponibili attraverso il database LDAP degli svilupaptori (https://db.debian.org/), il quale indica quando è stata l’ultima volta
che uno sviluppatore abbia inviato qualcosa a una mailing-list Debian. (Questo include
gli upload attraverso la lista debian-*-changes lists.) Inoltre, ricordati di controllare se il
mantainer sia marcato “on vacation” nel database.
• Il numero di pacchetti di cui è responsabile questo mantainer, e le condizioni di quei
pacchetti. In particolare, ci sono dei bug RC che sono stati aperti per un sacco di tempo?
Inoltre, quanti bug ci sono in generale? Un’altra informazione importante è se i pacchetti
siano stati o meno soggetti a NMU, e se è così, da chi.
• Esiste quasisasi attività del mantainer fuori da Debian? Per esempio, potrebbe avere
recentemente postato qualcosa a mailing list non Debian o newsgroup.
Un problema grosso sono i pacchetti che sono stati sponsorizzati – ilmantainer non è uno sviluppatore Debian ufficiale. Le informazioni modello“echelon” non sono disponibili per gente
sponsorizzata, per esempio, quindihai bisogno di trovare e contattare lo sviluppatore Debian
che ha realmenteinviato il pacchetto in upload. Dato che hanno firmato il pacchetto, essisono responsabili comunque per l’upload, e dovrebbero sapere cosa è successoalla persona che
hanno sponsorizzato.
È anche permesso di inviare una richiesta a <[email protected].
org>,chedendo se qualcuno ha notizie del mantainer scomparso.
Una volta che hai ottenuto tutto ciò, puoi contattare <[email protected]>.La
gente in questo alias userà le informazioni che hai fornito in modo dadecidere sul da farsi.
Per esempio, potrebbero abbandonare (orphaning)uno o tutti i pacchetti del mantainer. Se un
pacchetto è stato oggetto diNMU, potrebbero preferire contattare chi ha inviato il NMU prima
diabbandonare il pacchetto – forse tale persona è interessata al pacchetto.
Un’ultima parola: per favore ricordati di essere educato. Noi siamo tuttivolontari e non possiamo dedicare tutto il nostro tempo a Debian. Inoltre,non sei a conoscenza delle circostanze
in cui si trova la persona coinvolta.Forse porebbero essere gravemente malati o perfino morti –
non sai chipotrebbe essere dalla parte ricevente – immagina come si potrebbe sentireun parente
se legge le e-mail del defunto e trova un messaggio molto scortese,arrabbiato e accusatorio!)
Dall’altro lato, anche se siamo volontari, abbiamo delle responsabilità.So you can stress the
importance of the greater good– se un mantainer non ha più il tempo o l’interesse, dovrebbe
“lasciarandare” e dare il pacchetto a qualcuno con più tempo.
Capitolo 7. Oltre la pacchettizzazione
7.5
77
Interazione con futuri sviluppatori Debian
Il successo di Debian dipende dalla sua abilità di attrarre e tenerenuovi volontari di talento. Se
sei un mantainer con una certa esperienza,ti raccomandiamo di coinvolgerti nel processo di far
entrare nuovisviluppatori. Questa sezione descrive come aiutare i nuovi futurisviluppatori.
7.5.1
Sponsorizzare pacchetti
Sponsorizzare un pacchetto significa fare l’upload di un pacchetto per unmantainer che non
può farlo da solo, un aspirante mantainer. Sponsorizzareun pacchetto significa anche accettare
la responsabilità di esso.
Se desideri diventare uno sponsor volontario, puoi iscrivertiall’indirizzo http://www.
internatif.org/bortzmeyer/debian/sponsor/.
I nuovi mantainer di solito hanno certe difficoltà a creare pacchetti Debian— ciò è abbastanza comprensibile. Questo è il perchè dell’esistenzadello sponsor, per controllare il pacchetto e
verificare che sia buonoabbastanza per l’inclusione in Debian. (Nota che se il pacchetto sponsorizzatoè nuovo, anche gli ftpmaster dovranno ispezionarlo prima di permetterglidi entrare
in arachivio.)
Sponsorizzare semplicemente firmando l’upload o solo ricompilandolo èdefinitivamente non
raccomandato. Devi effettuare ilbuild del pacchetto sorgente proprio come faresti con un
pacchetto tuo.Ricorda che non importa se hai lasciato il nome del futuro sviluppatoresia nel
changelog che nel file control, l’upload può comunque esserericondotto a te.
Se sei un aspirante manager per un futuro sviluppatore, puoi anche essereil suo sponsor. In
quel modo puoi anche verificare come l’aspirante stagestendo la parte ’Tasks and Skills’ della
sua richiesta.
7.5.2
Gestire i pacchetti sponsorizzati
Inviando in upload a Debian un pacchetto sponsorizzato, stai certificandoche il pacchetto si
attiene agli standard minimi di Debian. Ciò implicache devi fare il build e testare il pacchetto
sul tuo sistema prima dieffettuare l’upload.
Non puoi semplicemente inviare in upload un .deb binariodallo sponsorizzato. In teoria, dovresti solo chiedere il file diff ela locazione della tarball sorgente originaria, quindi scaricare
isorgenti e applicare te stesso la diff. In pratica, potresti volerusare il pacchetto sorgente costruito dal tuo sponsorizzato. In quel caso,devi controllare che non ha alterato i file upstream
nel file.orig.tar.gz che fornisce.
Non aver paura di scrivere allo sponsorizzato e delineare lemodifiche che devono essere
fatte. Spesso ci vogliono diverseemail avanti e indietro prima che il pacchetto sia in una
formaaccettabile. Essere uno sponsor significa essere un mentore.
Una volta che il pacchetto incontra gli standard Debian, fanne ilbuild e firmalo con
Capitolo 7. Oltre la pacchettizzazione
78
dpkg-buildpackage -kKEY-ID
prima diinviarlo in upload alla directory incoming.
Il campo Mantainer dei file control echangelog dovrebbero elencare le persona che hanno fattoil pacchetto, ovvero lo sponsorizzato. Egli quindi riceverà tutte leemail del BTS sul
pacchetto.
Se preferisci lasciare una traccia più evidente del tuo lavoro disponsorizzazione, puoi
aggiungere una linea che lo esplicita nellavoce più recente di changelog.
Sei incoraggiato a tenere i contatti con il pacchetto che sponsorizziusando ‘Il sistema di
tracciamento dei pacchetti’ a pagina 26.
7.5.3
Advocating new developers
See the page about advocating a prospective developer (http://www.debian.org/devel/
join/nm-advocate) at the Debian web site.
7.5.4
Handling new maintainer applications
Please see Checklist forApplication Managers (http://www.debian.org/devel/join/
nm-amchecklist) at the Debian web site.
79
Appendice A
Overview of Debian Maintainer Tools
This section contains a rough overview of the tools available tomaintainers. The following is
by no means complete or definitive, butjust a guide to some of the more popular tools.
Debian maintainer tools are meant to help convenience developers and free their time for
critical tasks. As Larry Wall says, there’s morethan one way to do it.
Some people prefer to use high-level package maintenance tools andsome do not. Debian is
officially agnostic on this issue; any toolwhich gets the job done is fine. Therefore, this section is
not meantto stipulate to anyone which tools they should use or how they shouldgo about with
their duties of maintainership. Nor is it meant toendorse any particular tool to the exclusion
of a competing tool.
Most of the descriptions of these packages come from the actualpackage descriptions themselves. Further information can be found inthe package documentation itself. You can also see
more info with thecommand apt-cache show <package-name>.
A.1
Core tools
The following tools are pretty much required for any maintainer.
A.1.1
dpkg-dev
dpkg-dev contains the tools (includingdpkg-source) required to unpack, build and upload
Debiansource packages. These utilities contain the fundamental, low-levelfunctionality required to create and manipulated packages; as such,they are required for any Debian
maintainer.
Capitolo A. Overview of Debian Maintainer Tools
A.1.2
80
debconf
debconf provides a consistent interface toconfiguring packages interactively. It is user interfaceindependent, allowing end-users to configure packages with atext-only interface, an HTML
interface, or a dialog interface. Newinterfaces can be added modularly.
You can find documentation for this package in thedebconf-doc package.
Many feel that this system should be used for all packages requiringinteractive configuration; see ‘Gestione della configurazione con debconf’ a pagina 69.debconf is not currently
required by Debian Policy,but that may change in the future.
A.1.3
fakeroot
fakeroot simulates root privileges. This enablesyou to build packages without being root
(packages usually want toinstall files with root ownership). If you havefakeroot installed,
you can build packages as auser: dpkg-buildpackage -rfakeroot.
A.2
Package lint tools
According to the Free On-line Dictionary of Computing (FOLDOC), ‘lint’is “a Unix C language processor which carries out more thorough checkson the code than is usual with C compilers.” Package lint tools helppackage maintainers by automatically finding common problems
andpolicy violations with their packages.
A.2.1
lintian
lintian dissects Debian packages and emitsinformation on bugsand policy violations. It contains automated checks for many aspectsof Debian policy as well as some checks for common
errors.
You should periodically get the newest lintian from‘unstable’ and check over all your packages. Notice that the -ioption provides detailed explanations of what each error or warning
means,what is its basis in Policy, and commonly how you can fix the problem.
Refer to ‘Controllare il pacchetto’ a pagina 34 for more information on how and whento use
Lintian.
You can also see a summary of all problems reported by Lintian on yourpackages at http:
//lintian.debian.org/. Those reports contain the latestlintian output on the whole
development distribution(“unstable”).
A.2.2
linda
linda is another package linter. It is similar tolintian but has a different set of checks.
Itswritten in Python rather than Perl.
Capitolo A. Overview of Debian Maintainer Tools
A.2.3
81
debdiff
debdiff (from the devscripts package, ‘devscripts’ a pagina 84)compares file lists and
control files of two packages. It is a simpleregression test, as it will help you notice if the
number of binarypackages has changed since the last upload, or if something’s changedin the
control file. Of course, some of the changes it reports will beall right, but it can help you
prevent various accidents.
You can run it over a pair of binary packages:
debdiff package_1-1_arch.deb package_2-1_arch.deb
Or even a pair of changes files:
debdiff package_1-1_arch.changes package_2-1_arch.changes
For more information please see debdiff(1).
A.3
Helpers for debian/rules
Package building tools make the process of writingdebian/rules files easier. See ‘Script
helper’ a pagina 61for more information on why these might or might not be desired.
A.3.1
debhelper
debhelper is a collection of programs that can beused in debian/rules to automate common tasks related tobuilding binary Debian packages. Programs are included to installvarious
files into your package, compress files, fix file permissions,integrate your package with the
Debian menu system.
Unlike some approaches, debhelper is broken intoseveral small, granular commands which
act in a consistent manner. Assuch, it allows a greater granularity of control than some of
theother “debian/rules tools”.
There are a number of little debhelper add-onpackages, too transient to document. You can
see the list of most ofthem by doing apt-cache search ^dh-.
A.3.2
debmake
debmake, a pre-cursor todebhelper, is a less granulardebian/rules assistant. It includes
two main programs:deb-make, which can be used to help a maintainer converta regular (nonDebian) source archive into a Debian source package;and debstd, which incorporates in one
big shot the samesort of automated functions that one finds indebhelper.
The consensus is that debmake is now deprecated infavor of debhelper. However, it’s not a
bug to usedebmake.
Capitolo A. Overview of Debian Maintainer Tools
A.3.3
82
dh-make
The dh-make package contains dh_make, a program thatcreates a skeleton of files necessary
to build a Debian package out ofa source tree. As the name suggests, dh_make is a rewrite
ofdebmake and its template files use dh_* programs fromdebhelper.
While the rules files generated by dh_make are in general asufficient basis for a working package, they are still just the groundwork:the burden still lies on the maintainer to finely tune the
generated filesand make the package entirely functional and Policy-compliant.
A.3.4
yada
yada is another packaging helper tool.
It uses adebian/packages file to autogeneratedebian/rules and other necessary files in thedebian/ subdirectory.
Note that yada is called “essentially unmaintained”by it’s own maintainer, Charles BriscoeSmith. As such, it can beconsidered deprecated.
A.3.5
equivs
equivs is another package for making packages. Itis often suggested for local use if you
need to make a package simplyto fulfill dependencies. It is also sometimes used when
making“meta-packages”, which are packages whose only purpose is to dependon other
packages.
A.4
Package builders
The following packages help with the package building process,
dpkg-buildpackage as well as handling supportingtasks.
A.4.1
generaldriving
cvs-buildpackage
cvs-buildpackage provides the capability to injector import Debian source packages into
a CVS repository, build a Debianpackage from the CVS repository, and helps in integrating
upstreamchanges into the repository.
These utilities provide an infrastructure to facilitate the use of CVSby Debian maintainers. This allows one to keep separate CVS branchesof a package for stable, unstable and
possiblyexperimental distributions, along with the other benefits ofa version control system.
Capitolo A. Overview of Debian Maintainer Tools
A.4.2
83
debootstrap
The debootstrap package and script allows you to“bootstrap” a Debian base system into any
part of your file-system.By “base system”, we mean the bare minimum of packages required
tooperate and install the rest of the system.
Having a system like this can be useful in many ways. For instance,you can chroot into it
if you want to test your builddepends. Or, you can test how your package behaves when
installedinto a bare base system. Chroot builders use this package, see below.
A.4.3
pbuilder
pbuilder constructs a chrooted system, and builds apackage inside the chroot. It is very
useful to check that a package’sbuild-dependencies are correct, and to be sure that unnecessary
andwrong build dependencies will not exist in the resulting package.
A related package is pbuilder-uml, which goes evenfurther build doing the build within
User-mode-linux.
A.4.4
sbuild
sbuild is another automated builder. It can usechrooted environments as well. It can be used
stand-alone, or as partof a networked, distributed build environment. As the latter, it ispart
of the system used by porters to build binary packages for allthe available architectures. See
‘buildd’ a pagina 55 for moreinformation, and http://buildd.debian.org/ to see the
system inaction.
A.5
Package uploaders
The following packages help automate or simplify the process ofuploading packages into the
official archive.
A.5.1
dupload
dupload is a package and a script to automaticallyupload Debian packages to the Debian
archive, to log the upload, andto send mail about the upload of a package. You can configure
it fornew upload locations or methods.
A.5.2
dput
The dput package and script does much the samething as dupload, but in a different way.
It hassome features over dupload, such as the ability tocheck the GnuPG signature and
Capitolo A. Overview of Debian Maintainer Tools
84
checksums before uploading, and thepossibility of running dinstall in dry-run mode after
theupload.
A.6
Maintenance automation
The following tools help automate different maintenance tasks, fromadding changelog entries
or signature lines, looking up bugs in Emacs,to making use of the newest and official use
ofconfig.sub.
A.6.1
devscripts
devscripts is a package containing wrappersand tools which are very helpful for maintaining your Debianpackages. Example scripts include debchange anddch, which manipulate your debian/changelogfile from the command-line, and debuild, which is awrapper
around dpkg-buildpackage. The btsutility is also very helpful to update the state of bug
reports on thecommand line. uscan can be used to watch for new upstreamversions of your
packages. The debrsign can be used toremotely sign a package prior to upload, which is nice
when themachine you build the package on is different from where your GPG keysare.
See the devscripts(1) manual page for acomplete list of available scripts.
A.6.2
autotools-dev
Contains best practices for people maintaining packages that useautoconf and/or
automake. Also containscanonical config.sub and config.guess fileswhich are known
to work on all Debian ports.
A.6.3
dpkg-repack
dpkg-repack creates Debian package file out of a packagethat has already been installed.
If any changes have been made to thepackage while it was unpacked (e.g., files in /etc
weremodified), the new package will inherit the changes.
This utility can make it easy to copy packages from one computer toanother, or to recreate
packages that are installed on your systembut no longer available elsewhere, or to store the
current state of apackage before you upgrade it.
A.6.4
alien
alien converts binary packages between various packagingformats, including Debian, RPM
(RedHat), LSB (Linux Standard Base),Solaris and Slackware packages.
Capitolo A. Overview of Debian Maintainer Tools
A.6.5
85
debsums
debsums checks installed packages against their MD5 sums.Note that not all packages have
MD5 sums, since they aren’t requiredby Policy.
A.6.6
dpkg-dev-el
dpkg-dev-el is an Emacs lisp package which providesassistance when editing some of the
files in the debiandirectory of your package. For instance, when editingdebian/changelog,
there are handy functions forfinalizing a version and listing the package’s current bugs.
A.6.7
dpkg-depcheck
dpkg-depcheck (from the devscripts package, ‘devscripts’ nella pagina precedente)runs a command under strace to determine all the packages thatwere used by the said
command.
For Debian packages, this is useful when you have to compose aBuild-Depends line for
your new package: running the buildprocess through dpkg-depcheck will provide you with
agood first approximation of the build-dependencies. For example:
dpkg-depcheck -b debian/rules build
dpkg-depcheck can also be used to check for run-timedependencies, especially if your
package uses exec(2) to run otherprograms.
For more information please see dpkg-depcheck(1).
A.7
Porting tools
The following tools are helpful for porters and forcross-compilation.
A.7.1
quinn-diff
quinn-diff is used to locate the differences fromone architecture to another. For instance, it
could tell you whichpackages need to be ported for architecture Y, based onarchitecture X.
A.7.2
dpkg-cross
dpkg-cross is a tool for installing libraries andheaders for cross-compiling in a way similar todpkg. Furthermore, the functionality ofdpkg-buildpackage and dpkg-shlibdeps
isenhanced to support cross-compiling.
Capitolo A. Overview of Debian Maintainer Tools
A.8
86
Documentation and information
The following packages provide information for maintainers or helpwith building
documentation.
A.8.1
debiandoc-sgml
debiandoc-sgml provides the DebianDoc SGML DTD,which is commonly used for Debian
documentation. This manual, forinstance, is written in DebianDoc. It also provides scripts
forbuilding and styling the source to various output formats.
Documentation for the DTD can be found in thedebiandoc-sgml-doc package.
A.8.2
debian-keyring
Contains the public GPG and PGP keys of Debian developers. See ‘Mantenere la tua chiave
privata’ a pagina 7 and the package documentation for moreinformation.
A.8.3
debview
debview provides an Emacs mode for viewing Debianbinary packages. This lets you examine
a package without unpackingit.