Prefazione
Essere responsabili di una macchina significa prendersi cura dell'hardware e dei componenti del software. Come visto nella vita di tutti i giorni come amministratore di sistema, è molto meglio installare software come pacchetto software piuttosto che un mucchio di file di origine. Ciò riduce i costi per mantenere correttamente il sistema.
I pacchetti disponibili dal tuo distributore preferito sono convalidati e supervisionati da un manutentore di pacchetti. Ha testato il software e assicura che si adatta agli altri pacchetti software disponibili nella distribuzione. Inoltre, il pacchetto è firmato con una chiave GPG dal manutentore del pacchetto. Ciò garantisce l'integrità del pacchetto e mostra che il pacchetto proviene da una fonte di fiducia.
Il formato del pacchetto dipende dalla distribuzione Linux. I formati selezionati sono i seguenti:
Deb
Pacchetti utilizzati in: Debian GNU/Linux, Ubuntu, Armbian, Linux Mint, Knoppix
RPM
Pacchetti utilizzati in: Redhat, Fedora, CentOS, Opensuse
TGZ e TXZ
Pacchetti utilizzati in: Slackware
catrame.xz
Pacchetti utilizzati in: Arch Linux
Questo documento spiega come creare brevemente un pacchetto per Debian GNU/Linux. Per informazioni dettagliate sul formato del pacchetto Debian e sugli strumenti per mantenere un sistema Linux basato su "Deb", è possibile dare un'occhiata al libro di gestione dei pacchetti Debian [DPMB] per creare pacchetti per Debian GNU/Linux Questi documenti sono essenziali:
Il pacchetto con cui lavoreremo si chiama "Helloworld" e ha il numero di versione 0.1. Per scopi dimostrativi contiene semplicemente un singolo script Python che produce il famoso messaggio “Ciao, mondo!":
#!/usr/bin/pythonRequisiti
Come passaggio 1, disporre della chiave GPG. Più tardi, la chiave sarà necessaria per firmare il pacchetto. Tieni presente che i pacchetti non firmati sono inaffidabili e non possono far parte dell'universo Debian.
Nel caso in cui non si disponga di una chiave GPG, crei una. È possibile seguire i tre passaggi seguenti. Il primo comando genera una nuova chiave, il secondo esporta la nuova chiave in un file separato e il terzo aggiunge la chiave al tuo chiavi personale.
$ gpg --gen-keyDurante la creazione assicurarsi che il nome dato _ il tuo nome_ sia corretto. È comune usare una combinazione di nome e cognome. Questo nome dovrà essere esattamente lo stesso nel pacchetto, quindi, quando si crea il file "Control" del pacchetto Debian. Per ulteriori informazioni su GPG, dai un'occhiata al Manuale sulla privacy della GNU [GPH].
Per creare un pacchetto Debian con codice sorgente sono richiesti i seguenti pacchetti software sul sistema:
Come "root" dell'utente puoi installarli utilizzando il seguente comando:
# APT-get Installa build-build Autoconf Automake Autotools-Dev Dh-Make Debhelper Devscripts FakeKeroot Xutils Lintian PbuilderDobbiamo preparare una directory per creare il pacchetto. Crea una directory per preparare l'ambiente in cui costruiremo il pacchetto:
$ mkdir -p ~./build/helloworld/0.1Copia il catrame.Archivio compresso GZ nella directory:
$ CP Helloworld-0.1.catrame.GZ ~./build/helloworld/0.1Cambiare nella directory ed estrarre il pacchetto:
$ cd ~./build/helloworld/0.1Ora, la directory contiene sia il codice sorgente in una directory separata, sia l'archivio compresso:
~/build/helloworld/0.1 $ lsDebianizzazione
A questo punto aggiungeremo i file specifici per un pacchetto Debian. Ecco perché questo passaggio si chiama _debianization_ del software. Questo viene fatto in diversi singoli passaggi.
Cambiare nella directory che mantiene l'intero codice sorgente del pacchetto. Nel nostro esempio il pacchetto contiene il file "Helloworld.Py ', solo:
~ $ cd build/elhoworld/0.1/Helloworld-0.1Aggiungiamo i file specifici per un pacchetto Debian. Lo strumento 'dh_make' entra in gioco. Lo switch '-e' utilizza l'indirizzo indicato come indirizzo e-mail nel campo 'manutentore' del file 'debian/controllo'. Costruire il pacchetto utilizza invece il tuo indirizzo email. Tieni presente di utilizzare lo stesso indirizzo email che corrisponde alla tua chiave gpg.
Lo switch '-f' utilizza il file dato come archivio originale e salta la copia dell'albero del programma corrente per 'Programma.Orig '.
~/build/helloworld/0.1/Helloworld-0.1 $ dh_make -e [email protected] -f… /helloworld -0.1.catrame.GzAl prompt ti viene chiesto di selezionare il tipo di pacchetto che dovrebbe essere creato. Per scegliere _single binary_ type 's'.
Tipo di pacchetto: binario singolo, binario indep, binario multiplo, biblioteca, modulo kernel, patch kernel?Ciò si traduce in una directory chiamata "Debian":
~/build/helloworld/0.1/Helloworld-0.1 $ lsQuesta directory contiene tutti i file specifici del pacchetto.
Il file "Debian/Control" mantiene le dipendenze necessarie _to build_ il pacchetto. Usando il comando 'dpkg -depcheck -d ./configura 'ricevi un elenco con tutti i pacchetti richiesti. Nel nostro caso non c'è altro pacchetto necessario perché Python è una lingua interpretata.
Successivamente, dobbiamo modificare il file "Debian/Control" e aggiungere valori specifici del pacchetto. Per il nostro esempio sembra segue:
Fonte: HelloworldIl file 'Debian/Copyright' contiene le informazioni sulla licenza per il pacchetto software. È preparato per il rilascio tramite GNU Public License 2 (GPLV2). Per il nostro esempio sembra segue:
Formato: http: // www.Debian.Org/Doc/Packaging-manuals/Copyright-Format/1.0/Dopo le informazioni sul copyright, il file "Debian/Changelog" deve essere regolato. Nel nostro esempio aggiungiamo le informazioni "versione iniziale".
Helloworld (0.1-1) instabile; Urgency = LowQuesto è tutto ciò di cui abbiamo bisogno finora - ora possiamo costruire il pacchetto, finalmente.
Costruisci il pacchetto
Per creare il pacchetto dobbiamo spostare una directory ed eseguire il seguente comando:
~/build/helloworld/0.1/Helloworld-0.1 $ DPKG -BUILDPACKAGE -RFAKEROOTL'opzione '-rfakeroot' consente a 'dpkg-buildpackage' di eseguire i comandi come utente privilegiato con l'aiuto del comando 'fakeroot'. Ciò è necessario per preparare il pacchetto e creare file e directory.
Il comando sopra si traduce in un elenco più lungo di messaggi di output (mostrato qui in un ambiente di lingua tedesca):
Congratulazioni - Sei riuscito a costruire un pacchetto Debian - sì! Ora, diamo un'occhiata più da vicino al pacchetto. Qui, "Lintian" entra in gioco. Questo strumento convalida il pacchetto per trovare violazioni contro le rigide regole che i pacchetti Debian devono adempiere.
Per eseguire il digitare test nel comando seguente:
Lintian Helloworld_0.1-1_AMD64.DebLo strumento non trova violazioni delle regole ma anche errori di ortografia e personaggi sbagliati. The Switch '-Oppetic' chiede a 'Lintian' di essere molto più critico del solito. Come puoi vedere di seguito "Lintian" è un po 'scontroso e ha scoperto tre avvertimenti e un errore.
Tranne il primo avvertimento possiamo facilmente rendere felici "Lintian" e assolutamente il contenuto del pacchetto secondo il set di regole. L'avvertimento "new-package-dovrebbe-close-itp-bug" significa che non esiste un report di bug contro il pacchetto ITP (ITP significa _inteso in pacchetto_). Per un pacchetto Debian regolare, un report di bug deve essere inviato a BugTracker per il pacchetto ITP per avvisare gli altri che si intende iniziare a confezionare questo software.
Il file 'readme.Debian 'ha lo scopo di mantenere ulteriori note su questo pacchetto. 'Dh_make' ha creato questo file per noi:
Helloworld per DebianNel nostro esempio non abbiamo ulteriori informazioni, quindi possiamo eliminare il file.
Questo avvertimento viene sollevato perché la descrizione più lunga del nostro pacchetto nel file "Debian/Control" inizia con più di un singolo spazio. Non appena rimuoviamo un singolo spazio, l'avvertimento scomparirà.
Ogni pacchetto richiede sia una descrizione breve che quella più lunga in "Debian/Control". Questo errore viene sollevato perché entrambe le descrizioni sono identiche. Non appena abbiamo esteso la descrizione più lunga, l'errore è sparito.
Collegamenti e riferimenti
- [DDR] Andreas Barth, Adam Di Carlo, Raphaël Hertzog, Lucas Nussbaum, Christian Schwarz, Ian Jackson: The Debian Developer's Reference
- [DNMG] Josip Rodin, Osamu Aoki: la guida del nuovo manutentore di Debian
- [DPMB] Axel Beckert, Frank Hofmann: The Debian Package Management Book
- [DPM] Il manuale della politica Debian
- [dpt] The Debian Packaging Tutorial
- [GPH] Il manuale sulla privacy della GNU
- [Lushpaipackage] Alex Lushpai: come creare il pacchetto Debian dalla fonte
Riconoscimenti
L'autore desidera ringraziare Axel Beckert e Gerold Rupprecht per il loro supporto e i critici mentre prepara questo articolo.