Debian

Skapa Debian-paket HowTo

Skapa Debian-paket HowTo

1. Förord

Att vara ansvarig för en maskin innebär att man tar hand om både hårdvaran och mjukvarukomponenterna. Som man ser i vardagen som systemadministratör är det mycket bättre att installera programvara som ett mjukvarupaket snarare än en massa källfiler. Detta minskar kostnaderna för att underhålla systemet ordentligt.

Paket som är tillgängliga från din föredragna distributör valideras och övervakas av en pakethållare. Han testade programvaran och försäkrar att den passar till de andra mjukvarupaket som finns i distributionen. Dessutom undertecknas paketet med en GPG-nyckel från pakethållaren. Detta garanterar paketets integritet och visar att paketet kommer från en betrodd källa.

Paketformatet beror på din Linux-distribution. Valda format är följande:

deb

Paket som används i: Debian GNU / Linux, Ubuntu, Armbian, Linux Mint, Knoppix

varv / min

Paket som används i: RedHat, Fedora, CentOS, OpenSuse

tgz och txz

Paket som används i: Slackware

tjära.xz

Paket som används i: Arch Linux

Det här dokumentet förklarar hur man bygger ett paket för Debian GNU / Linux kort. För detaljerad information om Debian-paketformatet och verktygen för att underhålla ett 'deb' -baserat Linux-system kan du ta en titt i Debian Package Management Book [dpmb] För att bygga paket för Debian GNU / Linux är dessa dokument väsentliga:

Paketet vi kommer att arbeta med heter 'helloworld' och har versionsnummer 0.1. För demonstrationsändamål innehåller den helt enkelt ett enda Python-skript som matar ut det berömda meddelandet ”Hej världen!”:

#!/ usr / bin / python-utskrift ("Hej världen!") 

2. Krav

2.1. GPG-nyckel

Som steg 1, ha din GPG-nyckel tillgänglig. Senare kommer nyckeln att behövas för att signera paketet. Tänk på att osignerade paket är opålitliga och inte kan ingå i Debians universum.

Om du inte har en GPG-nyckel skapar du en. Du kan följa de tre stegen nedan. Det första kommandot genererar en ny nyckel, den andra exporterar din nya nyckel till en separat fil och den tredje lägger till nyckeln till din personliga nyckelring.

$ gpg --gen-key $ gpg -a --output ~ /.gnupg / YOUR_NAME.gpg --export 'DITT NAMN' $ gpg --import ~ /.gnupg / YOUR_NAME.gpg 

Se till att det angivna namnet _DITT NAMN är korrekt under skapelsen. Det är vanligt att använda en kombination av förnamn och efternamn. Det här namnet måste vara exakt detsamma i paketet när du skapar "kontroll" -filen för Debian-paketet. För mer information om GPG, se GNU Privacy Handbook [gph].

2.2. Kedjan för förpackningsverktyg

För att bygga ett Debian-paket med källkod krävs följande programvarupaket på ditt system:

Som användar 'root' kan du installera dessa med följande kommando:

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

2.3. Förbered programvaran som ska förpackas

Vi måste förbereda en katalog för att bygga paketet. Skapa en katalog för att förbereda miljön där vi kommer att bygga paketet:

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

Kopiera 'tjära.gz 'komprimerade arkiv i katalogen:

$ cp helloworld-0.1.tjära.gz ~./ build / helloworld / 0.1 

Byt till katalogen och extrahera paketet:

$ cd ~./ build / helloworld / 0.1 ~ / build / helloworld / 0.1 $ tjära -xzf helloworld-0.1.tjära.gz 

Nu innehåller katalogen både källkoden i en separat katalog och det komprimerade arkivet:

~ / build / helloworld / 0.1 $ ls helloworld-0.1 helloworld-0.1.tjära.gz 

3. Debianisering

Vid den här tiden lägger vi till de filer som är specifika för ett Debian-paket. Det är därför detta steg heter _Debianization_ av programvaran. Detta görs i flera enstaka steg.

3.1 Förbered förpackningsstrukturen

Byt till katalogen som håller hela källkoden för paketet. I vårt exempel innehåller paketet filen 'helloworld.py ', endast:

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

Låt oss lägga till de filer som är specifika för ett Debian-paket. Verktyget 'dh_make' spelar in. Växeln '-e' använder den angivna adressen som e-postadress i fältet 'Underhållare' i filen 'debian / control'. Att bygga paketet använder istället din egen e-postadress. Tänk på att använda samma e-postadress som motsvarar din GPG-nyckel.

