Debian

Debian Pakketaanmaak HowTobian

Debian Pakketaanmaak HowTobian

1. Voorwoord

Verantwoordelijk zijn voor een machine betekent zorgen voor zowel de hardware als de softwarecomponenten. Zoals we in het dagelijks leven als systeembeheerder zien, is het veel beter om software als een softwarepakket te installeren in plaats van een heleboel bronbestanden. Dit verlaagt de kosten om het systeem goed te onderhouden.

Pakketten die verkrijgbaar zijn bij uw voorkeursdistributeur worden gevalideerd en gecontroleerd door een pakketbeheerder maintain. Hij testte de software en verzekert dat deze past bij de andere softwarepakketten die beschikbaar zijn in de distributie. Verder is het pakket ondertekend met een GPG-sleutel van de pakketbeheerder. Dit garandeert de integriteit van het pakket en laat zien dat het pakket afkomstig is van een vertrouwde bron.

Het pakketformaat is afhankelijk van je Linux-distributie. Geselecteerde formaten zijn de volgende:

deb

Pakketten gebruikt in: Debian GNU/Linux, Ubuntu,Armbian,Linux Mint, Knoppix

toeren

Pakketten gebruikt in: RedHat, Fedora, CentOS, OpenSuse

tgz en txz

Pakketten gebruikt in: Slackware

teer.xz

Pakketten gebruikt in: Arch Linux

Dit document legt in het kort uit hoe u een pakket voor Debian GNU/Linux kunt bouwen. Voor gedetailleerde informatie over het Debian-pakketformaat en de tools om een ​​op 'deb' gebaseerd Linux-systeem te onderhouden, kunt u een kijkje nemen in het Debian Package Management Book [dpmb]. Om pakketten voor Debian GNU/Linux te bouwen, zijn deze documenten essentieel:

Het pakket waarmee we gaan werken heet 'helloworld' en heeft het versienummer 0.1. Voor demonstratiedoeleinden bevat het gewoon een enkel Python-script dat het beroemde bericht "Hallo, wereld" uitvoert!”:

#!/usr/bin/python print ("Hallo wereld!") 

2. Vereisten

2.1. GPG-sleutel

Houd als stap 1 uw GPG-sleutel bij de hand. Later is de sleutel nodig om het pakket te ondertekenen. Houd er rekening mee dat niet-ondertekende pakketten onbetrouwbaar zijn en geen deel kunnen uitmaken van het Debian-universum.

Als je nog geen GPG-sleutel hebt, maak er dan een aan. U kunt de drie onderstaande stappen volgen:. De eerste opdracht genereert een nieuwe sleutel, de tweede exporteert uw nieuwe sleutel naar een apart bestand en de derde voegt de sleutel toe aan uw persoonlijke sleutelhanger.

$ gpg --gen-key $ gpg -a --output ~/.gnupg/YOUR_NAME.gpg --export 'UW NAAM' $ gpg --import ~/.gnupg/YOUR_NAME.gpg 

Zorg er tijdens het maken voor dat de opgegeven naam _YOUR NAME_ correct is. Het is gebruikelijk om een ​​combinatie van voornaam en achternaam te gebruiken. Deze naam moet dan exact hetzelfde zijn in het pakket, bij het aanmaken van het 'control'-bestand van het Debian-pakket. Kijk voor meer informatie over GPG in het GNU Privacy Handbook [gph].

2.2. De verpakkingsgereedschapsketen

Om een ​​Debian-pakket met broncode te bouwen, zijn de volgende softwarepakketten vereist op uw systeem:

Als gebruiker 'root' kunt u deze installeren met het volgende commando:

# apt-get install build-essential autoconf automake autotools-dev dh-make debhelper devscripts fakeroot xutils lintian pbuilder 

2.3. Bereid de te verpakken software voor

We moeten een map voorbereiden om het pakket te bouwen. Maak een map om de omgeving voor te bereiden waarin we het pakket zullen bouwen:

$ mkdir -p ~./build/helloworld/0.1 

