Debian

Debian Package Creation HowTo

Debian Package Creation HowTo

1. Forord

Å være ansvarlig for en maskin betyr å ta vare på maskinvaren så vel som programvarekomponentene. Som sett i hverdagen som systemadministrator, er det mye bedre å installere programvare som en programvarepakke i stedet for en haug med kildefiler. Dette reduserer kostnadene for å vedlikeholde systemet på riktig måte.

Pakker som er tilgjengelige fra din foretrukne distributør blir validert og overvåket av en pakkeholder. Han testet programvaren, og forsikrer at den passer til de andre programvarepakkene som er tilgjengelige i distribusjonen. Videre er pakken signert med en GPG-nøkkel fra pakkeholderen. Dette garanterer integriteten til pakken og viser deg at pakken er fra en klarert kilde.

Pakkeformatet avhenger av Linux-distribusjonen din. Valgte formater er følgende:

deb

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

rpm

Pakker brukt i: RedHat, Fedora, CentOS, OpenSuse

tgz og txz

Pakker brukt i: Slackware

tjære.xz

Pakkene som brukes i: Arch Linux

Dette dokumentet forklarer hvordan du kan lage en pakke for Debian GNU / Linux kort. For detaljert informasjon om Debian-pakkeformatet og verktøyene for å opprettholde et 'deb' basert Linux-system, kan du se nærmere på Debian Package Management Book [dpmb] For å bygge pakker for Debian GNU / Linux er disse dokumentene viktige:

Pakken vi skal jobbe med heter 'helloworld' og har versjonsnummer 0.1. For demonstrasjonsformål inneholder den ganske enkelt et enkelt Python-skript som gir den berømte meldingen "Hei, verden!”:

#!/ usr / bin / python-utskrift ("Hei, verden!") 

2. Krav

2.1. GPG-nøkkel

Som trinn 1, ha GPG-nøkkelen tilgjengelig. Senere vil det være nødvendig med nøkkelen for å signere pakken. Husk at usignerte pakker er upålitelige og ikke kan være en del av Debian-universet.

I tilfelle du ikke har en GPG-nøkkel, må du opprette en. Du kan følge de tre trinnene nedenfor. Den første kommandoen genererer en ny nøkkel, den andre eksporterer den nye nøkkelen til en egen fil, og den tredje legger til nøkkelen til din personlige nøkkelring.

$ gpg --gen-nøkkel $ gpg -a - utgang ~ /.gnupg / YOUR_NAME.gpg --eksport 'DITT NAVN' $ gpg --import ~ /.gnupg / YOUR_NAME.gpg 

Under opprettelsen må du sørge for at det oppgitte navnet _DITT NAVN_ er riktig. Det er vanlig å bruke en kombinasjon av fornavn og etternavn. Dette navnet må være nøyaktig det samme i pakken, når du oppretter "kontroll" -filen til Debian-pakken. For mer informasjon om GPG, se GNU Privacy Handbook [gph].

2.2. Emballasjeverktøykjeden

For å bygge en Debian-pakke med kildekode kreves følgende programvarepakker på systemet ditt:

Som bruker 'root' kan du installere disse ved å bruke følgende kommando:

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

2.3. Forbered programvaren som skal pakkes

Vi må lage en katalog for å lage pakken. Lag en katalog for å forberede miljøet der vi skal bygge pakken:

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

Kopier 'tjære.gz 'komprimert arkiv i katalogen:

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

Bytt til katalogen, og trekk ut pakken:

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

Nå inneholder katalogen både kildekoden i en egen katalog og det komprimerte arkivet:

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

3. Debianisering

På dette tidspunktet vil vi legge til filene som er spesifikke for en Debian-pakke. Derfor heter dette trinnet _Debianization_ av programvaren. Dette gjøres i flere trinn.

3.1 Forbered pakkestrukturen

Bytt til katalogen som holder hele kildekoden til pakken. I vårt eksempel inneholder pakken filen 'helloworld.py ', bare:

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

La oss legge til filene som er spesifikke for en Debian-pakke. Verktøyet 'dh_make' spiller inn. Bryteren '-e' bruker den oppgitte adressen som e-postadresse i 'Vedlikeholder' -feltet i 'debian / control'-filen. Bygge pakken bruk din egen e-postadresse, i stedet. Husk å bruke den samme e-postadressen som tilsvarer GPG-nøkkelen.