Växeln '-f' använder den givna filen som originalkällarkiv och hoppar över kopieringen av det aktuella programträdet till 'program.orig '.

~ / build / helloworld / 0.1 / helloworld-0.1 $ dh_make -e [email protected] -f… / helloworld-0.1.tjära.gz 

Vid uppmaningen ombeds du välja vilken typ av paket som ska skapas. Att välja _single binary_ type 's'.

Typ av paket: singel binär, indep binär, multipel binär, bibliotek, kärnmodul, kärnkorrigering? [s / i / m / l / k / n] s Underhållarnamn: Frank Hofmann E-postadress: [e-postskyddad] Datum: lör 04 nov 2017 21:16:13 +0100 Paketnamn: helloworld Version: 0.1 Licens: blank Typ av paket: Single Hit  för att bekräfta: För närvarande finns det ingen Makefile på toppnivå. Detta kan kräva ytterligare inställning. Gjort. Redigera filerna i debian / underkatalogen nu. Du bör också kontrollera att helloworld Makefiles installeras i $ DESTDIR och inte i / . 

Detta resulterar i en katalog som heter 'debian':

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

Den här katalogen innehåller alla paketspecifika filer.

3.2. Justera kontrollfilen

Filen 'debian / control' behåller de beroenden som behövs _ för att bygga_ paketet. Med kommandot 'dpkg-depcheck -d ./ configure 'får du en lista med alla nödvändiga paket. I vårt fall behövs inget ytterligare paket eftersom Python är ett tolkat språk.

Därefter måste vi redigera filen 'debian / control' och lägga till paketspecifika värden. För vårt exempel ser det ut som följer:

Källa: helloworld Avsnitt: python Prioritet: valfritt Underhållare: Frank Hofmann <[email protected]> Build-Depends: debhelper (> = 9) Standard-version: 3.9.5 Hemsida: http: // www.efho.de / # Vcs-Git: git: // anonscm.debian.org / collab-maint / helloworld.git # Vcs-webbläsare: http: // anonscm.debian.org /?p = collab-maint / helloworld.git; a = sammanfattning Paket: helloworld Architecture: any Beror på: $ shlibs: Depends, $ misc: Depends, python Beskrivning: Print Hello World in Python Print Hello World in Python 

3.3. Justera upphovsrättsfilen

Filen 'debian / copyright' innehåller licensinformation för programvarupaketet. Den är förberedd för släpp via GNU Public License 2 (GPLv2). För vårt exempel ser det ut som följer:

Format: http: // www.debian.org / doc / förpackningshandböcker / copyright-format / 1.0 / Upstream-Name: helloworld Källa: http: // www.efho.de / Files: debian / * Copyright: 2017 Frank Hofmann <[email protected]> Licens: GPL-2 + Detta paket är fri programvara; du kan distribuera den och / eller ändra den under villkoren i GNU General Public License som publicerats av Free Software Foundation; antingen version 2 av licensen, eller (efter eget val) vilken senare version som helst ... Detta paket distribueras i hopp om att det kommer att vara användbart, men utan någon garanti; utan ens den underförstådda garantin för SÄLJBARHET eller FITNESS FÖR ETT SÄRSKILT SYFTE. Se GNU General Public License för mer information ... Du borde ha fått en kopia av GNU General Public License tillsammans med detta program. Om inte, se  . På Debian-system finns den fullständiga texten till GNU General Public License version 2 i "/ usr / share / common-licens / GPL-2". 

3.4. Justera ändringsloggfilen

Efter upphovsrättsinformation måste filen 'debian / changelog' justeras. I vårt exempel lägger vi till informationen "Initial release".

helloworld (0.1-1) instabil; brådskande = låg * Initial release - Frank Hofmann <[email protected]> Lör 04 nov 2017 21:16:13 +0100 

Det är allt vi behöver hittills - nu kan vi äntligen bygga paketet.


4. Bygg paketet

För att bygga paketet måste vi flytta upp en katalog och köra följande kommando:

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

Alternativet '-rfakeroot' tillåter 'dpkg-buildpackage' att köra kommandon som en privilegierad användare med hjälp av kommandot 'fakeroot'. Detta är nödvändigt för att förbereda paketet och för att skapa filer och kataloger.
Kommandot ovan resulterar i en längre lista med utgående meddelanden (visas här i en tysk språkmiljö):

