Skip to main content

Guida al packaging di Ubuntu - Packaging con Debhelper

#contribuiamo - Presentazione del Gruppo Sviluppo di ubuntu-it (Giugno 2025)

#contribuiamo - Presentazione del Gruppo Sviluppo di ubuntu-it (Giugno 2025)
Anonim

Imballaggio con Debhelper

Importante

Requisiti: I requisiti della sezione chiamata "Packaging From Scratch" più debhelper e dh-make

Come packager, raramente creerai pacchetti da zero come abbiamo fatto nella sezione precedente. Come puoi immaginare, molti dei compiti e delle informazioni nel regole il file, ad esempio, è comune ai pacchetti. Per rendere l'imballaggio più semplice ed efficiente, puoi usare debhelper per aiutare con questi compiti. Debhelper è un insieme di script Perl (con prefisso dh_) che automatizzano il processo di creazione di pacchetti. Con questi script, creare un pacchetto Debian diventa abbastanza semplice.

In questo esempio, costruiremo di nuovo il pacchetto GNU Hello, ma questa volta confronteremo il nostro lavoro con Ubuntu ciao-debhelper pacchetto. Ancora una volta, crea una directory in cui lavorerai:

mkdir ~ / hello-debhelper cd ~ / hello-debhelper wget http://ftp.gnu.org/gnu/hello/hello-2.1.1.tar.gz mkdir ubuntu cd ubuntu

Quindi, ottieni il pacchetto sorgente di Ubuntu:

apt-get source ciao-debhelper cd ..

Come nell'esempio precedente, la prima cosa che dobbiamo fare è decomprimere il tarball originale (upstream).

tar -xzvf ciao-2.1.1.tar.gz

Invece di copiare il tarball upstream in hello_2.1.1.orig.tar.gz come abbiamo fatto nell'esempio precedente, lo faremo dh_make fai il lavoro per noi L'unica cosa che devi fare è rinominare la cartella sorgente in modo che sia sotto forma di - dove packagename è in minuscolo. In questo caso, solo untarring del tarball produce una directory di origine con nome corretto in modo da poterci spostare all'interno:

cd hello-2.1.1

Per creare la "debianizzazione" iniziale della fonte che useremo dh_make.

dh_make -e your.maintainer@address -f ../hello-2.1.1.tar.gz

dh_make ti farà quindi una serie di domande:

Tipo di pacchetto: singolo binario, multiplo binario, libreria, modulo del kernel o cdbs? S / m / l / k / b S Nome del Maintainer: Captain Packager Indirizzo e-mail: [email protected] Data: Gio 6 Apr 2006 10:07:19 -0700 Nome del pacchetto: ciao Versione: 2.1.1 Licenza: blank Tipo di pacchetto: Hit singolo per confermare: accedere

Attenzione

Corri solo dh_make -e una volta. Se lo si esegue nuovamente dopo averlo fatto la prima volta, non funzionerà correttamente. Se si desidera cambiarlo o commettere un errore, rimuovere la directory di origine e decomprimere nuovamente il tarball upstream. Quindi è possibile migrare nella directory di origine e riprovare.

In esecuzione dh_make -e fa due cose:

  • Crea il hello_2.1.1.orig.tar.gz file nella directory principale,
  • Crea i file di base necessari in debian / e molti file modello (.ex) che potrebbero essere necessari.

Il Ciao il programma non è molto complicato e, come abbiamo visto nella sezione chiamata "Packaging From Scratch", il packaging non richiede molto più dei file di base. Pertanto, cerchiamo di rimuovere il .ex File:

cd debian rm * .ex * .EX

Per Ciaoanche tu no

* Licenza

* Indice della guida al packaging di Ubuntu

bisogno README.Debian (File README per problemi specifici di Debian, non il README del programma), dirs (usato da dh_installdirs per creare le directory necessarie), docs (usato da dh_installdocs per installare la documentazione del programma), o Informazioni (usato da il comando dh_installinfo per installare i file info) nel debian directory. Per ulteriori informazioni su questi file, consultare la sezione chiamata "file di esempio dh_make".

A questo punto, dovresti avere solo changelog, compat, controllo, diritto d'autore, e regole file nel debian directory. Dalla sezione chiamata "Packaging From Scratch", l'unico file che è nuovo è compat, che è un file che contiene il debhelper versione (in questo caso 4) utilizzata.

