Debian

Oprettelse af Debian-pakke HowTo

Oprettelse af Debian-pakke HowTo

1. Forord

At være ansvarlig for en maskine betyder at tage sig af både hardware og softwarekomponenter. Som det ses i hverdagen som systemadministrator, er det meget bedre at installere software som en softwarepakke snarere end en masse kildefiler. Dette reducerer omkostningerne til korrekt vedligeholdelse af systemet.

Pakker, der er tilgængelige fra din foretrukne distributør, valideres og overvåges af en pakkeholder. Han testede softwaren og forsikrer, at den passer til de andre softwarepakker, der er tilgængelige i distributionen. Desuden er pakken underskrevet med en GPG-nøgle fra pakkeholderen. Dette garanterer pakkens integritet og viser dig, at pakken kommer fra en betroet kilde.

Pakkeformatet afhænger af din Linux-distribution. De valgte formater er følgende:

deb

Pakker anvendt i: Debian GNU / Linux, Ubuntu, Armbian, Linux Mint, Knoppix

omdrejningstal

Pakker anvendt i: RedHat, Fedora, CentOS, OpenSuse

tgz og txz

Pakker anvendt i: Slackware

tjære.xz

Pakker anvendt i: Arch Linux

Dette dokument forklarer, hvordan man kort bygger en pakke til Debian GNU / Linux. For detaljeret information om Debian-pakkeformatet og værktøjerne til at vedligeholde et 'deb' -baseret Linux-system kan du se på Debian Package Management Book [dpmb] For at oprette pakker til Debian GNU / Linux er disse dokumenter vigtige:

Pakken, vi vil arbejde med, hedder 'helloworld' og har version nummer 0.1. Til demonstrationsformål indeholder det simpelthen et enkelt Python-script, der udsender den berømte besked “Hej verden!”:

#!/ usr / bin / python print ("Hej, verden!") 

2. Krav

2.1. GPG-nøgle

Som trin 1 skal du have din GPG-nøgle tilgængelig. Senere vil nøglen være nødvendig for at underskrive pakken. Husk, at usignerede pakker er upålidelige og ikke kan være en del af Debian-universet.

Hvis du ikke har en GPG-nøgle, skal du oprette en. Du kan følge de tre trin nedenfor. Den første kommando genererer en ny nøgle, den anden eksporterer din nye nøgle til en separat fil, og den tredje tilføjer nøglen til din personlige nøglering.

$ gpg --gen-nøgle $ gpg -a --output ~ /.gnupg / YOUR_NAME.gpg --eksport 'DIN NAVN' $ gpg --import ~ /.gnupg / YOUR_NAME.gpg 

Under oprettelsen skal du sikre dig, at det givne navn _DIT NAVN_ er korrekt. Det er almindeligt at bruge en kombination af fornavn og efternavn. Dette navn skal være nøjagtigt det samme i pakken, når du opretter 'kontrol'-filen til Debian-pakken. For mere information om GPG, se GNU Privacy Handbook [gph].

2.2. Emballageværktøjskæden

For at opbygge en Debian-pakke med kildekode kræves følgende softwarepakker på dit system:

Som bruger 'root' kan du installere disse ved hjælp af følgende kommando:

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

2.3. Forbered softwaren, der skal pakkes

Vi er nødt til at forberede en mappe til at oprette pakken. Opret en mappe for at forberede det miljø, hvor vi vil oprette pakken:

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

Kopier 'tjære.gz 'komprimeret arkiv i biblioteket:

$ cp helloworld-0.1.tjære.gz ~./ build / helloworld / 0.1 

Skift til biblioteket, og udpak pakken:

$ cd ~./ build / helloworld / 0.1 ~ / build / helloworld / 0.1 $ tjære -xzf helloworld-0.1.tjære.gz 

Nu indeholder biblioteket både kildekoden i en separat mappe og det komprimerede arkiv:

~ / build / helloworld / 0.1 $ ls helloworld-0.1 helloworld-0.1.tjære.gz 

3. Debianisering

På dette tidspunkt vil vi tilføje de filer, der er specifikke for en Debian-pakke. Derfor hedder dette trin _Debianization_ af softwaren. Dette gøres i flere enkelte trin.

3.1 Forbered pakkestrukturen

Skift til den mappe, der holder hele kildekoden til pakken. I vores eksempel indeholder pakken filen 'helloworld.py ', kun:

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

Lad os tilføje de filer, der er specifikke for en Debian-pakke. Værktøjet 'dh_make' kommer i spil. Omskifteren '-e' bruger den givne adresse som e-mail-adresse i feltet 'Vedligeholdelse' i 'debian / kontrol'-filen. Byg pakken brug i stedet din egen e-mail-adresse. Husk at bruge den samme e-mail-adresse, der svarer til din GPG-nøgle.

