Debian build toolchain - Debian build toolchain
tento článek potřebuje další citace pro ověření.Srpna 2015) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
The Sestavení Debianu řetězec nástrojů je kolekce softwarových nástrojů používaných k vytváření Debian zdrojové balíčky (.dsc
) a Binární balíčky Debianu (.deb
soubory) z proti proudu zdroj tarballs.
Tyto nástroje se používají v projektu Debian a také v distribucích založených na Debianu, jako je Ubuntu.
Přehled
Zdrojový kód pro svobodný software je obvykle distribuován v komprimovaném formátu dehet archivy zvané tarballs. Debian je binárně orientovaná distribuce, což znamená, že je deb
balíčky zahrnují předkompilované binární soubory a datové soubory uspořádané do hierarchie souborového systému, kterou software očekává. Síť nástrojů pro sestavení Debianu tedy potřebuje pokyny, jak používat systém předcházejícího sestavení ke správnému sestavení deb
balíčky.
Tyto pokyny jsou uloženy v debian
podadresář, který je přidán do zdrojového stromu softwaru baleného balíčkem správce. I když je možné sestavit balíček přímo z upraveného zdrojového stromu, je standardním postupem vytváření zdrojové balíčky, které obsahují změny, které udržovatel provedl v upstreamových zdrojích v redistribuovatelné formě.
Zdrojové balíčky
Typický zdrojový balíček Debianu se skládá ze tří souborů:
- Původní tarball (
orig. hvězda
) - pouhá kopie zdrojového tarballu, pokud je vdehet
formát a nejsou nutné žádné změny, nebo přebalený tarball. Druhá možnost se může stát, pokud obsahuje snímek z a systém řízení verzí který nebyl nikdy vydán ve formě tarballu nebo pokud správce potřebuje odstranit soubory, které nejsou kompatibilní s Pokyny pro svobodný software Debian. - The
debian.tar
soubor, který obsahuje změny upstream zdroje provedené správcem balíčku. To zahrnuje celýdebian
adresář. Jakékoli upravené soubory mimo něj jsou agregovány do opravných souborů uvnitřdebian / patche
adresář, které se automaticky použijí před sestavením. - The
dsc
soubor, což je textový soubor s metadata, například názvy všech souborů tvořících zdrojový balíček a jejich názvy SHA256 kontrolní součty. Obsahuje také podpis tvůrce zdrojového balíčku.
Například zdrojový balíček s názvem foo
s upstream verzí 1.2.3 a Debian revize 4 se může skládat z následujících souborů:
foo_1.2.3.orig.tar.gz
foo_1.2.3-4.debian.tar.gz
foo_1.2.3-4.dsc
Zdrojový balíček je vytvořen pomocí dpkg-buildpackage
nástroj nebo jeho obal debuild
. Po vyvolání k vytvoření zdrojového balíčku dpkg-buildpackage
zavolá pravidla správce k vyčištění zdrojového stromu všech mezilehlých souborů, provede různé kontroly zdravého rozumu a nakonec podepíše dsc
soubor s klíčem balírny pomocí debsign
nástroj.
Reverzní proces - výroba rozbaleného zdrojového stromu ze zdrojového balíčku - se provádí pomocí zdroj dpkg
nástroj, který extrahuje původní tarball do podadresáře, extrahuje debian.tar
tarball uvnitř, a platí jakýkoli deka přítomné opravy. Toto je první krok, který systém sestavení provede při vytváření binárních balíčků ze zdrojového balíčku.
Starší zdrojové balíčky (používající zdrojový formát 1) mají a .diff.gz
soubor namísto debian.tar
. Toto je jednotné rozdíl který obsahuje debian
adresář a veškeré změny zdroje upstream, které nejsou spravovány systémem oprav.
Adresář debian
Adresář debian obsahuje soubory používané serverem dpkg-buildpackage
k vytvoření binárního i zdrojového balíčku. Na rozdíl od RPM, který používá jediný spec
Soubor pokynů obsahuje nástroje Debianu celý podadresář s více soubory. K správnému sestavení balíčku jsou nutné minimálně tři soubory - seznam změn
, řízení
a pravidla
. Čtvrtý soubor, autorská práva
, je mandátem politiky Debianu, ale je to spíše právní požadavek než technický požadavek.
Podle návrhu jsou všechny soubory v debian
adresář jsou textové soubory, z nichž většina je čitelná člověkem a upravuje se pomocí jednoduchého textového editoru.
debian / changelog
Tento soubor obsahuje informace o všech verzích balíčku od jeho vytvoření. Nástroje pro sestavení zpracují pouze horní položku, která se používá k určení verze balíčku, naléhavosti (která má význam pouze pro samotný Debian) a chyb v distribuci, kterou toto vydání opravuje.
Například pro balíček s názvem foo
, příklad debian / changelog
položka může číst takto:
foo (1.2.3-1) nestabilní; urgency = low * Nové upstream vydání. * Zrušeno 02_manpage_hyphens.dpatch, opraveno proti proudu. * Přidáno 04_edit_button_crash.dpatch: opravit selhání po stisknutí tlačítka úprav. (Zavře: # 654321) * debian / control: foo by měl být v konfliktu s libbar. (Closes: # 987654) - John DoePá, 30. listopadu 2007 15:29:42 +0100
Debian poskytuje dva hlavní nástroje pro manipulaci s debian / changelog
soubor:
dch
se používá k přidání nových položek do seznamu změn nebo úprav stávajících.dpkg-parsechangelog
analyzuje nejnovější položku a extrahuje z ní data v aKlíč: hodnota
formát podobnýdebian / ovládání
. Používá se primárně ve skriptech.
debian / ovládání
Tento soubor obsahuje informace o zdrojovém balíčku a všech binárních balíčcích, které vytváří (může jich být více; například zdrojový balíček libbar
může sloužit jako zdroj pro binární balíčky libbar0
, který obsahuje pouze sdílenou knihovnu, a libbar-dev
, která obsahuje statickou verzi knihovny a hlavičkových souborů).
Uvádí (mimo jiné) například název balíčku, správce, cílové architektury (pro binární balíčky), závislosti na sestavení (balíčky, které musí být nainstalovány, aby byl balíček úspěšně vytvořen) a závislosti (balíčky, které musí být nainstalovány, aby balíček při instalaci správně fungovat).
debian / pravidla
Tento soubor je skript, který je vyvolán dpkg-buildpackage
s jediným argumentem, který určuje akci, kterou je třeba provést (čistý
, stavět
, Nainstalujte
, binární
). Ačkoli to může být technicky jakýkoli druh skriptu, je vždy implementován jako makefile.
Kromě vyvolání upstream build systému je většina instrukcí v debian / pravidla
jsou velmi opakující se a všudypřítomné, a tedy prakticky všechny debian / pravidla
soubory zabalí tuto funkci do debhelper skripty. Například automatické určování závislostí na základě použitých sdílených knihoven je velmi běžná akce, a tak místo toho, aby zahrnoval kód nezbytný k tomu, debian / pravidla
soubor jednoduše volá dh_shlibdeps
. Mezi další příklady skriptů debhelper patří dh_installdocs
, který instaluje soubory dokumentace skladu, jako je debian / autorská práva
- na příslušná místa, nebo dh_fixperms
, což zajišťuje, že soubory v balíčku mají správná přístupová práva (například spustitelné soubory v / usr / bin
mít nastaven bit „spustitelný“, ale lze je zapisovat pouze superuživatelem).
Vzhledem k tomu, sekvence debhelper
skripty se samy opakují, některé balíčky se zjednodušují debian / pravidla
soubory přímo pomocí dh nebo CDBS namísto spuštění každého debhelper
příkaz přímo.
Patch systémy
Někdy musí správce upravit původní zdroj. Zatímco v minulosti se to často dělo jednoduše úpravou souborů na místě a zahrnutím změn v souboru diff.gz
, to by mohlo ztížit údržbu, když byly vydány nové upstream verze, protože všechny změny musely být prozkoumány a sloučeny, když to bylo nutné.
Novější zdrojový formát, 3,0 (deka), používá systém přikrývky, aby bylo možné úpravy rozdělit do skupin logicky oddělených oprav, z nichž každá se zabývá jednou změnou a lze je odesílat upstream tak, jak jsou. Tyto opravy žijí debian / patche
.
Existují také balíčky využívající jiné systémy oprav, například dpatch
. Generuje a provádí shell skripty které jsou nestandardní jednotný rozdíl soubory s hlavičkou, které jsou přesto kompatibilní se standardem rozdíl
nástroj. The debian / pravidla
soubor je upraven pro volání dpatch apply-all
před sestavením binárního balíčku a dpatch deapply-all
před sestavením zdrojového balíčku (a vyčištěním všech vedlejších produktů sestavení). deka
a některé další systémy oprav eliminují potřebu speciálních záhlaví a používají standardní soubory rozdílu.
Sledování změn ve zdrojových balíčcích: debdiff a interdiff
Někdy se může stát, že se uživatel bude chtít podívat na rozdíly mezi dvěma zdrojovými balíčky - například vygenerovat navrhovanou opravu proti verzi aktuálně v úložišti pro zahrnutí do distribuce systém sledování chyb. Pokud oba balíčky používají stejnou upstream verzi, lze to provést pomocí debdiff
nástroj, který vytváří rozdíly mezi dvěma zdrojovými stromy včetně změn balení.
Pokud jsou předřazené tarbaly pro dvě verze odlišné, nelze takové naivní srovnání použít. Místo toho interdiff
nástroj lze použít k vytvoření rozdílu mezi dvěma soubory rozdílu (v tomto případě mezi dvěma diff.gz
soubory). Nevýhodou je, že interdiff
výstup vyžaduje větší úsilí a ten, který aplikuje změny, musí také najít a stáhnout novější upstream tarball, což se obvykle provádí pomocí get-orig-source
vládnout v debian / pravidla
.[1]
Příčetné šeky s lintianem
Tento nástroj poskytuje automatickou kontrolu běžných chyb balení v binárních i zdrojových balíčcích, včetně porušení zásad Debianu a potenciálních problémů s kompatibilitou.
Zatímco správce má obvykle za cíl opravit všechny problémy, na které poukázal lintian
, různé distribuce mohou mít různé zásady týkající se nich. Například, Ubuntu vyžaduje, aby všechny balíčky pocházející z Ubuntu byly čisté, ale pro balíček sloučený do Ubuntu z Debianu takový požadavek neexistuje: nové změny by kromě stávajících neměly jednoduše zavádět žádná varování. Důvodem je minimalizace rozdílů mezi balíčky Debian a Ubuntu.
Zde jsou příklady lintian
výstupy:
W: foo source: source-contains-CVS-dir config / CVSN: N: Balíček obsahuje adresář CVS. Bylo to s největší pravděpodobností zahrnuto byN: accident, protože přechodná data CVS obvykle nepatří do balíčků. N: Exportujte spíše z CVS než použijte pokladnu. N:
W: libfoo-dev: debian-changelog-line-too-long line 2N: N: Daný řádek nejnovější položky changelogu má více než 80 sloupců. SuchN: záznamy změn mohou vypadat špatně v terminálových oknech a poštovních zprávách N: a být nepříjemné číst. Zabalte položky protokolu změn do 80 sloupců N: nebo méně, pokud je to možné. N:
I: foo: arch-dep-package-has-big-usr-share 3399kB 77% N: N: Balíček má značné množství dat nezávislých na architektuře N: v / usr / share, zatímco se jedná o balíček závislý na architektuře . This isN: wasteful of mirror space and bandwidth, as we we end we with N: multiple copies of this data, one for each architecture. N: N: If the data in / usr / share is not independent-independent, it is aN: porušení zásad, a v tomto případě byste měli přesunout tato data N: jinam N: N: Viz také: N: http://www.debian.org/doc/developers-reference/ch-best-pkging-practiceN: s # s-bpp-archindepdata
Izolovaná prostředí sestavení
Zdrojové balíčky jsou určeny k sestavení na jakékoli instalaci cílové distribuční verze za předpokladu, že jsou splněny závislosti sestavení. Kromě toho mohou být sestavení ovlivněna balíčky, které jsou již v systému k dispozici.
K ověření, že se balíček staví na jakémkoli systému, a k vyloučení jakýchkoli externích faktorů se používají nástroje k vytvoření izolovaných prostředí sestavení. Tyto jsou stavitel
(Osobní stavitel) a sbuild
.
Tyto nástroje udržují minimální pracovní systémy v systému Windows chroot, nainstalujte pouze nezbytné závislosti sestavení uvedené v debian / ovládání
a po dokončení sestavení je odstraňte. Proto pomocí stavitel
, správce balíčků může zjistit, zda v něm nebyly zadány některé závislosti sestavení debian / ovládání
. Taky, stavitel
umožňuje testovat sestavení pro jiné distribuce, než je ta, kterou provozuje správce: například pro vývojovou verzi, zatímco ve skutečnosti běží stabilní verze.
sbuild
je určen pro integraci s automatizovanými démony sestavení (buildd
). Používají jej servery sestavení Debianu, které automaticky vytvářejí binární balíčky pro každou podporovanou architekturu. The panel služba poskytuje podobné démony sestavení pro Ubuntu, a to jak oficiální distribuci, tak osobní archivy balíčků (PPA).
Viz také
Reference
- ^ „Kapitola 4 - Zdrojové balíčky“. Manuál k zásadám Debianu. Citováno 1. října 2014.