Avrai bisogno di regolare il changelogleggermente in questo caso per riflettere che questo pacchetto è chiamato ciao-debhelper piuttosto che solo Ciao:

ciao-debhelper (2.1.1-1) dapper; urgenza = bassa * Rilascio iniziale - Capitan Packager Gio 6 Apr 2006 10:07:19 -0700

Usando debhelper, le uniche cose che dobbiamo cambiare controllo sono il nome (sostituendo Ciao per ciao-debhelper) e aggiungendo debhelper (> = 4.0.0) al Build-Depends campo per il pacchetto sorgente. Il pacchetto di Ubuntu per ciao-debhelper sembra:

Fonte: hello-debhelper Sezione: devel Priorità: extra Maintainer: Capitan Packager Versione standard: 3.6.1 Build-Depends: debhelper (> = 4) Pacchetto: hello-debhelper Architecture: any Depends: $ {shlibs: Depends} Conflicts: hello Fornisce: hello Sostituisce: ciao Descrizione: Il classico saluto e un buon esempio Il programma GNU hello produce un saluto familiare e amichevole. Permette ai non programmatori di utilizzare un classico strumento informatico che altrimenti non sarebbe disponibile per loro. . Seriamente, però: questo è un esempio di come fare un pacchetto Debian. È la versione Debian del programma 'ciao mondo' del Progetto GNU (che è di per sé un esempio per il Progetto GNU). . È lo stesso del pacchetto Hello, tranne che usa debhelper per fare il deb. Si prega di vedere debhelper su quello che è.

Possiamo copiare il diritto d'autore file e il postinst e prerm script da Ubuntu ciao-debhelper pacchetto, poiché non sono stati modificati dalla sezione chiamata "Packaging From Scratch". Copieremo anche il regole file in modo che possiamo ispezionarlo.

cp ../../ubuntu/hello-debhelper-2.1.1/debian/copyright. cp ../../ubuntu/hello-debhelper-2.1.1/debian/postinst. cp ../../ubuntu/hello-debhelper-2.1.1/debian/prerm. cp ../../ubuntu/hello-debhelper-2.1.1/debian/rules.

L'ultimo file che dobbiamo vedere è regole, dove il potere di debhelper gli script possono essere visti. Il debhelper versione di regole è un po 'più piccolo (54 linee rispetto a 72 linee nella versione dalla sezione chiamata "regole").

Il debhelper la versione è simile a:

#! / usr / bin / make -f pacchetto = hello-debhelper CC = gcc CFLAGS = -g -Wall ifeq (, $ (findstring noopt, $ (DEB_BUILD_OPTIONS))) CFLAGS + = -O2 endif #export DH_VERBOSE = 1 pulito : dh_testdir dh_clean rm -f build - $ (MAKE) -i installazione distclean: build dh_clean dh_installdirs $ (MAKE) prefisso = $ (CURDIR) / debian / $ (pacchetto) / usr mandir = $ (CURDIR) / debian / $ (pacchetto) / usr / share / man infodir = $ (CURDIR) / debian / $ (pacchetto) / usr / share / info install build: ./configure --prefix = / usr $ (MAKE) CC = "$ (CC) "CFLAGS =" $ (CFLAGS) "

touch build binary-indep: install # Non ci sono file indipendenti dall'architettura da caricare # generato da questo pacchetto. Se ce ne fossero sarebbero # fatti qui. binary-arch: installa dh_testdir -a dh_testroot -a dh_installdocs -a NEWS dh_installchangelogs -a ChangeLog dh_strip -a dh_compress -a dh_fixperms -a dh_installdeb -a dh_shlibdeps -a dh_gencontrol -a dh_md5sums -a dh_builddeb -a binario: binario-indep binario- arch .PHONY: binary-arch binario-indep clean checkroot

Si noti che attività come test se si è nella directory giusta (dh_testdir), assicurandosi di creare il pacchetto con i privilegi di root (dh_testroot), installazione della documentazione (dh_installdocs e dh_installchangelogs) e dopo la pulizia (dh_clean) sono gestiti automaticamente. Molti pacchetti molto più complicati di Ciao avere regole file non più grandi perché il debhelper gli script gestiscono la maggior parte delle attività. Per un elenco completo di debhelper script, si prega di consultare la sezione chiamata "Elenco di debhelper script ". Sono anche ben documentati nei loro rispettivi uomo pagine. È un esercizio utile per leggere la pagina man (sono ben scritte e non lunghe) per ogni script di aiuto usato in precedenza regole file.