Debiani paki loomine

From ICO wiki

Sissejuhatus

Debiani paki süsteem on üks elegantsemaid olemasolevaid meetodeid tarkvara paigaldamiseks, uuendamiseks ning eemaldamiseks.[1]

Eesmärk

Selle artikli eesmärgiks on anda inimestele tutvustav ülevaade, mis asi on Debiani pakk, millest see koosneb ning kuidas seda tehakse.

Eeldused

Kuna antud artikli puhul on tegemist tutvustava artikliga, siis mingeid erilisi oskusi ning teadmisi pole nõutud, kuid kasuks tuleb mingisugunegi kogemus Linuxi ning tolle käsureaga. Aga kui peaks jääma hätta, siis selle lingi all peaksid põhilisemad käsklused ilusasti olemas olema. Samuti ei tee paha mõne tekstiredaktori käsitluse oskus. Mõni neist on siin lingi all ära toodud.

Referaadi ülesehitus

Referaat koosneb kahest osast. Esimese osa hõlmab teooria poolt, kus räägitakse, mis asi on Debiani pakk ja millest ta koosneb.
Referaadi teine ,praktiline, pool sisaldab endas õpetust, kuidas üks lihtne Debiani pakett kokku panna.

Debiani pakk

Üldist

Debiani pakk ,lihtsalt öelduna, on failide kogum koos juhistega mis ütlevad, mida nende failidega teha. Pakk sisaldab tavaliselt programmi või programme, kuid mõnikord sisaldab see ainult dokumentatsiooni, kujundus elemente või siis teisi faile, mida on kergem pakina levitada.

Pakk sisaldab juhiseid, mis ütlevad, kus mingi fail peaks failisüsteemis olema, mis teekidest või programmidest paki sisu sõltuv on. Samuti sisaldab pakk ka juhiseid paigaldamiseks ja põhilisi seadistamise skripte. Tähele tuleks panna, et paljude pakkide puhul ei ole võimalik või ei soovitatav kasutada vaikimisi seadeid, mis asuvad konfuguratsiooni failides. Näiteks Apache paki puhul, on vajalik paigaldamise-järgne konfigureerimine.

Pakid sisaldavad tavaliselt eelkompileeritud tarkvara, aga samas võid sa pakina sisuna kasutada ka lähtekoodi. Mõned administraatorid võivad eelistada programmi paigaldada otse lähtekoodist, või siis sinu rakendus vms. vajab muudatusi, et ta kompileeruks. Ehk siis kokkuvõtvalt, kui sa levitad tarkvara, mis on vaba või kuulub open source license alla, saad sa levitada seda nii eelkompileeritud paketina kui ka lähtekoodi paketina.[2]

Metapakid

Metapakett on pakett, mis iseenesest midagi muud, peale kirjelduste ning sõltuvuste ei sisalda. Metapaketi paigaldamisel paigaldatakse kõik sõltuvused ja soovituslikud paketid, mis on võimalik paigaldada. Kui mõni sõltuv pakett repositooriumist puudub siis ei paigaldata ka metapaketti.[3]

Pakkide haldamine

Pakke haldab dpkg-nimeline programm, kuid tavaliselt kasutatakse seda läbi programmide apt/apitude 'i või Gdeb.

Debiani pakette on võimalik ka konventeerida teist tüüpi pakettideks ning vastupidi, kasutades selleks programmi nimega alien. Samuti on võimalik neid pakette teha otse, läbi lähtekoodi, selleks kasutatakse programmi Checkinstall või Debian Package Manager.
[4]

.deb laiend

.deb on laiendiks Debiani tarkvara paketi formaadile ning on kõige sagedamini kasutatavam laiend selliste binaar-pakettide puhul. Lühend deb tuleneb Debian-ist, mis omakorda on tulnud nimest Debra. Debra oli Debiani looja Ian Murdock'i tolleaegse tüdruksõbra ning (nüüdseks juba) eksabikaasa nimi. Debiani pakke kasutatakse ka teistes Debianil põhinevates distributsioonides, näiteks Ubuntu.

Mõned põhi Debiani pakid on olemas udeb -idena ("mikro debid") ning on kasutusel ainult Debiani paigaldamise algkäivituse jooksul. Kuigi need failid kasutavad .udeb faililaiendust, on neil ,võrreldes tavaliste .deb laiendusega failidega, sama struktuur. Kuid samas, erinevalt .deb-ist, sisaldavad udeb pakid ainult vajalike faile. Ehk siis erinevus seisneb selles, et dokumentatsioonifailid tavaliselt välja jäetud, ning .udeb pakid on ei ole paigaldatatavad standartsele Debiani süsteemile.[5]

Mis osadest koosneb Debiani pakk