Bryteren '-f' bruker den gitte filen som det originale kildearkivet, og hopper over kopieringen av det nåværende programtreet til 'program.orig '.

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

På forespørselen blir du bedt om å velge hvilken type pakke som skal opprettes. For å velge _single binary_ type 's'.

Type pakke: enkelt binær, indep binær, flere binær, bibliotek, kjernemodul, kjernelapp? [s / i / m / l / k / n] s Vedlikeholders navn: Frank Hofmann E-postadresse: [e-postbeskyttet] Dato: Lør 04. november 2017 21:16:13 +0100 Pakkens navn: helloworld Versjon: 0.1 Lisens: blank Type pakke: Enkelt treff  for å bekrefte: For øyeblikket er det ingen øverste nivå Makefile. Dette kan kreve ytterligere innstilling. Ferdig. Rediger filene i debian / underkatalogen nå. Du bør også sjekke at helloworld Makefiles installerer i $ DESTDIR og ikke i / . 

Dette resulterer i en katalog kalt 'debian':

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

Denne katalogen inneholder alle pakkespesifikke filer.

3.2. Juster kontrollfilen

Filen 'debian / control' beholder avhengighetene som er nødvendige _ for å bygge_ pakken. Ved hjelp av kommandoen 'dpkg-depcheck -d ./ configure 'får du en liste med alle nødvendige pakker. I vårt tilfelle er det ingen ytterligere pakke nødvendig fordi Python er et tolket språk.

Deretter må vi redigere filen 'debian / control' og legge til pakkespesifikke verdier. For vårt eksempel ser det ut som følger:

Kilde: helloworld Seksjon: python Prioritet: valgfri Vedlikeholder: Frank Hofmann <[email protected]> Build-Depends: debhelper (> = 9) Standard-versjon: 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 = sammendrag Pakke: helloworld Architecture: any Avhenger: $ shlibs: Depends, $ misc: Depends, python Beskrivelse: Print Hello World in Python Print Hello World in Python 

3.3. Juster copyright-filen

Filen 'debian / copyright' inneholder lisensinformasjonen for programvarepakken. Den er forberedt for utgivelsen via GNU Public License 2 (GPLv2). For vårt eksempel ser det slik ut:

Format: http: // www.debian.org / doc / emballasjehåndbøker / copyright-format / 1.0 / Oppstrøms-navn: helloworld Kilde: http: // www.efho.de / Files: debian / * Copyright: 2017 Frank Hofmann <[email protected]> Lisens: GPL-2 + Denne pakken er gratis programvare; du kan distribuere den og / eller endre den under vilkårene i GNU General Public License som publisert av Free Software Foundation; enten versjon 2 av lisensen, eller (etter eget valg) en hvilken som helst senere versjon ... Denne pakken distribueres i håp om at den vil være nyttig, men UTEN GARANTI; uten engang den underforståtte garantien om salgbarhet eller egnethet for et spesielt formål. Se GNU General Public License for mer informasjon ... Du burde ha mottatt en kopi av GNU General Public License sammen med dette programmet. Hvis ikke, se  . På Debian-systemer finnes den komplette teksten til GNU General Public License versjon 2 i "/ usr / share / common-lisenser / GPL-2". 

3.4. Juster endringsloggfilen

Etter informasjonen om copyright må filen 'debian / changelog' justeres. I vårt eksempel legger vi til informasjonen "Første utgivelse".

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

Det er alt vi trenger så langt - nå kan vi endelig bygge pakken.


4. Bygg pakken

For å bygge pakken må vi flytte opp en katalog og kjøre følgende kommando:

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

Alternativet '-rfakeroot' tillater 'dpkg-buildpackage' å kjøre kommandoer som en privilegert bruker ved hjelp av kommandoen 'fakeroot'. Dette er nødvendig for å klargjøre pakken, og for å lage filer og kataloger.
Kommandoen ovenfor resulterer i en lengre liste over utgangsmeldinger (vist her i et tysk språkmiljø):

