[ precedente ] [ Contenuti ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ successivo ]


Guida per il nuovo Maintainer
Capitolo 6 - Costruzione del pacchetto


A questo punto, si dovrebbe essere pronti a creare il pacchetto.


6.1 (ri)Creazione completa

Al fine di (ri)creare un pacchetto in modo appropriato, è necessario assicurarsi di installare

Adesso ci si sposti nella directory dei sorgenti del programma e si lancia il comando:

     $ dpkg-buildpackage

Questo comando creerà i pacchetti binari e sorgenti al posto vostro. Eseguirà le seguenti operazioni:

Il solo input richiesto è la password per la propria chiave GPG, due volte.

Fatto ciò, si vedranno quattro nuovi file nella directory dei sorgenti (~/gentoo):

Le lunghe stringhe di numeri nei file .dsc e .changes sono codici di controllo MD5/SHA1/SHA256 per i file menzionati. Chi scarica questi file, può controllarli con md5sum(1), sha1sum(1), o sha256sum(1) e se i numeri non corrispondessero saprebbe che il file relativo è corrotto, o è stato alterato.


6.2 Auto-costruzione

Debian supporta molti port tramite la autobuilder network, su cui sono in esecuzione i demoni di buildd su molti computer con architetture differenti. Anche se non sarà necessario fare questo da soli, si dovrebbe essere consapevoli di quello che succederà ai pacchetti. Si vedrà, in maniera non approfondita, come i pacchetti vengono ricostruiti per architetture differenti. [43]

I pacchetti con "Architecture: any", verranno ricostruiti dal sistema di auto-costruzione. Ci si assicuri di avere installato

Dopo si può eseguire il comando seguente nella directory dei sorgenti:

     $ dpkg-buildpackage -B

Questo comando creerà i pacchetti binari e sorgenti al posto vostro. Eseguirà le seguenti operazioni:

È questo il motivo per il quale si vede il proprio pacchetto per altre architetture.

Anche se i pacchetti sono elencati nel campo Build-Depends-indep, per la normale creazione del pacchetto, devono comunque essere installati (vedere (ri)Creazione completa, Sezione 6.1), invece per il sistema di auto-costruzione non è necessario installarli dato che costruisce solamente pacchetti binari per una specifica architettura. [44] Questa differenza tra la normale pacchettizzazione e il sistema di auto-costruzione determina se i pacchetti richiesti devono essere registrati nei campi Build-Depends o Build-Depends-indep nel file debian/control (vedere Il file control, Sezione 4.1).


6.3 Includere orig.tar.gz per il caricamento.

Quando si carica per la prima volta il pacchetto nell'archivio, si deve includere il file dei sorgenti originali orig.tar.gz. Se l'ultima voce del changelog non è la prima della versione originale, si deve eseguire il comando dpkg-buildpackage con l'attributo "-sa". Al contrario, l'opzione "-sd" forzerà l'esclusione del sorgente originale orig.tar.gz.


6.4 Il comando debuild

È possibile automatizzare ulteriormente il processo di creazione del pacchetto, eseguito con il comando dpkg-buildpackage, utilizzando il comando debuild. Vedere debuild(1).

La configurazione del comando debuild può essere fatta usando /etc/devscripts.conf o ~/.devscripts. Ecco alcune impostazioni consigliate:

     DEBSIGN_KEYID="ID_della_vostra_chiave_GPG"
     DEBUILD_LINTIAN=yes
     DEBUILD_LINTIAN_OPTS="-i -I --show-overrides"

Con queste impostazioni, i pacchetti saranno firmati usando la chiave GPG con l'ID specificato (questo è utile per le sponsorizzazioni) e controllati con il programma lintian in modo dettagliato.

Per esempio, si può ripulire i sorgenti e ricreare il pacchetto da un account utente, con:

     $ debuild

Si noti che il programma dpkg-buildpackage eseguito con l'opzione "-sa", può includere il sorgente originale orig.tar.gz, eccone un esempio:

     $ debuild -sa

È possibile ripulire l'albero dei sorgenti con:

     $ debuild clean

6.5 Il pacchetto pbuilder

Il pacchetto pbuilder è molto utile per verificare le dipendenze di creazione del pacchetto da un ambiente (chroot) di compilazione sano e minimale. [45] Questo assicura di compilare i sorgenti in maniera pulita, usando la distribuzione sid un compilatore automatico (auto-builder) per differenti architetture ed evita i bug FTBS (Fails To Build from Source) di severità seria, che sono sempre di categoria RC (Critici per il Rilascio). Vedi http://buildd.debian.org/ per maggiori informazioni sul compilatore automatico di pacchetti Debian.

Si configuri il pacchetto pbuilder come segue.

Questo permetterà di firmare i pacchetti generati con la tua chiave GPG segreta situata nella directory ~/.gnupg/.

