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:
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/pythonKrav
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-KeyUnder 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].
For å bygge en Debian -pakke med kildekode er følgende programvarepakker påkrevd på systemet ditt:
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 pbuilderVi 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.1Kopier 'tjære.GZ 'komprimerte arkiv i katalogen:
$ CP Helloworld-0.1.tjære.gz ~./build/helloworld/0.1Endre til katalogen, og trekke ut pakken:
$ CD ~./build/helloworld/0.1Nå inneholder katalogen både kildekoden i en egen katalog, og det komprimerte arkivet:
~/build/helloworld/0.1 $ lsDebianisering
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.
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.1La 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.gzPå 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?Dette resulterer i en katalog kalt 'Debian':
~/build/helloworld/0.1/Helloworld-0.1 $ lsDenne katalogen inneholder alle pakkespesifikke filer.
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: HelloworldFilen '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/Etter copyright -informasjonen må filen 'Debian/Changelog' justeres. I vårt eksempel legger vi til informasjonen “Initial Release”.
Helloworld (0.1-1) ustabil; haster = lavDet 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 -rfakerootAlternativet '-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ø):
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.DebVerktø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.
Filen 'Readme.Debian 'er ment å oppbevare flere notater angående denne pakken. 'dh_make' opprettet denne filen for oss:
Helloworld for DebianI vårt eksempel har vi ikke ytterligere informasjon, så vi kan slette filen.
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.
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.