dpkg-buildpackage: Quellpaket helloworld dpkg-buildpackage: Quellpaket helloworld dpkg-buildpackage: Quellversion 0.1-1 dpkg-buildpackage: Quelldistribution ustabil 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-kilde -b helloworld-0.1 dpkg-kilde: Informasjon: Quellformat "3.0 (quilt) "wird verwendet dpkg-kilde: Informasjon: helloworld wird unter Benutzung des existierenden ./ helloworld_0.1.orig.tjære.gz bygget dpkg-kilde: Informasjon: helloworld wird in helloworld_0.1-1.debian.tjære.xz bygget dpkg-kilde: Informasjon: 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 / regler 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 Avhenger von Paket Helloworld: Unbekannte Substitutionsvariable $ shlibs : Avhenger dh_md5sums dh_builddeb dpkg-deb: Paket "helloworld" ligger i "... / helloworld_0.1-1_amd64.deb "bygget. dpkg-bytter <… /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-biters RSA Schlüssel, ID D431AC07, erzeugt 2014-09-05 

4.1. Validerer pakken

Gratulerer - du lyktes med å bygge en Debian-pakke - ja! La oss nå se nærmere på pakken. Her spiller 'lintian' inn. Dette verktøyet validerer pakken din for å finne brudd på de strenge reglene Debian-pakker må oppfylle.

For å kjøre testene skriver du inn følgende kommando:

lintian helloworld_0.1-1_amd64.deb 

Verktøyet finner ikke regelbrudd, men også stavefeil og feil tegn. Bryteren '-pedantic' ber 'lintian' om å være mye mer kritisk enn vanlig. Som du kan se nedenfor er 'lintian' litt gretten og har oppdaget tre advarsler og en feil.

Med unntak av den første advarselen kan vi enkelt gjøre 'lintian' lykkelig og justere innholdet i pakken i henhold til regelverket. Advarselen 'new-package-should-close-itp-bug' betyr at det ikke er noen feilrapport mot ITP-pakken (ITP betyr _intended to package_). For en vanlig Debian-pakke må det sendes en feilrapport til bugtracker for pakke ITP for å varsle andre om at du har tenkt å begynne å pakke denne programvaren.

4.2. Advarsel: 'readme-debian-inneholder-debmake-mal

Filen 'README.Debian 'er ment å føre ekstra notater angående denne pakken. 'dh_make' opprettet denne filen for oss:

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

I vårt eksempel har vi ikke tilleggsinformasjon, så vi kan slette filen.

4.3. Advarsel: 'beskrivelse-starter-med-ledende-mellomrom'

Denne advarselen heves fordi den lengre beskrivelsen av pakken vår i filen 'debian / control' starter med mer enn ett mellomrom. Så snart vi fjerner et enkelt mellomrom, vil advarselen forsvinne.

4.4. Feil: 'beskrivelse-synopsis-er-duplisert'

Hver pakke krever både en kort og en lengre beskrivelse i 'debian / control'. Denne feilen heves fordi begge beskrivelsene er identiske. Så snart vi utvidet den lengre beskrivelsen, er feilen borte.


5. Lenker og referanser

- [ddr] Andreas Barth, Adam Di Carlo, Raphaël Hertzog, Lucas Nussbaum, Christian Schwarz, Ian Jackson: Debian Developer's Reference
- [dnmg] Josip Rodin, Osamu Aoki: Debian New Maintainer's Guide
- [dpmb] Axel Beckert, Frank Hofmann: Debian Package Management Book
- [dpm] Debian Policy Manual
- [dpt] Debian Packaging Tutorial
- [gph] GNU Privacy Handbook
- [lushpaiPackage] Alex Lushpai: Hvordan lage debian-pakke fra kilden


6. Anerkjennelser

Forfatteren vil takke Axel Beckert og Gerold Rupprecht for deres støtte, og kritikere mens de forbereder denne artikkelen.

Mus Hvordan endre mus og berøringsplateinnstillinger ved hjelp av Xinput i Linux
Hvordan endre mus og berøringsplateinnstillinger ved hjelp av Xinput i Linux
De fleste Linux-distribusjoner leveres med "libinput" -biblioteket som standard for å håndtere inngangshendelser på et system. Den kan behandle inngan...
Mus Kartlegg museknappene på en annen måte for annen programvare med X-Mouse Button Control
Kartlegg museknappene på en annen måte for annen programvare med X-Mouse Button Control
Kanskje du trenger et verktøy som kan gjøre at musens kontroll endres med hvert program du bruker. Hvis dette er tilfelle, kan du prøve et program som...
Mus Microsoft Sculpt Touch Wireless Mouse Review
Microsoft Sculpt Touch Wireless Mouse Review
Jeg har nylig lest om Microsoft Sculpt Touch trådløs mus og bestemte meg for å kjøpe den. Etter å ha brukt den en stund bestemte jeg meg for å dele mi...