Debian

Kako ustvariti paket Debian

Kako ustvariti paket Debian

1. Predgovor

Odgovornost za stroj pomeni skrb za strojno opremo in komponente programske opreme. Kot vidimo v vsakdanjem življenju sistemskega skrbnika, je veliko bolje namestiti programsko opremo kot programski paket in ne kot kup izvornih datotek. To zmanjša stroške pravilnega vzdrževanja sistema.

Pakete, ki so na voljo pri vašem najljubšem distributerju, potrdi in nadzira vzdrževalec paketov. Preizkusil je programsko opremo in zagotavlja, da ustreza drugim programskim paketom, ki so na voljo v distribuciji. Poleg tega je paket podpisan s ključem GPG vzdrževalca paketa. To zagotavlja celovitost paketa in prikazuje, da je paket iz zaupanja vrednega vira.

Oblika paketa je odvisna od vaše distribucije Linuxa. Izbrani formati so naslednji:

deb

Paketi, uporabljeni v: Debian GNU / Linux, Ubuntu, Armbian, Linux Mint, Knoppix

vrtljajev na minuto

Paketi, uporabljeni v: RedHat, Fedora, CentOS, OpenSuse

tgz in txz

Paketi, uporabljeni v: Slackware

katran.xz

Paketi, uporabljeni v: Arch Linux

Ta dokument na kratko razlaga, kako zgraditi paket za Debian GNU / Linux. Za podrobne informacije o formatu paketov Debian in orodijih za vzdrževanje sistema Linux, ki temelji na "deb", si lahko ogledate knjigo upravljanja paketov Debian [dpmb]. Za izdelavo paketov za Debian GNU / Linux so ti dokumenti bistveni:

Paket, s katerim bomo sodelovali, se imenuje "helloworld" in ima različico številka 0.1. Za predstavitvene namene preprosto vsebuje en sam Pythonov skript, ki prikaže znamenito sporočilo »Zdravo, svet!":

#!/ usr / bin / python print ("Pozdravljeni, svet!") 

2. Zahteve

2.1. GPG ključ

Kot prvi korak imejte na voljo ključ GPG. Kasneje bo za podpis paketa potreben ključ. Upoštevajte, da so nepodpisani paketi nezaupljivi in ​​ne morejo biti del vesolja Debian.

Če še nimate ključa GPG, ga še ustvarite. Upoštevajte tri spodnje korake. Prvi ukaz ustvari nov ključ, drugi izvozi vaš novi ključ v ločeno datoteko, tretji pa ključ doda vašemu osebnemu obesku za ključe.

$ gpg --gen-key $ gpg -a --output ~ /.gnupg / YOUR_NAME.gpg --export 'VAŠE IME' $ gpg --import ~ /.gnupg / YOUR_NAME.gpg 

Med ustvarjanjem se prepričajte, da je ime _Your NAME_ pravilno. Običajno se uporablja kombinacija imena in priimka. To ime bo moralo biti popolnoma enako v paketu, torej pri ustvarjanju datoteke 'control' paketa Debian. Za več informacij o GPG si oglejte priročnik o zasebnosti GNU [gph].

2.2. Veriga embalažnega orodja

Za izdelavo paketa Debian z izvorno kodo so v vašem sistemu potrebni naslednji programski paketi:

Kot uporabniški "root" jih lahko namestite z naslednjim ukazom:

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

2.3. Pripravite programsko opremo za pakiranje

Za izdelavo paketa moramo pripraviti imenik. Ustvarite imenik, da pripravite okolje, v katerem bomo sestavili paket:

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

Kopirajte 'tar.gz 'stisnjen arhiv v imeniku:

$ cp helloworld-0.1.katran.gz ~./ build / helloworld / 0.1 

Spremenite se v imenik in izvlecite paket:

$ cd ~./ build / helloworld / 0.1 ~ / build / helloworld / 0.1 $ tar -xzf helloworld-0.1.katran.gz 

Zdaj imenik vsebuje tako izvorno kodo v ločenem imeniku kot stisnjen arhiv:

~ / build / helloworld / 0.1 $ ls helloworld-0.1 helloworld-0.1.katran.gz 

3. Debianizacija

Na tej točki bomo dodali datoteke, ki so značilne za paket Debian. Zato se ta korak imenuje _Debianizacija_ programske opreme. To se naredi v več posameznih korakih.

3.1 Pripravite strukturo paketa

Preklopite v imenik, ki hrani celotno izvorno kodo paketa. V našem primeru paket vsebuje datoteko 'helloworld.py ', samo:

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

Dodajmo datoteke, ki so značilne za paket Debian. V poštev pride orodje 'dh_make'. Stikalo '-e' uporablja dani naslov kot e-poštni naslov v polju 'Vzdrževalec' datoteke 'debian / control'. Pri izdelavi paketa raje uporabite svoj e-poštni naslov. Ne pozabite uporabiti istega e-poštnega naslova, ki ustreza vašemu ključu GPG.

