Debiani paki loomine: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Osoom (talk | contribs)
Osoom (talk | contribs)
Line 144: Line 144:
# Debiani süsteemi, mille abil paki luua ning testida.  
# Debiani süsteemi, mille abil paki luua ning testida.  
# Mingeid faile, mida paki sisse panna.  
# Mingeid faile, mida paki sisse panna.  
# 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    
# 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.       
 
Õpetus vajalik.




There are several packages that you'll need to have installed to build packages on a Debian system. Most of those packages will likely be installed by default, since you'll need dpkg, gcc, make, and so forth on most systems anyway. You will need the build-essential package and dpkg-dev package as well, which may or may not already be installed on your system.
There are several packages that you'll need to have installed to build packages on a Debian system. Most of those packages will likely be installed by default, since you'll need dpkg, gcc, make, and so forth on most systems anyway. You will need the build-essential package and dpkg-dev package as well, which may or may not already be installed on your system.


 
====Juhend ise====
1. A simple package


A debian package is basically a tar archive, and the essense of creating a debian package is that you
A debian package is basically a tar archive, and the essense of creating a debian package is that you

Revision as of 10:12, 3 May 2011

Hetkel on artikkel on loomise protsessis, kuid olge mureta, 3. mai lõunaks on valmis.

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.

Õpetus vajalik.


There are several packages that you'll need to have installed to build packages on a Debian system. Most of those packages will likely be installed by default, since you'll need dpkg, gcc, make, and so forth on most systems anyway. You will need the build-essential package and dpkg-dev package as well, which may or may not already be installed on your system.

Juhend ise

A debian package is basically a tar archive, and the essense of creating a debian package is that you

   create a directory structure in a directory called "debian"
   you populate the subdirectories of "debian" with files (binaries, configuration files, installation scripts, ...)
   add some 'control' files that contain information about the package itself
   pack this "debian" directory in an "archive" ; the deb package

1.1. the "debian" directory

create a directory, named "debian" in an appropriate location, eg your in home directory

inside this "debian" directory, create a directorie called "DEBIAN" : This is called the "controll area" and will contain "controll files", files that contain information about the package itself

Then, think of "debian" directory as the root of the filesystem your package will be installed on, and create subdirectories acoordingly. So, id you have a package that will be installed in /usr/sbin, create a directory debian/usr/sbin 1.2. put the files in the appropriate directories under /debian.

eg if your package should install a shell script in /usr.bin, copy myprogram.sh to .../debian/usr/bin/myprogram.sh 1.3. create a control file in debian/DEBIAN.

the file itself is called 'control', and contains a discription of the package. 1.4. build the package

to build the package, run dpkg-deb --build debian . Obviously, "debian" refers to your debian directory, so you need to run this from the parent directory of debian. The result is a package called "debian.deb", in your current directory. You'll want to rename it to myprogram-versionso.and.so.deb, and you kan install it with dpkg -i ./myprogram-versionso.and.so.deb .

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

Autor

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