Debian -pakkeoppretting Howto

Debian -pakkeoppretting Howto

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 å opprettholde systemet på riktig måte.

Pakker som er tilgjengelige fra din foretrukne distributør, blir validert og overvåket av en pakke vedlikeholder. 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 pakken vedlikeholder. Dette garanterer integriteten til pakken og viser deg at pakken er fra en pålitelig kilde.

Pakkeformatet avhenger av Linux -distribusjonen din. Utvalgte 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 som brukes i: Slackware

tjære.xz

Pakker brukt i: Arch Linux

Dette dokumentet forklarer hvordan du bygger 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 på Debian Package Management Book [DPMB] for å bygge pakker for Debian GNU/Linux disse dokumentene er essensielle:

  • Den Debian nye vedlikeholderens guide [DNMG]
  • Debian -utviklerens referanse [DDR]
  • Debian -emballasjeopplæringen [DPT]
  • Debian Policy Manual [DPM]

Pakken vi skal jobbe med heter 'Helloworld' og har versjonsnummeret 0.1. For demonstrasjonsformål inneholder det ganske enkelt et enkelt Python -skript som sender ut den berømte meldingen “Hallo, verden!”:

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

Krav

2.1. GPG -nøkkel

Som trinn 1, ha GPG -tasten tilgjengelig. Senere vil nøkkelen være nødvendig 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, men oppretter 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 nøkkelen til din personlige nøkkelring.

$ GPG-GEN-Key
$ gpg -a -output ~/.GNUPG/DIN_NAME.GPG -EXPORT 'Ditt navn'
$ gpg -Import ~/.GNUPG/DIN_NAME.GPG

Under opprettelsen må du sørge for at det gitte 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, ta en titt på GNU Privacy Handbook [GPH].

2.2. Emballasjeverktøykjeden

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

  • Bygg-essensiell
  • AutoConf
  • Automake
  • autotools-dev
  • DH-Make
  • Debhelper
  • DevScripts
  • Fakeroot
  • Xutils
  • Lintian
  • Pbuilder

Som bruker 'root' kan du installere disse ved hjelp av følgende kommando:

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

2.3. Forbered programvaren som skal pakkes

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

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

Kopier 'tjære.GZ 'komprimerte arkiv i katalogen:

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

Endre til katalogen, og trekke ut pakken:

$ CD ~./build/helloworld/0.1
~/build/helloworld/0.1 $ tar -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

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 enkelttrinn.

3.1 Forbered pakkestrukturen

Endre 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
Hei Verden.py

La oss legge til filene som er spesifikke for en Debian -pakke. Verktøyet 'dh_make' kommer inn i spill. Bryteren '-e' bruker den gitte 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 -tasten din.

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

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

På ledeteksten blir du bedt om å velge hvilken type pakke som skal opprettes. Å velge _single binary_ type 's'.

Type pakke: Enkelt binær, indp binær, multiple binær, bibliotek, kjernemodul, kjerneoppdatering?
[s/i/m/l/k/n] S
Vedlikeholdernavn: Frank Hofmann
E-postadress: [email protected]
Dato: Lør, 4. november 2017 21:16:13 +0100
Pakkenavn: Helloworld
Versjon: 0.1
Lisens: Blank
Type pakke: singel
Hit for å bekrefte:
For øyeblikket er det ingen toppnivå makefile. Dette kan kreve ytterligere innstilling.
Ferdig. Rediger filene i Debian/ underkatalogen nå. Du burde også
Sjekk 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' holder avhengighetene som trengs _To Build_ pakken. Bruke kommandoen 'dpkg -dekck -d ./konfigurere 'Du mottar en liste med alle nødvendige pakker. I vårt tilfelle er det ingen ytterligere pakke som trengs 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: Valgfritt
Vedlikeholder: Frank Hofmann
Byggavhengige: Debhelper (> = 9)
Standard-versjon: 3.9.5
Hjemmeside: http: // www.Efho.de/
#Vcs-git: git: // anonscm.Debian.org/kollap-maint/helloworld.git
#Vcs-nettleser: http: // anonscm.Debian.org/?P = kollab-vedlikehold/helloworld.git; a = sammendrag
Pakke: Helloworld
Arkitektur: hvilken som helst
Avhenger: $ shlibs: avhenger, $ misc: avhenger, python
Beskrivelse: Skriver ut Hello World in Python
Skriver ut Hello World in Python

3.3. Juster copyright -filen

Filen 'Debian/Copyright' inneholder lisensinformasjonen for programvarepakken. Det er utarbeidet for utgivelsen via GNU Public License 2 (GPLV2). For vårt eksempel ser det ut som følger:

Format: http: // www.Debian.org/doc/packaging-manuals/copyright-format/1.0/
Oppstrømsnavn: Helloworld
Kilde: http: // www.Efho.de/
Filer: Debian/*
Copyright: 2017 Frank Hofmann
Lisens: GPL-2+
Denne pakken er gratis programvare; Du kan omfordele det og/eller endre
det under vilkårene i GNU -allmennlisensen som publisert av
Free Software Foundation; enten versjon 2 av lisensen, eller
(på ditt alternativ) Enhver senere versjon.
.
Denne pakken er distribuert i håp om at den vil være nyttig,
men uten noen garanti; uten engang den underforståtte garantien til
Salgbarhet eller egnethet for et bestemt 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 Systems, den komplette teksten til GNU -generalen
Offentlig lisens versjon 2 finner du i "/usr/share/common-licenses/gpl-2".

3.4. Juster Changelog -filen

Etter copyright -informasjonen må filen 'Debian/Changelog' justeres. I vårt eksempel legger vi til informasjonen “Initial Release”.

Helloworld (0.1-1) ustabil; haster = lav
* Første utgivelse
-- Frank Hofmann lør, 4. november 2017 21:16:13 +0100

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


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 priviligert bruker ved hjelp av kommandoen 'Fakeroot'. Dette er nødvendig for å utarbeide pakken, og for å lage filer og kataloger.
Kommandoen over 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
DPKG-BuildPackage: Host-Architektur AMD64
DPKG-kilde-før-build Helloworld-0.1
Fakeroot Debian/regler ren
DH rent
dh_testdir
DH_AUTO_CLEAN
dh_clean
dpkg-source -b helloworld-0.1
DPKG-kilde: Informasjon: QuellFormat "3.0 (Quilt) "Wird Verwendet
DPKG-kilde: Informasjon: Helloworld Wird Unter Benutzung des Excisierenden ./helloworld_0.1.Orig.tjære.GZ Gebaut
DPKG-kilde: Informasjon: Helloworld Wird i Helloworld_0.1-1.Debian.tjære.XZ Gebaut
DPKG-kilde: Informasjon: Helloworld Wird i Helloworld_0.1-1.DSC Gebaut
Debian/regler bygger
dh build
dh_testdir
DH_AUTO_CONFIGURE
dh_auto_build
DH_AUTO_TEST
Fakeroot Debian/regler 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 avhenger Von Paket Helloworld: Unbekannte SubstitutionsVariable $ Shlibs: avhenger
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-kilde-Etter-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 Enentsperren.
Benutzer: "Frank Hofmann (Hofmann EDV)
""
4096-bit RSA Schlüssel, ID D431AC07, Erzeugt 2014-09-05

4.1. Validering av pakken

Gratulerer - du lyktes med å bygge en Debian -pakke - ja! La oss nå se nærmere på pakken. Her kommer 'lintian'. Dette verktøyet validerer pakken din for å finne brudd mot 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 gale tegn. Bryteren '-pedantisk' ber 'Lintian' om å være mye mer kritisk enn vanlig. Som du ser nedenfor 'Lintian' er litt gretten og har oppdaget tre advarsler, og en feil.

Bortsett fra den første advarselen kan vi enkelt gjøre 'lintian' lykkelig og justere pakkeinnholdet i henhold til regelsettet. Advarselen 'Nypakke-skulde-lukkede-itp-bug' betyr at det ikke er noen feilrapport mot ITP-pakken (ITP betyr _intended til pakke_). For en vanlig Debian -pakke må en feilrapport sendes til BugTracker for Package ITP for å varsle andre om at du har tenkt å begynne å pakke denne programvaren.

4.2. ADVARSEL: 'Readme-Debian-Inpains-Debmake-Template

Filen 'Readme.Debian 'er ment å oppbevare flere notater angående denne pakken. 'dh_make' opprettet denne filen for oss:

Helloworld for Debian
---------------------

-- Frank Hofmann lør, 4. november 2017 21:16:13 +0100

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

4.3. Advarsel: 'Beskrivelse-starts-med-ledende rom'

Denne advarselen heves fordi den lengre beskrivelsen av pakken vår i filen 'Debian/Control' starter med mer enn et enkelt rom. Så snart vi fjerner et enkelt rom 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 reises fordi begge beskrivelsene er identiske. Så snart vi forlenget den lengre beskrivelsen er feilen borte.


Lenker og referanser

- [DDR] Andreas Barth, Adam di Carlo, Raphaël Hertzog, Lucas Nussbaum, Christian Schwarz, Ian Jackson: Debian -utviklerens referanse
- [DNMG] Josip Rodin, Osamu Aoki: The Debian New Hainteres Guide
- [DPMB] Axel Beckert, Frank Hofmann: The Debian Package Management Book
- [DPM] Debian Policy Manual
- [DPT] Debian -emballasjeopplæringen
- [GPH] GNU Privacy Handbook
- [Lushpaipackage] Alex Lushpai: Hvordan lage Debian -pakke fra kilde


Anerkjennelser

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