dpkg-buildpackage: Quellpaket helloworld dpkg-buildpackage: Quellpaket helloworld dpkg-buildpackage: Quellversion 0.1-1 dpkg-buildpackage: Quelldistribution instabil dpkg-buildpackage: Quellen geändert durch Frank Hofmann <[email protected]> dpkg-buildpackage: Host-Architektur amd64 dpkg-source --before-build helloworld-0.1 fakeroot debian / regler ren dh ren dh_testdir dh_auto_clean dh_clean dpkg-källa -b helloworld-0.1 dpkg-källa: Information: Quellformat "3.0 (quilt) "wird verwendet dpkg-source: Information: helloworld wird unter Benutzung des existierenden ./ helloworld_0.1.orig.tjära.gz byggd dpkg-källa: Information: helloworld wird in helloworld_0.1-1.debian.tjära.xz byggd dpkg-källa: Information: helloworld wird in helloworld_0.1-1.DSC gebaut debian / rules build dh bygga dh_testdir dh_auto_configure dh_auto_build dh_auto_test fakeroot debian / rules binära dh binära 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 Depends von Paket Helloworld: Unbekannte Substitutionsvariable $ shlibs : Beror på dh_md5sums dh_builddeb dpkg-deb: Paket "helloworld" ligger i "... / helloworld_0.1-1_amd64.deb "byggd. dpkg-byten <… /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-bitars RSA Schlüssel, ID D431AC07, erzeugt 2014-09-05 

4.1. Validerar paketet

Grattis - du lyckades bygga ett Debian-paket - ja! Låt oss nu titta närmare på paketet. Här spelar 'lintian' in. Detta verktyg validerar ditt paket för att hitta överträdelser mot de strikta regler som Debian-paket måste uppfylla.

För att köra testerna skriv in följande kommando:

lintian helloworld_0.1-1_amd64.deb 

Verktyget hittar inte regelöverträdelser utan också stavfel och felaktiga tecken. Växeln '-pedantic' ber 'lintian' att vara mycket mer kritisk än vanligt. Som du kan se nedan är 'lintian' lite grinig och har upptäckt tre varningar och ett fel.

Med undantag för den första varningen kan vi enkelt göra 'lintian' lycklig och justera paketets innehåll enligt regeluppsättningen. Varningen "new-package-should-close-itp-bug" innebär att det inte finns någon felrapport mot ITP-paketet (ITP betyder _intended to package_). För ett vanligt Debian-paket måste en bugrapport skickas till bugtracker för paket ITP för att meddela andra att du tänker börja packa denna programvara.

4.2. Varning: 'readme-debian-contains-debmake-template

Filen 'LÄS.Debian 'är avsett att hålla ytterligare anteckningar angående detta paket. 'dh_make' skapade den här filen åt oss:

helloworld för Debian ---------------------  -- Frank Hofmann <[email protected]> Lör 04 nov 2017 21:16:13 +0100 

I vårt exempel har vi inte ytterligare information, så vi kan ta bort filen.

4.3. Varning: 'beskrivning-börjar-med-ledande-mellanslag'

Denna varning tas upp eftersom den längre beskrivningen av vårt paket i filen 'debian / control' börjar med mer än ett enda mellanslag. Så snart vi tar bort ett enda utrymme försvinner varningen.

4.4. Fel: 'description-synopsis-is-duplicated'

Varje paket kräver både en kort och en längre beskrivning i 'debian / control'. Detta fel tas upp eftersom båda beskrivningarna är identiska. Så snart vi förlängde den längre beskrivningen är felet borta.


5. Länkar och referenser

- [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: Debian New Maintainer's Guide
- [dpmb] Axel Beckert, Frank Hofmann: Debian Package Management Book
- [dpm] Debians policyhandbok
- [dpt] Debian Packaging Tutorial
- [gph] GNU: s sekretesshandbok
- [lushpaiPackage] Alex Lushpai: Hur man skapar debianpaket från källan


6. Bekräftelser

Författaren vill tacka Axel Beckert och Gerold Rupprecht för deras stöd och kritiker när de förbereder denna artikel.

Battle for Wesnoth Tutorial
Slaget om Wesnoth är ett av de mest populära open source-strategispel som du kan spela just nu. Det här spelet har inte bara utvecklats under mycket l...
0 A.D. Handledning
Av de många strategispelen där ute, 0 A.D. lyckas framstå som en omfattande titel och ett mycket djupt, taktiskt spel trots att det är öppen källkod. ...
Unity3D självstudie
Introduktion till Unity 3D Unity 3D är en kraftfull spelutvecklingsmotor. Det är tvärplattform som gör att du kan skapa spel för mobil, webb, skrivbor...