Si avvii pbuilder per costruire l'ambiente chroot locale, come segue.

     $ sudo pbuilder create

Se si hanno già i pacchetti sorgenti, eseguire i seguenti comandi nella directory in cui si trovano i file foo.orig.tar.gz, foo.debian.tar.gz, e foo.dsc per aggiornare l'ambiente chroot di pbuilder e per costruirci dentro il pacchetto binario.

     $ sudo pbuilder --update
     $ sudo pbuilder --build foo.dsc

Si noti che il programma dpkg-buildpackage eseguito con l'opzione "-sa", può includere il sorgente originale orig.tar.gz, eccone un esempio:

     $ sudo pbuilder --build --debbuildopts "-sa" foo.dsc

Il nuovo pacchetto sarà creato nella directory /var/cache/pbuilder/result/ con proprietà non assegnata all'utente root.

Se si ha già l'albero dei sorgenti aggiornato, senza generare i rispettivi pacchetti sorgenti, eseguire i seguenti comandi nella directory dei sorgenti in cui si trova il file debian.

     $ sudo pbuilder --update
     $ pdebuild

Si noti che il programma dpkg-buildpackage eseguito con l'opzione "-sa", può includere il sorgente originale orig.tar.gz, eccone un esempio:

     $ pdebuild --debbuildopts "-sa"

È possibile accedere all'ambiente chroot con il comando "pbuilder --login --save-after-login" e configurarlo come si vuole. Questo ambiente può essere salvato, semplicemente uscendo dalla shell con ^D (Control-D).

L'ultima versione del programma lintian può essere eseguita nell'ambiente chroot, usando gli script di hook /var/cache/pbuilder/hooks/B90lintian, configurati come segue. [46]

     #!/bin/sh
     
     set -e
     
     install_packages() {
     
         apt-get -y --force-yes install "$@"
     
         }
     
     install_packages lintian
     
     echo "+++ lintian output +++"
     
     su -c "lintian -i -I --show-overrides /tmp/buildd/*.changes" - pbuilder
     
     # use this version if you don't want lintian to fail the build
     
     #su -c "lintian -i -I --show-overrides /tmp/buildd/*.changes; :" - pbuilder
     
     echo "+++ end of lintian output +++"

E' necessario avere accesso all'ultima versione di sid per poter costruire correttamente i pacchetti per sid. In realtà sid potrebbe avere dei problemi che rendono poco consigliabile migrare l'intero sistema. In questo caso il pacchetto pbuilder può essere molto di aiuto.

Potrebbe essere necessario aggiornare i pacchetti stable dopo il loro rilascio per stable-proposed-updates, stable/updates, ecc. [47] Per questa ragione "sto utilizzando un sistema sid" non èè una buona scusa per non aggiornarli tempestivamente. Il pacchetto pbuilder aiuta ad accedere agli ambienti di quasi tutte le distribuzioni derivate da Debian con la stessa architettura di CPU.

Vedere http://www.netfort.gr.jp/~dancer/software/pbuilder.html, pdebuild(1), pbuilderrc(5), e pbuilder(8).


6.6 Il comando git-buildpackage ed altri simili

Se l'autore originale utilizza un sistema di controllo di versione (VCS) per gestire il proprio codice, si dovrebbe prendere in considerazione di usarlo. Questo rende molto più semplice la fusione e la raccolta di patch dai sorgenti originali. Ci sono diversi pacchetti di script adatti alla costruzione di pacchetti Debian per ogni sistema VCS.

Questi pacchetti offrono un'alternativa più elegante, per gli utenti più esperti, all'utilizzo manuale del comando quilt, per automatizzare la creazione dei pacchetti. Non verranno trattati in questo manuale. [48]


6.7 Ricostruzione veloce

Con un pacchetto di grandi dimensioni, si potrebbe non voler ricostruire tutto da zero, ogni volte che si modifica un dettaglio in debian/rules. Per effettuare delle prove, si può creare un file .deb, senza ricompilare i sorgenti originali, come segue: [49]:

     $ fakeroot debian/rules binary

Oppure, semplicemente controllando se costruirlo o no. Come:

     $ fakeroot debian/rules build

Una volta completati i vari aggiustamenti, bisogna ricordarsi di ricostruire il pacchetto usando la giusta procedura. Si potrebbe non essere in grado di caricare il pacchetto correttamente se si prova con dei file .deb creati in questo modo.


[ precedente ] [ Contenuti ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ successivo ]


Guida per il nuovo Maintainer

version 1.2.25, 2010-12-21 14:06:56 UTC

Josip Rodin joy-mg@debian.org
Traduzione: Calogero Lo Leggio kalos@nerdrug.org
Traduzione: Jacopo Reggiani jacopo.reggiani@gmail.com
Traduzione: Francesco P. Lovergine