Kopieer de 'tar.gz' gecomprimeerd archief in de map:

$ cp helloworld-0.1.teer.gz ~./build/helloworld/0.1 

Ga naar de directory en pak het pakket uit:

$ cd ~./build/helloworld/0.1 ~/build/helloworld/0.1$ teer -xzf helloworld-0.1.teer.gz 

Nu bevat de map zowel de broncode in een aparte map als het gecomprimeerde archief:

~/build/helloworld/0.1$ ls helloworld-0.1 halloworld-0.1.teer.gz 

3. debianisatie

Op dit punt zullen we de bestanden toevoegen die specifiek zijn voor een Debian-pakket. Daarom heet deze stap _Debianization_ van de software. Dit gebeurt in verschillende enkele stappen.

3.1 Bereid de pakketstructuur voor:

Ga naar de map die de volledige broncode van het pakket bevat. In ons voorbeeld bevat het pakket het bestand 'helloworld'.py', alleen:

~$ cd build/helloworld/0.1/helloworld-0.1 ~/build/helloworld/0.1/helloworld-0.1$ is helloworld.py 

Laten we de bestanden toevoegen die specifiek zijn voor een Debian-pakket. De tool 'dh_make' komt in het spel. De schakelaar '-e' gebruikt het opgegeven adres als het e-mailadres in het veld 'Maintainer' van het bestand 'debian/control'. Gebruik in plaats daarvan uw eigen e-mailadres om het pakket te bouwen. Houd er rekening mee dat u hetzelfde e-mailadres gebruikt dat overeenkomt met uw GPG-sleutel.

De schakelaar '-f' gebruikt het gegeven bestand als het originele bronarchief en slaat het kopiëren van de huidige programmaboom over naar 'programma.origineel'.

~/build/helloworld/0.1/helloworld-0.1$ dh_make -e [e-mail beveiligd] -f… /helloworld-0.1.teer.gz 

Bij de prompt wordt u gevraagd om het type pakket te selecteren dat moet worden gemaakt. Om _enkel binair_ type 's' te kiezen.

Type pakket: enkel binair, indep binair, meervoudig binair, bibliotheek, kernelmodule, kernelpatch? [s/i/m/l/k/n] s Naam Beheerder : Frank Hofmann E-mailadres : [email protected] Datum : Sat, 04 Nov 2017 21:16:13 +0100 Pakketnaam : helloworld Versie : 0.1 Licentie: blanco Type pakket: Enkele hit Single  om te bevestigen: Momenteel is er geen Makefile op het hoogste niveau. Dit kan extra afstemming vereisen. Gedaan. Bewerk nu de bestanden in de debian/subdirectory. Je moet ook controleren of de helloworld Makefiles in $DESTDIR worden geïnstalleerd en niet in / . 

Dit resulteert in een map met de naam 'debian':

~/build/helloworld/0.1/helloworld-0.1$ ls debian helloworld.py 

Deze map bevat alle pakketspecifieke bestanden.

3.2. Pas het controlebestand aan

Het bestand 'debian/control' bewaart de afhankelijkheden die nodig zijn _om_ het pakket te bouwen. Met de opdracht 'dpkg-depcheck -d ./configure' ontvangt u een lijst met alle benodigde pakketten. In ons geval is er geen verder pakket nodig omdat Python een geïnterpreteerde taal is.

Vervolgens moeten we het bestand 'debian/control' bewerken en pakketspecifieke waarden toevoegen. Voor ons voorbeeld ziet het er als volgt uit:

Bron: helloworld Sectie: python Prioriteit: optioneel Beheerder: Frank Hofmann <[email protected]> Build-afhankelijk: debhelper (>= 9) Standards-versie: 3.9.5 Startpagina: http://www.efho.de/ #Vcs-Git: git://anonscm.debian.org/collab-maint/helloworld.git #Vcs-Browser: http://anonscm.debian.org/?p=collab-maint/helloworld.git;a=summary Pakket: helloworld Architectuur: elke Hangt af: $shlibs:Depends, $misc:Depends, python Beschrijving: Print Hello World in Python Print Hello World in Python 