Stikalo '-f' uporablja dano datoteko kot izvirni arhiv in preskoči kopiranje trenutnega drevesa programa v 'program.Orig.

~ / build / helloworld / 0.1 / helloworld-0.1 $ dh_make -e [e-pošta zaščitena] -f… / helloworld-0.1.katran.gz 

Ob pozivu morate izbrati vrsto paketa, ki ga je treba ustvariti. Če želite izbrati _enojni binarni_ tip 's'.

Vrsta paketa: enojni binarni, indep binarni, več binarni, knjižnica, modul jedra, obliž jedra? [s / i / m / l / k / n] s Ime vzdrževalca: Frank Hofmann E-poštni naslov: [email protected] Datum: sobota, 4. november 2017 21:16:13 +0100 Ime paketa: helloworld Različica: 0.1 Licenca: prazno Vrsta paketa: Posamezen zadetek  za potrditev: Trenutno ni datoteke Make Make na najvišji ravni. To bo morda zahtevalo dodatno uglasitev. Končano. Zdaj uredite datoteke v debian / podimeniku. Preverite tudi, ali se helloworld Makefiles namesti v $ DESTDIR in ne v / . 

Rezultat je imenik, imenovan 'debian':

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

Ta imenik vsebuje vse datoteke, specifične za paket.

3.2. Prilagodite nadzorno datoteko

Datoteka 'debian / control' hrani odvisnosti, ki so potrebne za izdelavo paketa. Uporaba ukaza 'dpkg-depcheck -d ./ configure 'prejmete seznam z vsemi zahtevanimi paketi. V našem primeru nadaljnji paket ni potreben, ker je Python interpretiran jezik.

Nato moramo urediti datoteko 'debian / control' in dodati vrednosti, specifične za paket. Za naš primer je videti tako:

Vir: helloworld Razdelek: python Prednost: neobvezno Vzdrževalec: Frank Hofmann <[email protected]> Build-Depends: debhelper (> = 9) Različice standardov: 3.9.5 Domača stran: http: // www.efho.de / # Vcs-Git: git: // anonscm.debian.org / collab-maint / helloworld.git # Vcs-Browser: http: // anonscm.debian.org /?p = kolab-maint / helloworld.git; a = povzetek Paket: helloworld Arhitektura: poljubno Odvisno: $ shlibs: Depends, $ misc: Depends, python Opis: Natisne Hello World v Pythonu Natisne Hello World v Pythonu 

3.3. Prilagodite datoteko z avtorskimi pravicami

Datoteka 'debian / copyright' vsebuje informacije o licenci za programski paket. Pripravljen je za izdajo prek GNU Public License 2 (GPLv2). Za naš primer je videti tako:

Oblika: http: // www.debian.org / doc / priročniki za embalažo / format avtorskih pravic / 1.0 / Upstream-Name: helloworld Vir: http: // www.efho.de / Datoteke: debian / * Avtorske pravice: 2017 Frank Hofmann <[email protected]> Licenca: GPL-2 + Ta paket je brezplačna programska oprema; lahko ga distribuirate in / ali spremenite pod pogoji splošne javne licence GNU, kot jo je objavila Fundacija za prosto programsko opremo; bodisi različica 2 licence bodisi (po vaši izbiri) katera koli kasnejša različica ... Ta paket se distribuira v upanju, da bo koristen, vendar BREZ KAKRŠNEGA JAMSTVA; brez celo implicitne garancije ZA PRODAJNOST ali USTREZNOST ZA POSEBEN NAMEN. Za več podrobnosti glejte splošno javno licenco GNU ... S tem programom bi morali prejeti kopijo splošne javne licence GNU. Če ne, glej  . V sistemih Debian lahko celotno besedilo splošne javne licence GNU različice 2 najdete v "/ usr / share / common-licence / GPL-2". 

3.4. Prilagodite datoteko dnevnika sprememb

Po informacijah o avtorskih pravicah je treba prilagoditi datoteko 'debian / changelog'. V našem primeru dodamo informacijo “Začetna izdaja”.

helloworld (0.1-1) nestabilen; nujnost = nizka * Začetna izdaja - Frank Hofmann <[email protected]> Sobota, 4. november 2017 21:16:13 +0100 

To je vse, kar do zdaj potrebujemo - zdaj lahko končno sestavimo paket.


4. Sestavite paket

Za izdelavo paketa se moramo premakniti za en imenik navzgor in zagnati naslednji ukaz:

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

Možnost '-rfakeroot' omogoča 'dpkg-buildpackage' zagon ukazov kot privilegiran uporabnik s pomočjo ukaza 'fakeroot'. To je potrebno za pripravo paketa ter za ustvarjanje datotek in imenikov.
Zgornji ukaz privede do daljšega seznama izhodnih sporočil (prikazano tukaj v nemškem jezikovnem okolju):