Omskifteren '-f' bruger den givne fil som det originale kildearkiv og springer kopieringen af ​​det aktuelle programtræ til 'program.orig '.

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

Ved prompten bliver du bedt om at vælge den type pakke, der skal oprettes. For at vælge _single binær_ type 's'.

Pakketype: enkelt binær, indep binær, multipel binær, bibliotek, kernemodul, kernepatch? [s / i / m / l / k / n] s Vedligeholdelsesnavn: Frank Hofmann E-mail-adresse: [e-mailbeskyttet] Dato: Lør, 04. nov 2017 21:16:13 +0100 Pakkenavn: helloworld Version: 0.1 Licens: blank Pakketype: Single Hit  for at bekræfte: I øjeblikket er der ingen øverste niveau Makefile. Dette kan kræve yderligere indstilling. Færdig. Rediger filerne i debian / underkatalog nu. Du skal også kontrollere, at helloworld Makefiles installeres i $ DESTDIR og ikke i / . 

Dette resulterer i en mappe kaldet 'debian':

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

Denne mappe indeholder alle de pakkespecifikke filer.

3.2. Juster kontrolfilen

Filen 'debian / control' beholder de afhængigheder, der er nødvendige _for at opbygge_ pakken. Brug kommandoen 'dpkg-depcheck -d ./ configure 'du modtager en liste med alle de nødvendige pakker. I vores tilfælde er der ingen yderligere pakke nødvendig, fordi Python er et fortolket sprog.

Derefter skal vi redigere filen 'debian / control' og tilføje pakke-specifikke værdier. For vores eksempel ser det ud som følger:

Kilde: helloworld Sektion: python Prioritet: valgfri Vedligeholder: Frank Hofmann <[email protected]> Build-Depends: debhelper (> = 9) Standard-version: 3.9.5 Hjemmeside: 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 = resume Pakke: helloworld Arkitektur: enhver Afhænger: $ shlibs: Afhænger, $ misc: Afhænger, python Beskrivelse: Udskriver Hello World i Python Udskriver Hello World i Python 

3.3. Juster copyright-filen

Filen 'debian / copyright' indeholder licensoplysningerne til softwarepakken. Den er klar til frigivelse via GNU Public License 2 (GPLv2). For vores eksempel ser det ud som følger:

Format: http: // www.debian.org / doc / emballage-manualer / copyright-format / 1.0 / Upstream-Name: helloworld Kilde: http: // www.efho.de / Files: debian / * Ophavsret: Frank Hofmann 2017 <[email protected]> Licens: GPL-2 + Denne pakke er gratis software; du kan omfordele den og / eller ændre den under vilkårene i GNU General Public License som offentliggjort af Free Software Foundation; enten version 2 af licensen eller (efter eget valg) enhver senere version ... Denne pakke distribueres i håb om, at den vil være nyttig, men UDEN GARANTI; uden engang den underforståede garanti for salgbarhed eller egnethed til et specifikt formål. Se GNU General Public License for flere detaljer ... Du skulle have modtaget en kopi af GNU General Public License sammen med dette program. Hvis ikke, se  . På Debian-systemer findes den komplette tekst til GNU General Public License version 2 i "/ usr / share / common-licens / GPL-2". 

3.4. Juster ændringslogfilen

Efter copyrightoplysningerne skal filen 'debian / changelog' justeres. I vores eksempel tilføjer vi oplysningerne "Indledende udgivelse".

helloworld (0.1-1) ustabil; haster = lav * Indledende frigivelse - Frank Hofmann <[email protected]> Lør, 04. nov 2017 21:16:13 +0100 

Det er alt, hvad vi har brug for hidtil - nu kan vi endelig bygge pakken.


4. Byg pakken

For at opbygge pakken skal vi flytte en mappe op og køre følgende kommando:

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

Indstillingen '-rfakeroot' tillader 'dpkg-buildpackage' at køre kommandoer som en privilegeret bruger ved hjælp af kommandoen 'fakeroot'. Dette er nødvendigt for at forberede pakken og oprette filer og mapper.
Kommandoen ovenfor resulterer i en længere liste over outputbeskeder (vist her i et tysk sprogmiljø):