3.3. Pas het copyrightbestand aan

Het bestand 'debian/copyright' bevat de licentie-informatie voor het softwarepakket. Het is voorbereid op de release via GNU Public License 2 (GPLv2). Voor ons voorbeeld ziet het er als volgt uit:

Formaat: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-naam: helloworld Bron: http://www.efho.de/ Bestanden: debian/* Copyright: 2017 Frank Hofmann <[email protected]> Licentie: GPL-2+ Dit pakket is gratis software; u kunt het herdistribueren en/of wijzigen onder de voorwaarden van de GNU General Public License zoals gepubliceerd door de Free Software Foundation; ofwel versie 2 van de Licentie, of (naar uw keuze) een latere versie... Dit pakket wordt verspreid in de hoop dat het nuttig zal zijn, maar ZONDER ENIGE GARANTIE; zonder zelfs de impliciete garantie van VERKOOPBAARHEID of GESCHIKTHEID VOOR EEN BEPAALD DOEL. Zie de GNU General Public License voor meer details... U zou samen met dit programma een kopie van de GNU General Public License moeten hebben ontvangen. Zo niet, zie  . Op Debian-systemen is de volledige tekst van de GNU General Public License versie 2 te vinden in "/usr/share/common-licenses/GPL-2". 

3.4. Pas het changelog-bestand aan

Na de copyrightinformatie moet het bestand 'debian/changelog' worden aangepast. In ons voorbeeld voegen we de informatie “Initial release” toe.

hallowereld (0.1-1) onstabiel; urgentie=laag * Eerste release -- Frank Hofmann <[email protected]> Za, 04 Nov 2017 21:16:13 +0100 

Dat is alles wat we tot nu toe nodig hebben - nu kunnen we eindelijk het pakket bouwen.


4. Bouw het pakket

Om het pakket te bouwen, moeten we één map omhoog gaan en de volgende opdracht uitvoeren:

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

Met de optie '-rfakeroot' kan 'dpkg-buildpackage' opdrachten uitvoeren als een bevoorrechte gebruiker met behulp van het commando 'fakeroot'. Dit is nodig om het pakket voor te bereiden en om bestanden en mappen te maken.
Het bovenstaande commando resulteert in een langere lijst met uitvoerberichten (hier weergegeven in een Duitstalige omgeving):

dpkg-buildpackage: Quellpaket helloworld dpkg-buildpackage: Quellpaket helloworld dpkg-buildpackage: Quellversion 0.1-1 dpkg-buildpakket: Quelldistribution onstabiel dpkg-buildpakket: Quellen geändert door Frank Hofmann <[email protected]> dpkg-buildpakket: Host-Architektur amd64 dpkg-source --before-build helloworld-0.1 fakeroot debian/rules clean dh clean dh_testdir dh_auto_clean dh_clean dpkg-source -b helloworld-0.1 dpkg-source: Informatie: Quellformat "3.0 (quilt)" wird verwendet dpkg-source: Information: helloworld wird unter Benutzung des existierenden ./helloworld_0.1.origineel.teer.gz gebaut dpkg-bron: Informatie: helloworld wird in helloworld_0.1-1.debian.teer.xz gebaut dpkg-bron: Informatie: helloworld wird in helloworld_0.1-1.dsc gebaut debian / rules build dh build dh_testdir dh_auto_configure dh_auto_build dh_auto_test fakeroot debian / regels binaire dh binaire 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 Hangt von Paket helloworld: unbekannte Substitutionsvariable $ shlibs :Afhankelijk 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 hinzufügen dpkg-source --after-build helloworld-0.1 dpkg-buildpackage: Alles hochzuladen (Originalquellen enthalten) signfile helloworld_0.1-1.dsc Sie benötigen eine Passphrase, um den geheimen Schlüssel zu entsperren. Benutzer: "Frank Hofmann (Hofmann EDV) <[email protected]> " 4096-Bit RSA Schlüssel, ID D431AC07, erzeugt 2014-09-05 