dpkg-buildpackage: Quellpaket helloworld dpkg-buildpackage: Quellpaket helloworld dpkg-buildpackage: Quellversion 0.1-1 dpkg-buildpackage: Quelldistribution nestabilni dpkg-buildpackage: Quellen geändert durch Frank Hofmann <[email protected]> dpkg-buildpackage: Host-Architektur amd64 dpkg-source --before-build helloworld-0.1 fakeroot debian / rules clean dh clean dh_testdir dh_auto_clean dh_clean dpkg-source -b helloworld-0.1 dpkg-vir: Informacije: Quellformat "3.0 (odeja) "wird verwendet dpkg-vir: Informacije: helloworld wird unter Benutzung des existierenden ./ helloworld_0.1.orig.katran.gz gebaut dpkg-source: Informacije: helloworld wird v helloworld_0.1-1.debian.katran.xz gebaut dpkg-source: Informacije: helloworld wird v helloworld_0.1-1.DSC gebaut debian / pravila izdelave dh graditi dh_testdir dh_auto_configure dh_auto_build dh_auto_test fakeroot debian / pravila binarni dh binarni 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 je odvisna von paket helloworld: unbekannte Substitutionsvariable $ shlibs : Odvisno 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-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-bitni RSA Schlüssel, ID D431AC07, erzeugt 05.09.2014 

4.1. Potrditev paketa

Čestitamo - uspeli ste zgraditi paket Debian - ja! Zdaj pa si podrobneje oglejmo paket. Tu nastopi 'lintian'. To orodje potrdi vaš paket, da bi ugotovilo kršitve strogih pravil, ki jih mora izpolnjevati paket Debian.

Če želite zagnati preskuse v naslednjem ukazu:

lintian helloworld_0.1-1_amd64.deb 

Orodje ne najde kršitev pravil, ampak tudi črkovalne napake in napačne znake. Stikalo "-pedantic" zahteva, da je "lintian" veliko bolj kritičen kot običajno. Kot lahko vidite spodaj, je "lintian" nekoliko mrzličen in je odkril tri opozorila in eno napako.

Razen prvega opozorila lahko 'lintian' enostavno osrečimo in vsebino paketa prilagodimo v skladu z določenimi pravili. Opozorilo 'new-package-should-close-itp-bug' pomeni, da proti paketu ITP ni poročila o napaki (ITP pomeni _namenjeno paketu). Za običajni paket Debian je treba poslati poročilo o napaki programski opremi za pakete ITP, da druge obvestite, da nameravate začeti pakirati to programsko opremo.

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

Datoteka 'README.Debian 'naj bi hranil dodatne opombe v zvezi s tem paketom. 'dh_make' nam je ustvaril to datoteko:

helloworld za Debian ---------------------  -- Frank Hofmann <[email protected]> Sobota, 04. novembra 2017 21:16:13 +0100 

V našem primeru nimamo dodatnih informacij, zato lahko datoteko izbrišemo.

4.3. Opozorilo: 'opis-začne-z-vodilnimi presledki'

To opozorilo se sproži, ker se daljši opis našega paketa v datoteki 'debian / control' začne z več kot enim presledkom. Takoj, ko odstranimo en presledek, opozorilo izgine.

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

Vsak paket zahteva tako kratek kot daljši opis v 'debian / control'. Ta napaka se pojavi, ker sta oba opisa enaka. Takoj, ko smo podaljšali daljši opis, napake ni več.


5. Povezave in reference

- [ddr] Andreas Barth, Adam Di Carlo, Raphaël Hertzog, Lucas Nussbaum, Christian Schwarz, Ian Jackson: Referenca za razvijalce Debian
- [dnmg] Josip Rodin, Osamu Aoki: Debianov vodnik za novo vzdrževanje
- [dpmb] Axel Beckert, Frank Hofmann: Knjiga o upravljanju paketov Debian
- [dpm] Priročnik za Debian Policy
- [dpt] Vadnica za pakiranje embalaže Debian
- [gph] Priročnik o zasebnosti GNU
- [lushpaiPackage] Alex Lushpai: Kako ustvariti paket debian iz vira


6. Zahvala

Avtor se zahvaljuje Axelu Beckertu in Geroldu Rupprechtu za podporo in kritikom pri pripravi tega članka.

Brezplačni in odprtokodni igralni mehanizmi za razvoj iger Linux
Ta članek bo zajemal seznam brezplačnih in odprtokodnih igralnih mehanizmov, ki jih je mogoče uporabiti za razvoj 2D in 3D iger v Linuxu. Obstaja veli...
Vadnica Shadow of the Tomb Raider za Linux
Shadow of the Tomb Raider je dvanajsti dodatek k seriji Tomb Raider - franšiza akcijsko-pustolovskih iger, ki jo je ustvaril Eidos Montreal. Kritiki i...
Kako povečati FPS v Linuxu?
FPS pomeni Število sličic na sekundo. Naloga FPS je merjenje hitrosti sličic pri predvajanju video posnetkov ali igranih predstavah. Z enostavnimi bes...