Debian -Paket -Kreation Howto

Debian -Paket -Kreation Howto

Vorwort

Für eine Maschine verantwortlich zu sein bedeutet, die Hardware sowie die Softwarekomponenten zu betreuen. Wie im täglichen Leben als Systemadministrator zu sehen ist, ist es viel besser, Software als Softwarepaket zu installieren als eine Reihe von Quelldateien. Dies senkt die Kosten, um das System ordnungsgemäß aufrechtzuerhalten.

Pakete, die bei Ihrem bevorzugten Händler erhältlich sind. Er testete die Software und versichert, dass sie zu den anderen in der Distribution verfügbaren Softwarepakete passt. Darüber hinaus ist das Paket mit einem GPG -Schlüssel aus dem Packungsbetrieb signiert. Dies garantiert die Integrität des Pakets und zeigt Ihnen, dass das Paket von einer vertrauenswürdigen Quelle stammt.

Das Paketformat hängt von Ihrer Linux -Verteilung ab. Ausgewählte Formate sind die folgenden:

Deb

Pakete verwendet in: Debian GNU/Linux, Ubuntu, Armbian, Linux Mint, Knoppix

Drehzahl

Pakete verwendet in: Redhat, Fedora, CentOS, openSuse

TGZ und TXZ

Pakete verwendet in: Slackware

Teer.xz

Pakete verwendet in: Arch Linux

In diesem Dokument wird erläutert, wie ein Paket für Debian GNU/Linux kurz erstellt wird. Ausführliche Informationen zum Debian -Paketformat und zu den Tools zur Aufrechterhaltung eines "DEB" -Basierten Linux -Systems finden Sie möglicherweise im Debian -Paketverwaltungsbuch [DPMB], um Pakete für Debian GNU/Linux zu erstellen. Diese Dokumente sind unerlässlich:

  • Der Debian New Waring's Guide [DNMG]
  • Die Referenz des Debian -Entwicklers [DDR]
  • Das Debian Packaging Tutorial [DPT]
  • Das Debian Policy Manual [DPM]

Das Paket, mit dem wir arbeiten werden, heißt "HelloWorld" und hat die Versionsnummer 0.1. Für Demonstrationszwecke enthält es einfach ein einzelnes Python -Skript, das die berühmte Botschaft „Hallo, Welt“ ausgibt!”:

#!/usr/bin/python
print ("Hallo, Welt!"))

Anforderungen

2.1. GPG -Schlüssel

Lassen Sie Ihren GPG -Schlüssel als Schritt 1 verfügbar. Später wird der Schlüssel benötigt, um das Paket zu unterschreiben. Denken Sie daran, dass unsignierte Pakete nicht vertrauenswürdig sind und nicht Teil des Debian -Universums sein können.

Falls Sie keinen GPG -Schlüssel haben und noch einen erstellen, erstellen Sie einen. Sie können die drei folgenden Schritte folgen. Der erste Befehl generiert einen neuen Schlüssel, der zweite exportiert Ihren neuen Schlüssel in eine separate Datei, und der dritte fügt den Schlüssel zu Ihrem persönlichen Keyring hinzu.

$ gpg-gener
$ gpg -a -output ~/.gnupg/your_name.gpg -export 'dein Name' '
$ gpg -Import ~/.gnupg/your_name.gpg

Stellen Sie während der Erstellung sicher, dass der angegebene Name Ihr Name_ korrekt ist. Es ist üblich, eine Kombination aus Vorname und Nachname zu verwenden. Dieser Name muss im Paket genau gleich sein, und beim Erstellen der "Steuer" -Datei des Debian -Pakets. Weitere Informationen zu GPG finden Sie im GNU Privacy Handbook [GPH].

2.2. Die Verpackungswerkzeugkette

So erstellen Sie ein Debian -Paket mit Quellcode, die folgenden Softwarepakete sind in Ihrem System erforderlich:

  • bau-esz
  • Autoconf
  • Automake
  • Autotools-dev
  • DH-Make
  • Debhelper
  • DevScripts
  • Fakeroot
  • Xutils
  • Lintian
  • pbuilder

Als Benutzer "Root" können Sie diese mit dem folgenden Befehl installieren:

# APT-GET Installieren Sie Build-Escial Autoconf Automake Autotools-dev dh-Make Debhelper DevScripts Fakeroot Xutils Lintian Pbuilder

2.3. Bereiten Sie die zu verpackte Software vor

Wir müssen ein Verzeichnis vorbereiten, um das Paket zu erstellen. Erstellen Sie ein Verzeichnis, um die Umgebung vorzubereiten, in der wir das Paket erstellen:

$ mkdir -p ~./bauen/helloWorld/0.1

Kopieren Sie den Teer.GZ 'komprimiertes Archiv im Verzeichnis:

$ CP HelloWorld-0.1.Teer.gz ~./bauen/helloWorld/0.1

Wechseln Sie in das Verzeichnis und extrahieren Sie das Paket:

$ cd ~./bauen/helloWorld/0.1
~/build/helloWorld/0.1 $ tar -xzf HelloWorld -0.1.Teer.gz

Jetzt enthält das Verzeichnis sowohl den Quellcode in einem separaten Verzeichnis als auch das komprimierte Archiv:

~/build/helloWorld/0.1 $ ls
HelloWorld-0.1 HelloWorld-0.1.Teer.gz

Debianisierung

Zu diesem Zeitpunkt werden wir die Dateien hinzufügen, die für ein Debian -Paket spezifisch sind. Deshalb heißt dieser Schritt _debianization_ der Software. Dies geschieht in mehreren einzelnen Schritten.

3.1 Bereiten Sie die Paketstruktur vor

Wechseln Sie in das Verzeichnis, das den gesamten Quellcode des Pakets aufbewahrt. In unserem Beispiel enthält das Paket die Datei 'HelloWorld.Py ', nur:

~ $ cd build/helloWorld/0.1/helloWorld-0.1
~/build/helloWorld/0.1/helloWorld-0.1 $ ls
Hallo Welt.py

Fügen wir die Dateien hinzu, die für ein Debian -Paket spezifisch sind. Das Werkzeug 'DH_MAKE' kommt ins Spiel. Der Switch '-e' verwendet die angegebene Adresse als E-Mail-Adresse im Feld "Wartung" der Datei "Debian/Control". Erstellen des Pakets Verwenden Sie stattdessen Ihre eigene E -Mail -Adresse. Denken Sie daran, dieselbe E -Mail -Adresse zu verwenden, die Ihrem GPG -Schlüssel entspricht.

Der Switch '-F' verwendet die angegebene Datei als ursprüngliches Quellarchiv und überspringt das Kopieren des aktuellen Programmbaums in das Programm.orig '.

~/build/helloWorld/0.1/helloWorld-0.1 $ DH_MAKE -E [email protected] -f… /helloWorld -0.1.Teer.gz

Auf der Eingabeaufforderung werden Sie aufgefordert, die Art des Pakets auszuwählen, der erstellt werden sollte. Um _Single binary_ Typ 's' zu wählen.

Pakettyp: Single Binärer, unabhängiges Binärer, Multipler Binärer, Bibliothek, Kernelmodul, Kernel Patch?
[s/i/m/l/k/n] s
Name des Betreuers: Frank Hofmann
E-Mail-Address: [email protected]
Datum: Sa, 04. November 2017 21:16:13 +0100
Paketname: HelloWorld
Version: 0.1
Lizenz: leer
Art des Pakets: Single
Hit, um zu bestätigen:
Derzeit gibt es keine oberste Makefile auf höchstem Niveau. Dies erfordert möglicherweise eine zusätzliche Abstimmung.
Erledigt. Bitte bearbeiten Sie die Dateien jetzt im Debian/ Subditionory. Du solltest auch
Überprüfen Sie, ob die Helloworld Makefiles in $ destdir und nicht in / installiert werden .

Dies führt zu einem Verzeichnis namens "Debian":

~/build/helloWorld/0.1/helloWorld-0.1 $ ls
Debian HelloWorld.py

Dieses Verzeichnis enthält alle paketspezifischen Dateien.

3.2. Passen Sie die Steuerdatei an

Die Datei 'Debian/Control' hält die Abhängigkeiten, die benötigt werden, das Paket zu erstellen. Verwenden des Befehls 'dpkg -Depcheck -d ./Konfigurieren Sie 'Sie erhalten eine Liste mit allen erforderlichen Paketen. In unserem Fall ist kein weiteres Paket erforderlich, da Python eine interpretierte Sprache ist.

Als nächstes müssen wir die Datei 'Debian/Control' bearbeiten und paketspezifische Werte hinzufügen. Für unser Beispiel sieht es wie folgt aus:

Quelle: HelloWorld
Abschnitt: Python
Priorität: Optional
Betreuer: Frank Hofmann
Build-Depends: DebHelper (> = 9)
Standardsversion: 3.9.5
Homepage: http: // www.Efho.de/
#Vcs-git: git: // anonscm.Debian.org/kollektion in der achten als helloworld.Git
#Vcs-browser: http: // anonscm.Debian.org/?P = Zusammenarbeit/HelloWorld.Git; a = Zusammenfassung
Paket: HelloWorld
Architektur: Alle
Abhängig: $ SHLIBS: Abhängig, $ misc: Abhängig, Python
Beschreibung: Drucke Hallo Welt in Python
Drucke Hallo Welt in Python

