Meno balicka a jeho verzia
Meno programu ma byt napisane malymi pismenami a ak pozostava z viac ako jedneho slova je potrebne spravit z toho jedno slovo alebo skratku. Ak verzia nie je oznacena ako X.Y.Z ale datumom je mozne pouzit aj datum. Je vsak potrebne aby mal tvar YYYYMMDD.
Vytvorenie .deb balicka
Nastavime si premenne $DEBEMAIL a $ DEBFULLNAME. Jedna sa o premenne Bash schell prostredia, vdaka ktorym vela prostriedkov Debianu rospozna meno a e-mail, ktore su dalej pouzitelne pre vytvaranie balickov. Premenne nastavime takto:
$ cat >>~/.bashrc <<EOF
DEBEMAIL=your.email.address@example.org
DEBFULLNAME="Firstname Lastname"
EOF
Samotne vytvorenie balicka realizujeme takto(pre program gentoo-0.9.12):
$ . ~/.bashrc
$ cd ~/gentoo/gentoo-0.9.12
$ dh_make -f ../gentoo-0.9.12.tar.gz
Po vykonani posledneho prikazu sa program opyta uzivatela aky druh balicka si praje vytvorit. Pre nasu potrebu to bude volba "s", ktoru potvdime klavesou "ENTER".
dh_make je program, ktory konvertuje zdrojove balicky na binarne balicky. Prikaz musi byt vykonany v adresari so zdrojovymi kodmi. Ktore musia byt pomenovane
-. Kde meno balicka moze obsahovat len male pismena, cisla alebo pomlcky.
Po vykonani prikazu sa vytvori kopia: gentoo-0.9.12.orig.tar.gz do povodneho adresara. Taktiez sa vytvori novy adresar debian a v nom viac suborov (popisane su v castiach pozadovane subory v adresari debian a ine subory v adresari debian).
Pozadovane subory v adresari debian
V adresari debian sa vytvorilo niekolko suborov, ktore sa pouzivaju na prisposobenie vlastnosti balicka. Najviac dolezite su: control, changelog, copyright a rules.
control
Subor obsahuje niekolko hodnot na zaklade ktorych programy ako dpkg, dselect, apt_get, apt_cache, aptitude a ine vedia obsluhovat a pracovat z balickom.
Priklad pre nas program.
- Source: gentoo
- Section: unknown
- Priority: extra
- Maintainer: Josip Rodin <joy-mg@debian.org>
- Build-Depends: debhelper (>= 7.0.50)
- Standards-Version: 3.8.4
- Homepage: <insert the upstream URL, if relevant>
-
- Package: gentoo
- Architecture: any
- Depends: ${shlibs:Depends}, ${misc:Depends}
- Description: <insert up to 60 chars description>
- <insert long description, indented with spaces>
Riadky 1 az 6 su kontrolne informacie pre zdrojovy balicek.
Riadok 1 obsahuju meno zdrojoveho balicka a riadok dva sekcia kam zdrojovy balicek patri. (Mozne su napriklad admin - programy len pre administratora, base - zakladne programy, doc - dokumentacia, libs - pre kniznice, mail - pre e-maily, net - pre sietove programy, x11 - pre programy, ktore neviem zaradit.
Riadok cislo 3 obsahuje prioritu instalovania per uzivatela. 4 riadok obsahuje e-mail udrziavatela (clovek, ktory vytvoril balicek). Je potrebne aby e-mail bol zadany korektne, kedze chybove hlasenia budu prichadzat prave na zadany e-mail. Riadok cislo 5 obsahuje zoznam balickov, ktore su potrebne na zostavenie daneho balicka. V riadku cislo 6 je zaznamenane cislo verzie Debian Policy standardov, ktore balicek dodrziava. Do riadku cislo 7 mozme zadat URL adresu stranky pre upstream
balicka. Riadok 9 obsahuje meno binarneho balicka (balicke obsahujuci vykonavatelne programy, konfiguracne subory, manualove stranky, informacie o pravach a ine dokumentacne subory.) Riadok cislo 10 popisuje CPU architekturu, pre ktoru je binarny balicekt kompilovany. V riadku cislo 11 je popisany vztah balicka k inym balickom. Moznosti:
- Depends:Balicek nebude nainstalovany, kym nie su nainstalovane aj balciky, na ktorych zavisi.
- Recomends:Nainstalovanie navrhnutych balickov nie je nutne, ale je obvykle ich nainstalovat pre potrebu programu. aptitude a apt_get nainstaluju tieto balicky (aj ked je mozne toto nastavenie vypnut). dpkg ignoruje toto policko.
- Suggests:Pouziva sa pre programy, ktore dobre spolupracuju s danym programom avsak nie je nutna ich instalacia. aptitude sa da nastavit aby nainstalovalo dane balicky. apt_get a dpkg ignoruje dane balicky.
- Pre_depends:Silnejsie ako Depends. Balicek nebude nainstalovany, kym nebudu nainstalovane a spravne nakofigurovane dane balicky.
- Conflicts: Balicke nebude nainstalovany, pokial vsetky dane balicky nebudu odstranene.
- Provides:Pouziva sa ak program ma funkciu uz existujuceho virtualneho balicka.
- Replaces:Pouziva sa ak program nahradi casti alebo aj cely balicek.
Vsetky tieto moznosti maju presne definovanu syntax:
Polozka: menoprogramu (operator verzia), menoprogramu (operator verzia)
Priklad:
Depends: foo (>= 1.2), libbar1 (= 1.3.4)
Conflicts: baz
Recommends: libbaz4 (>> 4.0.7)
Operatory sa pouzivaju na identifikovanie verzie programu, pre ktory dana polozka nadobuda platnost.
Riadok cislo 12 obsahuje kratky opis. Riadok cislo 13 naopak dlhy opis.
copyright
Subor obsahuje informacie o rodicovskych zdrojoch a licencii. Forma tohto suboru je lubovolna obsah je definovany na http://www.debian.org/doc/debian-policy/ch-docs.html#s-copyrightfile.
changelog
Subor ma presne definovany formu na http://www.debian.org/doc/debian-policy/ch-source.html#s-dpkgchangelog.
Priklad:
1 gentoo (0.9.12-1) unstable; urgency=low
2
3 * Initial Release. Closes: #12345
4 * This is my first Debian package.
5 * Adjusted the Makefile to fix $(DESTDIR) problems.
6
7 -- Josip Rodin <joy-mg@debian.org> Mon, 22 Mar 2010 00:37:31 +0100
8
(cisla riadkov su len pridane)
Novy zaznam pridavame, stale na zaciatok(cize pred prvy riadok zacinajuci "*").
rules
Predstavuje dalsi Makefile. Sklada sa z roznych pravidiel ako narabat so zdrojom.
Pravidla:
- clean: vymazat vsetky kompilovane, generovane a zbytocne subory.
- build: vytvorit zo zdroja kompilovany program a formatovane dokumenty.
- binary: obvykle zavisi na binary-arch a binary-indep.
- binary-arch: vytvorit architekturicky zavisle binarne balicky.
- binary-indep: vytvorit architekturicky nezavisle binarne balicky.
- get-orig-source: zaobstarat najnovsiu verziu originalneho zdrojoveho balicka.
- install: instalovat subor do suboroveho stromu pre kazdy binarny balicek pod adresarom debian.
Pravidla, ktore chceme vykonat su zapisane ako argumenty prikazoveho riadku (napriklad: “./debian/rules build” alebo “fakeroot make -f debian/rules binary”). Prazdne riadky a riadky zacinajuce # su ignorovane. V rules subore mozme menit pravidla, je vsak potrebne si pamatat ze nazvy pravidiel menit nesmieme.
Ine subory v adresari debian
README.
Obsahuje nezrovanlosti medzi originalnym balickom a vytvorenou verziou.
package.cron.*
Ak balicek potrebuje pravidelne pracovat, je mozne pouzit tento subor na nastavnie rozvrhu.
- cron.hourly: nainstalovane v /etc/cron.hourly/package: spusta sa raz za kazdu hodinu.
- cron.daily: nainstalovane v /etc/cron.daily/package: spusta sa raz kazdy den, zvycajne rano.
- cron.weekly: nainstalovane v /etc/cron.weekly/package: spusta sa raz za tyzden. zvycajne v nedelu skoro rano.
- cron.monthly: nainstalovane v /etc/cron.monthly/package: spusta sa raz za mesiac, zvycajne skoro rano prvy den v mesiaci.
- cron.d: nainstalovane v /etc/cron.d/package: spusta sa hocikedy inokedy.
dirs
Specifikuje adresare, ktore potrebujeme ale normalne sa pri instalacii nevytvoria. Vo vseobecnosti to poukazuje na problem s Makefileom.
package.doc-base.EX
Ak balicek obsahuje okrem manualovych stranok a info subore aj inu dokumentaciu, jej existencia by mala byt zaznamenana v tomto subore. Vacsinou su tu obsiahnute dokumenty HTML, PDF.
Priklad:
Document: gentoo
Title: Gentoo Manual
Author: Emil Brink
Abstract: This manual describes what Gentoo is, and how it can be used.
Section: File Management
Format: HTML
Index: /usr/share/doc/gentoo/html/index.html
Files: /usr/share/doc/gentoo/html/*.html
docs
Obsahuje mena mena dokumentacnych suborov, ktore mozme pomocou dh_installdocs nainstalovat do prechodneho adresara. Vzdy obsahuje minimalne vsetky existujuce subory nazvane “BUGS”, “README*”, “TODO”.
init.d.ex a package.default
package.default bude nainstalovany do etc/default/package. Vacsinou je tento subor pouzivany na zastavenie cinnosti deamona.
install
Ak existuju subory, ktore je potrebne do balicka nainstalovat ale "make install" to nespravi. Uvedieme ich meno a cestu do tohto suboru. Budu nainstalovane programom dh_install(1).
Kazda nova instalacia sa zapisuje do osobitneho riadku. .
Ak sa nezada cesta kde sa maju subory nainstalovat pouzije sa adresar kde su instalacne subory.
manpage.*.ex
Kazdy program by mal mat manualovu stranku. Ak taka neexistuje vsetky tieto subory predstavuju sablonu pomocou ktorej mozme manualovu stranku vytvorit.
manpage.1.ex
Ja napisana pomocou nroff.
manpage.sgml.ex
Pisanie pomocou sgml.
manpage.xml.ex
Pisanie pomocou xml.
{post|pre}{inst|rm}.ex
Obsahuju skripty pouzivane programom dpkg vo chvili ked sa balicek instaluje, aktualizuje alebo odinstalovava.
dpkg
Balik vytvorime prikazom napisanym v hlavnom adresari programu.
$ dpkg-buildpackage
Tento prikaz vykona
- vymaze zdrojovy adresar (“debian/rules clean”)
- vytvori zdrojovy balicek (“dpkg-source -b”)
- vytvori spustitelny program (“debian/rules build”)
- vytvori binarny balicek (“fakeroot debian/rules binary”)
- oznaci zdroj .dsc subor pomocou gpg
- vytvori a oznaci subor .changes pomocou dpkg-genchanges a gpg
Po vykonani tychto krokov sa vytvoria (pre nas v adresari (~/gentoo)) tieto subory:
- gentoo_0.9.12.orig.tar.gz - obsahuje originalne zdrojove kody.
- gentoo_0.9.12-1.dsc - opisuje obsah zdrojoveho kodu, je generovany z control suboru.
- gentoo_0.9.12-1.debian.tar.gz - obsah suboru debian.
- gentoo_0.9.12-1_i386.deb - binarny balicek.
- gentoo_0.9.12-1_i386.changes - tento subor opisuje vsetky zmeny v balicku. Ciastocne je generovany z changelogu a .dsc suboru.
Ine moznosti dpkg
- dpkg -l - zobrazi zoznam vsetkych nainstalovanych balikov v systeme.
- dpkg -L gentoo - zobrazi subory nainstalovane balikom gentoo.
- dpkg -S /etc/host.conf - zisti do akeho balika patri host.conf
- vystup - base-files: /etc/host.conf - subor host.conf je sucastou balicka base-files.
- sudo dpkg -i gentoo_0.9.12-1_i386.deb - tento prikaz zadame ak chceme nainstalovat binarny balik gentoo_0.9.12-1_i386.deb.
- sudo dpkg -r gentoo - pouziva sa na odinstalovanie balika. Na odinstalovanie je ale lepsie pouzit spravcu balikov, ktory riesi zavislosti medzi balikmi, cim zachovava konzistenciu systemu.
-- MarianJarembinsky - 05 Apr 2010