dpkg-buildpackage: Quellpaket helloworld dpkg-buildpackage: Quellpaket helloworld dpkg-buildpackage: Quellversion 0.1-1 dpkg-buildpackage: Quelldistribution ustabil dpkg-buildpackage: Quellen geändert gennem 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-kilde -b helloworld-0.1 dpkg-kilde: Information: Quellformat "3.0 (quilt) "wird verwendet dpkg-kilde: Information: helloworld wird unter Benutzung des existierenden ./ helloworld_0.1.orig.tjære.gz bygget dpkg-kilde: Information: helloworld wird in helloworld_0.1-1.debian.tjære.xz bygget dpkg-kilde: Information: helloworld wird in helloworld_0.1-1.DSC gebaut debian / regler build dh bygge dh_testdir dh_auto_configure dh_auto_build dh_auto_test fakeroot debian / rules binære dh binære 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 afhænger von Paket helloworld: unbekannte Substitutionsvariable $ shlibs : Afhænger dh_md5sums dh_builddeb dpkg-deb: Paket "helloworld" sidder i "... / helloworld_0.1-1_amd64.deb "bygget. 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. Validering af pakken

Tillykke - det lykkedes dig at opbygge en Debian-pakke - ja! Lad os nu se nærmere på pakken. Her kommer 'lintian' i spil. Dette værktøj validerer din pakke for at finde overtrædelser mod de strenge regler, som Debian-pakker skal overholde.

For at køre testene skal du skrive følgende kommando:

lintian helloworld_0.1-1_amd64.deb 

Værktøjet finder ikke regelovertrædelser, men også stavefejl og forkerte tegn. Afbryderen '-pedantic' beder 'lintian' om at være meget mere kritisk end normalt. Som du kan se nedenfor er 'lintian' en smule grumpy og har opdaget tre advarsler og en fejl.

Bortset fra den første advarsel kan vi let gøre 'lintian' glad og justere pakkeindholdet i henhold til regelsættet. Advarslen 'new-package-should-close-itp-bug' betyder, at der ikke er nogen bugrapport mod ITP-pakken (ITP betyder _intended to package_). For en almindelig Debian-pakke skal der sendes en bugrapport til bugtracker for pakke ITP for at underrette andre om, at du agter at begynde at pakke denne software.

4.2. Advarsel: 'readme-debian-indeholder-debmake-skabelon

Filen 'LÆS.Debian 'er beregnet til at gemme yderligere noter angående denne pakke. 'dh_make' oprettede denne fil for os:

helloworld til Debian ---------------------  -- Frank Hofmann <[email protected]> Lør, 04. nov 2017 21:16:13 +0100 

I vores eksempel har vi ikke yderligere oplysninger, så vi kan slette filen.

4.3. Advarsel: 'beskrivelse-starter-med-førende-mellemrum'

Denne advarsel hæves, fordi den længere beskrivelse af vores pakke i filen 'debian / control' starter med mere end et enkelt mellemrum. Så snart vi fjerner et enkelt mellemrum, forsvinder advarslen.

4.4. Fejl: 'beskrivelse-synopsis-er-duplikeret'

Hver pakke kræver både en kort og en længere beskrivelse i 'debian / control'. Denne fejl hæves, fordi begge beskrivelser er identiske. Så snart vi udvidede den længere beskrivelse, er fejlen væk.


5. Links og referencer

- [ddr] Andreas Barth, Adam Di Carlo, Raphaël Hertzog, Lucas Nussbaum, Christian Schwarz, Ian Jackson: Debian-udviklerens reference
- [dnmg] Josip Rodin, Osamu Aoki: Debians nye vedligeholdelsesvejledning
- [dpmb] Axel Beckert, Frank Hofmann: Debian-pakkehåndteringsbogen
- [dpm] Debians politikhåndbog
- [dpt] Debian-emballagevejledningen
- [gph] GNU Privacy Handbook
- [lushpaiPackage] Alex Lushpai: Sådan oprettes debian-pakke fra kilden


6. Anerkendelser

Forfatteren vil gerne takke Axel Beckert og Gerold Rupprecht for deres støtte og kritikere under udarbejdelsen af ​​denne artikel.

Mus Føj musbevægelser til Windows 10 ved hjælp af disse gratis værktøjer
Føj musbevægelser til Windows 10 ved hjælp af disse gratis værktøjer
I de senere år har computere og operativsystemer udviklet sig meget. Der var et tidspunkt, hvor brugerne skulle bruge kommandoer til at navigere genne...
Mus Styr og administrer musebevægelse mellem flere skærme i Windows 10
Styr og administrer musebevægelse mellem flere skærme i Windows 10
Dual Display Mouse Manager lader dig kontrollere og konfigurere musebevægelse mellem flere skærme ved at bremse dens bevægelser nær grænsen. Windows 1...
Mus WinMouse giver dig mulighed for at tilpasse og forbedre musemarkørens bevægelse på Windows-pc
WinMouse giver dig mulighed for at tilpasse og forbedre musemarkørens bevægelse på Windows-pc
Hvis du vil forbedre standardfunktionerne for din musemarkør, skal du bruge freeware WinMouse. Det tilføjer flere funktioner, der hjælper dig med at f...