Peale selle, et sul on olemas hea ja geniaalne programm oma Debiani paki jaoks, on paki sisse vaja ka paari kindlat tüüpi faili. Nendele järgnev peatükk keskendubki.

Paketi kontroll fail

Paketi kontroll fail ehk Control file (ingl. k.) sisaldab informatsiooni paketi, selle looja, süsteemi arhitektuuri, ning kõige muu vajaliku kohta.[6]. Lisaks sisaldab kontroll fail endas infot ka paketi sõltuvustest (inglise keeles dependencies). Siinkohal on ära toodud üks näite kontroll fail:

Package: acme
Version: 1.0
Section: web 
Priority: optional
Architecture: all
Essential: no
Depends: libwww-perl, acme-base (>= 1.2)
Pre-Depends: perl 
Recommends: mozilla | netscape  
Suggests: docbook 
Installed-Size: 1024
Maintainer: Joe Brockmeier <jzb@dissociatedpress.net>
Conflicts: wile-e-coyote
Replaces: sam-sheepdog
Provides: acme
Description: The description can contain free-form text
            describing the function of the program, what
            kind of features it has, and so on.
.
More descriptive text.  


Enamik nendest väljadest on valikulised. Kui vajadust pole, ei pea sa kõiki, näites väljatoodud, välju oma paki kontroll faili lisama. Näiteks ei ole vajalik lisada "Source" (eesti keeles "allikas") välja, kui paki allikas on mitte saadaval. Kui sinu pakk ei satu konflikti teiste pakkidega, siis ei ole samuti vajalik lisada välja "Conflicts" (eesti keeles "konflikt") jne.


Iga kontroll faili esimene väli on "Package", kuhu pannakse kirja paki nimi. Järgmiseks väljaks on "Version", sinna kantakse paki versiooni number. Sa võid siin juures kasutada üks kõik mis nummerdamise viisi, kuid see ei tohi sisaldada sidekriipsu. Numbrid, mis jäävad sidekriipsu taha, loetakse Debiani revisjoni numbriks. Näiteks, kui programmi versiooni numbriks on pandud millegipärast 1.01-1, arvestatakse versiooni numbriks 1.01 , Debiani revisjoni numbriga 1. Arvatavasti, ei ole meie eesmärk luua kohe vigade parandusega paketti.

Välja "Maintainer" juurde tuleks kirjutada oma täisnimi või siis firma nimi ning e-posti aadress, mis asub "<>"- märkide vahel. Välja "Installed-Size" juurde tuleb lisada, kui palju paigaldatud pakett ruumi võtab.
[7]

Sõltuvustest

Debiani pakettidel on mitmeid eri sõltuvuste vorme :

• „Depends“ puhul paketi paigaldus ning töö sõltub otseselt sõltuvast paketist ning ilma selleta pakett ei paigaldu.

• „Recommends“ puhul on küll järgneb pakett soovitatud aga sellest on võimalik kasutajal keelduda.

• „Suggest“ puhul sisaldab järgnev pakett esmasega seotud pakette, mis tihti sooduatavad esimese paketi tööd.

• „Conflicts“ puhul ei tööta paigdaldu esimene pakett, kui teine pakett on juba paigaldatud.

• „Replaces“ puhul juba paigaldatud pakett asendatakse uuega. Pakettide priotiteedid Kõik Debiani paketid sisaldavad prioriteedi märget, mis aitab paketi halduritel pakette grupeerida.

Kasutatavad priotiteedid on järgmised:

• „Required“ ehk paketid, mida vajatakse süsteemi normaalseks tööks ning ka tööriistu, mida on vaja süsteemivigade eemaldamiseks. Antud pakette ei tohiks masinast eemaldada.

• „Important“ ehk tähtsad paketid, mis on vajalikud igal Unixi-laadses süsteemis.

• „Standard“ ehk igapäevased süsteemi toimimiseks vajalikud paketid veebilehitssmiseks, failide laadimiseks ning e-maili saatmiseks.

• „Optional“ ehk valikulised paketid, mis ei ole vajalikud süsteemi toimimiseks ning ka standartseteks tegevusteks.

• „Extra“ ehk lisapaketid, mis võivad minna vastuollu tähtsamate pakettidega. Üldjuhul on need paketid vajalikud siis, kui kasutaja tõesti teab, milleks need on vajalikud.

[8]

Paketi muudatuste fail

Paketi muudatuste fail ehk Changelog (ingl.k) on fail, mis sisaldab infot muutuste kohta, mis on antud paketiga toimunud. Iga uue suurma muutusega luuakse uus kirje, mis sisaldab versiooni muutusi, muutuste kirjeldust, muutjat ning ka aega, millal muutus toime pandi. Allpool on toodud näide "Estobuntu" paketi muudatuse failist:

Estobuntu-artwork-kde (10.05-1) lucid; urgency=low
Added recommends: estobuntu-artwork-plymouth
-- Muutja nimi <nimi@email> Sat, 01 May 2010 16.56.14
Estobuntu-artwork-kde (10.04-1) lucid; urgency=low
Initial release
-- Muutja nimi <nimi@email> Sun, 18 Apr, 2010 15.52.12

[9]

postinst ja prerm

Paki jaoks vajaminevate pakkide seas on veel paar skripti, mille süsteem paneb käima siis kui pakki paigaldatakse või eemaldatakse.

postinst

Postinst skirpt sisaldab endas juhiseid selle kohta, et mida peaks süsteem tegema peale paki paigaldamist.

Näide postinst failist

prerm

Prerm skript sisaldab endas juhiseid selle kohta, et mida peab süsteem tegema enne paki eemaldamist.

Näide prerm failist

NB! Mõlemad failid on vajalikud.


Pikem jutt skriptide kohta

Paki kokkupanemine ja kasutamine

Siin on juhend, kuidas kokku panna oma, väike ja lihtne Debiani pakk.

Nõudmised

  1. Debiani süsteemi, mille abil paki luua ning testida.
  2. Mingeid faile, mida paki sisse panna.
  3. Lisaks on vajalikud mõned pakid, mis on vajalikud oma Debiani paki valmistamiseks. Tavaliselt on need pakid vaikimisi juba paigaldatud, sellepärast, et dpkg, gcc, make jne. on vajalikud ka teisteks asjadeks. Samas, mõned paketid, nagu näiteks dpkg-dev ning build-essential, mis on samuti vajalikud, ei pruugi olla vaikimisi paigaldatud.


Juhend ise

Nagu varem mainitud, on Debiani pakk lihtsalt tar-tüüpi kokkupakitud fail, mille loomiseks on vaja teha järgmised etapid:

  1. luua kausta "debian" sisse alamkaustade süsteem
  2. aseta alamkaustade sisse erinevat tüüpi failid(binaarfailid, konfiguratsiooni failid, instaleerimise skriptid jne)
  3. lisa kontroll failid
  4. paki kaust "debian" ära

Kaust nimega "debian"

Loo kaust nimega "debian", sulle sobivasse kohta, nt. kodukataloogi.

"debian"-i kausta sisse loo kaust nimega "DEBIAN". Kausta "DEBIAN" nimetatakse kontroll alaks ning see sisaldab endas kontroll faile, faile, mis sisaldavad infot paki kohta.

Järgmisena, võta kausta "debian" kui rooti failisüsteemi jaoks, kuhu sinu pakk paigaldatakse, ning vastavalt sellele loo ka alamkaustad. Seega, kui su pakk paigaldatakse /usr/sbin'i, loo "debian"-i sisse alamakataloogid /usr/sbin, Välja peaks ta välja nägema nii- debian/usr/sbin.

Failide paigutamine õigesse kausta

Kui su pakk paigaldab shelli skripti kausta /usr/bin, kopeeri omafail.sh kausta /debian/usr/bin/omafail.sh

Kontroll failid

See tuleb asetada debian/DEBIAN kausta

Paki kokku panemine

Paki kokkupanemiseks tuleb UNIX'i käsurealt sisetada käsk:

dpkg-deb --build debian 

Ilmselgelt viitab debian kaustale "debian" , seega tuleb käsu edukaks realiseerimiseks käsk käivitada kohas, kus "debian" kaust asub. Tulemuseks peaks tekkima samase kohta debian.deb fail. Muidugi võid sa selle nime( debian.deb) ära vahetada mingi meeldivama vastu, nt. esimenepakk.deb.
Paki paigaldamiseks kasuta käsku

 dpkg -i ./täiestisuvamisnimi.deb

[10]

Kasutatud kirjandus

http://www.ibm.com/developerworks/linux/library/l-debpkg/index.html
http://www.debian.org/doc/debian-policy/ap-pkg-binarypkg.html
http://estobuntu.itcollege.ee/trac/estobuntu/wiki/debianipakett
http://en.wikipedia.org/wiki/Deb_%28file_format%29
http://tldp.org/HOWTO/html_single/Debian-Binary-Package-Building-HOWTO/
http://download1.parallels.com/Plesk/Plesk8.2/Doc/plesk-8.2-unix-skin-guide/38251.htm#o38273
http://users.telenet.be/mydotcom/howto/linux/package.htm
http://www.lucas-nussbaum.net/blog/?p=676

Autor

Oliver Soom
A22
osoom äti-märk itcollege.ee