4.1. Het pakket valideren

Gefeliciteerd - je bent erin geslaagd een Debian-pakket te bouwen - yeah! Laten we het pakket nu eens nader bekijken. Hier komt 'lintian' om de hoek kijken. Deze tool valideert uw pakket om overtredingen te vinden tegen de strikte regels waaraan Debian-pakketten moeten voldoen.

Typ de volgende opdracht om de tests uit te voeren:

lintian helloworld_0.1-1_amd64.deb 

De tool vindt geen regelovertredingen, maar ook spelfouten en verkeerde tekens. De schakelaar '-pedant' vraagt ​​'lintian' om veel kritischer te zijn dan normaal. Zoals je hieronder kunt zien is 'lintian' een beetje chagrijnig en heeft drie waarschuwingen en één fout ontdekt.

Behalve de eerste waarschuwing kunnen we 'lintian' gemakkelijk blij maken en de inhoud van het pakket aanpassen volgens de regelset. De waarschuwing 'new-package-should-close-itp-bug' betekent dat er geen bugrapport is tegen het ITP-pakket (ITP betekent _intended to package_). Voor een regulier Debian-pakket moet een bugrapport worden verzonden naar de bugtracker voor pakket ITP om anderen te informeren dat u van plan bent deze software te gaan verpakken.

4.2. Waarschuwing: 'readme-debian-bevat-debmake-template

Het bestand 'LEESMIJ'.Debian' is bedoeld om aanvullende opmerkingen over dit pakket te bewaren. 'dh_make' heeft dit bestand voor ons gemaakt:

helloworld voor Debian ---------------------  -- Frank Hofmann <[email protected]> Za, 04 Nov 2017 21:16:13 +0100 

In ons voorbeeld hebben we geen aanvullende informatie, dus we kunnen het bestand verwijderen.

4.3. Waarschuwing: 'description-starts-with-leading-spaces'

Deze waarschuwing wordt gegeven omdat de langere beschrijving van ons pakket in het bestand 'debian/control' begint met meer dan een enkele spatie. Zodra we een enkele spatie verwijderen, verdwijnt de waarschuwing.

4.4. Fout: 'beschrijving-synopsis-is-duplicated'

Elk pakket vereist zowel een korte als een langere beschrijving in 'debian/control'. Deze fout treedt op omdat beide beschrijvingen identiek zijn. Zodra we de langere beschrijving hebben uitgebreid, is de fout verdwenen.


5. Links en referenties

- [ddr] Andreas Barth, Adam Di Carlo, Raphaël Hertzog, Lucas Nussbaum, Christian Schwarz, Ian Jackson: de Debian Developer's Reference
- [dnmg] Josip Rodin, Osamu Aoki: De Debian nieuwe onderhoudsgids
- [dpmb] Axel Beckert, Frank Hofmann: The Debian Package Management Book
- [dpm] De Debian-beleidshandleiding
- [dpt] De Debian Verpakkingszelfstudie
- [gph] Het GNU-privacyhandboek
- [lushpaiPackage] Alex Lushpai: Hoe een debian-pakket van de bron te maken


6. Dankbetuigingen

De auteur wil graag Axel Beckert en Gerold Rupprecht bedanken voor hun steun en critici bij het opstellen van dit artikel.

Wijs uw muisknoppen anders toe voor verschillende software met X-Mouse Button Control
Misschien heeft u een tool nodig waarmee u de bediening van uw muis kunt veranderen bij elke applicatie die u gebruikt. Als dit het geval is, kunt u e...
Microsoft Sculpt Touch draadloze muis Review
Ik las onlangs over de Microsoft Sculpt Touch draadloze muis en besloot hem te kopen. Nadat ik het een tijdje had gebruikt, besloot ik mijn ervaring e...
AppyMouse trackpad en muisaanwijzer op het scherm voor Windows-tablets
Tabletgebruikers missen vaak de muisaanwijzer, vooral wanneer ze gewend zijn om de laptop te gebruiken. Het touchscreen Smartphones en tablets hebben ...