3.3. Passen Sie die Copyright -Datei an

Die Datei 'Debian/Copyright' enthält die Lizenzinformationen für das Softwarepaket. Es ist für die Freigabe über GNU Public Lizenz 2 (GPLV2) vorbereitet. Für unser Beispiel sieht es wie folgt aus:

Format: http: // www.Debian.org/doc/packaging-Manuelle/Copyright-format/1.0/
Upstream-Name: HelloWorld
Quelle: http: // www.Efho.de/
Dateien: Debian/*
Urheberrecht: 2017 Frank Hofmann
Lizenz: GPL-2+
Dieses Paket ist kostenlose Software; Sie können es neu verteilen und/oder ändern
es gemäß den Bestimmungen der GNU General Public Lizenz wie veröffentlicht von
die Free Software Foundation; entweder Version 2 der Lizenz oder
(nach Ihrer Option) Jede spätere Version.
.
Dieses Paket wird in der Hoffnung verteilt, dass es nützlich sein wird,
aber ohne Garantie; ohne die implizite Garantie von
Handelsfähigkeit oder Fitness für einen bestimmten Zweck. Siehe das
GNU Allgemeine öffentliche Lizenz für weitere Details.
.
Sie hätten eine Kopie der GNU General Public Lizenz erhalten haben sollen
zusammen mit diesem Programm. Wenn nicht, siehe
.
Auf Debian Systems den vollständigen Text des GNU General
Die öffentliche Lizenzversion 2 finden Sie in "/usr/Share/Common-Lizenses/GPL-2".

3.4. Passen Sie die ChangeLog -Datei an

Nach den Copyright -Informationen muss die Datei 'Debian/Changelog' angepasst werden. In unserem Beispiel fügen wir die Informationen "Erstveröffentlichung" hinzu.

HelloWorld (0.1-1) instabil; Dringlichkeit = niedrig
* Erstveröffentlichung
-- Frank Hofmann Sa, 04. November 2017 21:16:13 +0100

Das ist alles, was wir bisher brauchen - jetzt können wir das Paket endlich erstellen.


Erstellen Sie das Paket

Um das Paket zu erstellen, müssen wir ein Verzeichnis nach oben verschieben und den folgenden Befehl ausführen:

~/build/helloWorld/0.1/helloWorld-0.1 $ dpkg -buildpackage -rfakeroot

Mit der Option '-rfakeroot' kann 'DPKG-buildpackage' Befehle als priviledierter Benutzer mit Hilfe des Befehls 'Fakeroot' ausführen. Dies ist erforderlich, um das Paket vorzubereiten und Dateien und Verzeichnisse zu erstellen.
Der obige Befehl führt zu einer längeren Liste von Ausgabenachrichten (hier in einer deutschen Sprachumgebung gezeigt):

dpkg-buildpackage: quellpaket helloWorld
dpkg-buildpackage: quellpaket helloWorld
dpkg-buildpackage: quellversion 0.1-1
dpkg-buildpackage: quelldistribution instabil
dpkg-buildpackage: Quellen Ge andert Kurch Frank Hofmann
dpkg-buildpackage: host-architektur amd64
DPKG-Source---vorvor-Build HelloWorld-0.1
Fakeroot Debian/Regeln sauber
DH sauber
dh_testdir
dh_auto_clean
dh_clean
dpkg-source -b HelloWorld-0.1
DPKG-Source: Informationen: QuellFormat "3.0 (Quilt) "Wird Verendet
DPKG-Source: Information: HelloWorld Wird Unter Benutzung dessis existieren ./helloWorld_0.1.orig.Teer.GZ Gebaut
DPKG-Source: Information: HelloWorld Wird in HelloWorld_0.1-1.Debian.Teer.XZ Gebaut
DPKG-Source: Information: HelloWorld Wird in HelloWorld_0.1-1.DSC Gebaut
Debian/Regeln erstellen
DH Build
dh_testdir
dh_auto_configure
dh_auto_build
dh_auto_test
Fakeroot Debian/Regeln binär
DH Binär
DH_TESTROOT
DH_PREP
dh_auto_install
dh_installdocs
dh_installchangelogs
DH_PERL
DH_LINK
dh_compress
DH_FIXPERMS
dh_strip
dh_makeshlibs
DH_SHLIBDEPS
dh_installdeb
dh_gencontrol
DPKG-Gencontrol: Warnung: Feld hängt von Paket HelloWorld: UnBekannte-Substitutionsvariable $ SHLIBS: Abhängig ab
DH_MD5SUMS
DH_BUILDDEB
dpkg-deb: paket "helloWorld" wird in "... /helloWorld_0.1-1_amd64.Deb "Gebaut.
DPKG-GENCHANGES <… /helloworld_0.1-1_amd64.changes
DPKG-Genchanges: Kompletter Quellcode Beim Hochladen Hintzügen
DPKG-Source-Nachbauer HelloWorld-0.1
DPKG-Buildpackage: Alles Hochzuladen (Originalquellen enthalten)
Signfile HelloWorld_0.1-1.DSC
Sie Benöden -Ein -Passphrase, um den Den Geheimen Schlüssel ZUENTERREN.
Benzutzer: "Frank Hofmann (Hofmann EDV)
"
4096-Bit RSA Schlüssel, ID D431AC07, Erzaugt 2014-09-05

4.1. Validierung des Pakets

Herzlichen Glückwunsch - Sie haben es geschafft, ein Debian -Paket aufzubauen - ja! Schauen wir uns nun das Paket genauer an. Hier kommt 'Lintian' ins Spiel. Dieses Tool bestätigt Ihr Paket, um Verstöße gegen die strengen Regeln zu finden, die Debian -Pakete erfüllen müssen.

So führen Sie den Testtyp im folgenden Befehl aus:

Lintian HelloWorld_0.1-1_amd64.Deb

Das Tool findet keine Verstöße gegen Regel, sondern auch Rechtschreibfehler und falsche Zeichen. Der Switch '-Pedantantic' bittet 'Lintian', viel kritischer als gewöhnlich zu sein. Wie Sie unten sehen können, ist 'Lintian' ein bisschen mürrisch und hat drei Warnungen und einen Fehler entdeckt.

Mit Ausnahme der ersten Warnung können wir leicht "Lintian" glücklich machen und den Paketinhalt gemäß dem Regelsatz einstellen. Die Warnung 'New-Package SOORD-CLOSE-ITP-BUG' bedeutet, dass es keinen Fehlerbericht gegen das ITP-Paket gibt (ITP bedeutet _Ented to Package_). Für ein reguläres Debian -Paket muss ein Fehlerbericht an den Bugtracker gesendet werden, um ITP zu paketen, um andere zu benachrichtigen, dass Sie beabsichtigen, diese Software zu verpacken.

4.2. Warnung: 'Readme-Debian-Contains-Debmake-Template

Die Datei 'Readme.Debian 'soll zusätzliche Notizen zu diesem Paket aufbewahren. 'dh_make' erstellt diese Datei für uns:

HelloWorld für Debian
---------------------

-- Frank Hofmann Sa, 04. November 2017 21:16:13 +0100

In unserem Beispiel haben wir keine zusätzlichen Informationen, damit wir die Datei löschen können.

4.3. Warnung: "Beschreibung startet mit Leading-Spaces"

Diese Warnung wird erhöht, da die längere Beschreibung unseres Pakets in der Datei 'Debian/Control' mit mehr als einem einzigen Raum beginnt. Sobald wir einen einzigen Raum entfernen, wird die Warnung verschwinden.

4.4. Fehler: 'Beschreibung-synopsis-is-dupliziert' '

Jedes Paket erfordert sowohl eine kurze als auch eine längere Beschreibung in 'Debian/Control'. Dieser Fehler wird angesprochen, weil beide Beschreibungen identisch sind. Sobald wir die längere Beschreibung erweitert haben, ist der Fehler verschwunden.


Links und Referenzen

- [DDR] Andreas Barth, Adam di Carlo, Raphaël Hertzog, Lucas Nussbaum, Christian Schwarz, Ian Jackson: The Debian Developer's Referenz
- [DNMG] Josip Rodin, Osamu Aoki: The Debian New Warding's Guide
- [DPMB] Axel Beckert, Frank Hofmann: Das Debian -Paketmanagementbuch
- [DPM] Das Debian -Richtlinienhandbuch
- [DPT] Das Tutorial Debian Packaging
- [GPH] Das GNU Privacy Handbook
- [Lushpaipackage] Alex Lushpai: So erstellen Sie das Debian -Paket aus der Quelle


Anerkennung

Der Autor bedankt sich bei Axel Beckert und Gerold Rupprecht für seine Unterstützung sowie Kritiker, während er diesen Artikel vorbereitet.