Hlavní navigace

Balíčkovací systém distribuce Debian GNU/Linux: volby "source" a "build-dep"

Marcel Kolaja 28. 7. 2003

V páté části seriálu o balíčkovacím systému Debianu se podíváme na to, jak lze "apt-get" využít při práci se zdrojovými balíčky. Konkrétně probereme volby "source" a "build-dep".

Stažení zdrojových balíčků

Binární podoba softwaru vzniká kompilací zdrojových kódů. V balíčkovacím systému existuje stejná analogie: binární balíčky (.deb) se vytvářejí (záměrně nepoužívám termín „kompilují“, neboť ten je u některých balíčků, např. programů v interpretovaném jazyce, značně zavádějící) ze zdrojových balíčků. Zdrojový balíček je v Debianu tvořen třemi soubory (.orig.tar.gz,

.diff.gz a .dsc). Soubor .orig.tar.gz je .tar.gz archiv původního zdrojového kódu programu, jak je distribuován vyvojářem softwaru (v terminologii Debianu nazývaným upstream maintainer). Soubor .diff.gz je zkomprimovaný patch obsahující úpravy, které na softwaru provedl vývojář balíčku (package maintainer nebo též zkráceně maintainer). Aplikováním tohoto patche na původní archiv získáme zdrojové kódy, z kterých vývojář balíčku vytváří binární balíčky. Soubor .dsc (tzv. soubor

Debian source control) obsahuje důležité informace o zdrojovém balíčku (např. jeho jméno, verzi, jména binárních balíčků, závislosti pro vytvoření balíčku či kontrolní součty souborů .orig.tar.gz a .diff.gz). Tyto informace jsou digitálně podepsané vývojářem balíčku. Jedná-li se o tzv. nativní balíček Debianu (to znamená, že software je vyvíjen přímo pro Debian), můžeme si všimnout absence souboru .diff.gz. To je logický důsledek faktu, že vývojář softwaru a balíčku je jedna osoba a vývoj softwaru je totožný s vývojem balíčku a není tedy potřeba vyvíjet modifikaci softwaru pro Debian. Archiv se zdrojovými kódy pak nese označení .tar.gz (nikoli .orig.tar.gz).

Chceme-li si obstarat zdrojový balíček, můžeme jej stáhnout z HTTP či FTP serveru ručně nebo použít apt-get. Jak jistě pozorného čtenáře minulého dílu seriálu právě napadlo, pro použití programu apt-get je nutné nakonfigurovat zdroje v souboru /etc/apt/sources­.list. Pro distribucitesting je obvyklé následující nastavení:

deb-src ftp://ftp.cz.debian.org/debian testing main contrib non-free
deb-src ftp://ftp.cz.debian.org/debian-non-US testing/non-US main contrib non-free

Po spuštění apt-get update můžeme číst mj. řádky:

Get:2 ftp://ftp.cz.debian.org testing/main Sources [966kB]
Get:8 ftp://ftp.cz.debian.org testing/contrib Sources [27.5kB]
Get:10 ftp://ftp.cz.debian.org testing/non-free Sources [27.9kB]
Get:12 ftp://ftp.cz.debian.org testing/non-US/main Sources [5322B]
Get:14 ftp://ftp.cz.debian.org testing/non-US/contrib Sources [20B]
Get:16 ftp://ftp.cz.debian.org testing/non-US/non-free Sources [795B]

Ze záznamů v souboru sources.list lze obdobným způsobem, který jsme si popisovali v minulém dílu u binárních balíčků, zjistit umístění souborů s informacemi o zdrojových balíčcích. Dopracujeme se tak např. k souboruftp.cz­.debian.org/de­bian/dists/tes­ting/main/sou­rce/Sources.gz. Podíváme-li se na obsah souboru, zjistíme, že nám nápadně připomíná soubor Packages.gz. Není divu. Plní totiž úplně stejnou funkci. Ovšem s tím rozdílem, že se v tomto případě nejedná o balíčky binární, ale zdrojové.

Nyní můžeme stahovat zdrojové balíčky:

$ apt-get source gallery
Reading Package Lists... Done
Building Dependency Tree... Done
Need to get 210kB of source archives.
Get:1 ftp://ftp.cz.debian.org testing/main gallery 1.3.4-1 (dsc) [579B]
Get:2 ftp://ftp.cz.debian.org testing/main gallery 1.3.4-1 (tar) [202kB]
Get:3 ftp://ftp.cz.debian.org testing/main gallery 1.3.4-1 (diff) [8151B]
Fetched 210kB in 6s (30.7kB/s)
dpkg-source: extracting gallery in gallery-1.3.4
$

Tímto příkazem se stáhnou všechny tři soubory zdrojového balíčku (.dsc, .orig.tar.gz a případně .diff.gz), pak je originální archiv rozbalen a je také aplikován patch .diff.gz. Vytvoří se tedy také adresář, v kterém máme kompletní zdrojové kódy softwaru (upravené pro Debian):

$ ls
gallery-1.3.4/            gallery_1.3.4-1.diff.gz
gallery_1.3.4.orig.tar.gz gallery_1.3.4-1.dsc
$

Chceme-li zdrojové kódy pouze stáhnout (a nerozbalovat), použijeme přepínač -d. Pokud naopak požadujeme také vytvoření binárních balíčků, použijeme přepínač -b.

Jelikož je běžné vytvářet z jednoho zdrojového balíčku několik balíčků binárních, může se stát, že jméno binárního balíčku není shodné se jménem balíčku zdrojového. Např. binární balíček ganglia-monitor se vytváří ze zdrojového balíčku ganglia-monitor-core. apt-get však problém nalezení správného zdrojového balíčku řeší za nás:

$ apt-get -d source ganglia-monitor
Reading Package Lists... Done
Building Dependency Tree... Done
Need to get 428kB of source archives.
Get:1 ftp://ftp.cz.debian.org testing/main ganglia-monitor-core 2.5.0-3 (dsc) [617B]
Get:2 ftp://ftp.cz.debian.org testing/main ganglia-monitor-core 2.5.0-3 (tar) [428kB]
Fetched 428kB in 21s (20.4kB/s)
Download complete and in download only mode
$

Závislosti zdrojových balíčků

Chceme-li vytvořit binární balíček, je většinou potřeba nainstalovat další software (např. kompilátor nebo knihovny). Absenci potřebného softwaru bychom samozřejmě zjistili při pokusu o vytvoření balíčku. Tomu však můžeme předejít, použijeme-li příkaz apt-get build-dep. Zdrojové balíčky totiž obsahují informaci, které balíčky je potřeba nainstalovat, chceme-li z daného zdrojového balíčku vytvořit balíčky binární (vysvětlení podává pole Build-Depends) ve výše uvedeném souboru Sources.gz). Pro apt-get pak není problémem zajistit instalaci potřebných balíčků:

# apt-get build-dep garchiver
Reading Package Lists... Done
Building Dependency Tree... Done
The following NEW packages will be installed:
libgtkxmhtml-dev libzvt-dev python-dev python-gdk-imlib python-glade
python-gnome python2.1-dev
0 packages upgraded, 7 newly installed, 0 to remove and 0 not upgraded.
Need to get 1054kB of archives. After unpacking 3908kB will be used.
Do you want to continue? [Y/n]

Tento článek sponzoruje soLNet, s.r.o.

Našli jste v článku chybu?

31. 7. 2003 1:00

martink (neregistrovaný)

Rozdeleni na originalni zdrojaky a na diff je velmi prehledne a to pojemnovani k prehlednosti prispiva. Na prvni pohled je jasne "co je co". Diky rozdeleni na originalni tarbal a diff je take hned jasne, jake zmeny spravce balicku provedl. Nekolikrat se mi to uz hodilo. Navic si protirecite. Vadi vam rozdelenost zdroju i to, ze adresar debian se "cpe" dovnitr autorovych zdrojaku. Ten adresar debian se ale objevi az po aplikovani prislusneho diffu. A kdyz neni mozne mit z nejakych duvodu adresar …

29. 7. 2003 14:02

Johanka (neregistrovaný)

:))))))
Ja tedy svuj cerveny klobouk koupila za 50,- v sekaci a obcas ho i nosim, ale posledni dobou uz jenom slouzi jako dekorace, verici na ulici me poznaji podle sponek s procesory :)


Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Vitalia.cz: Říká amoleta - a myslí palačinka

Říká amoleta - a myslí palačinka

Podnikatel.cz: Vládu obejde, kvůli EET rovnou do sněmovny

Vládu obejde, kvůli EET rovnou do sněmovny

Vitalia.cz: „Připluly“ z Německa a možná obsahují jed

„Připluly“ z Německa a možná obsahují jed

DigiZone.cz: Česká televize mění schéma ČT :D

Česká televize mění schéma ČT :D

120na80.cz: Rakovina oka. Jak ji poznáte?

Rakovina oka. Jak ji poznáte?

Podnikatel.cz: 1. den EET? Problémy s pokladnami

1. den EET? Problémy s pokladnami

Root.cz: Vypadl Google a rozbilo se toho hodně

Vypadl Google a rozbilo se toho hodně

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Lupa.cz: UX přestává pro firmy být magie

UX přestává pro firmy být magie

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Vitalia.cz: Tesco: Chudá rodina si koupí levné polské kuře

Tesco: Chudá rodina si koupí levné polské kuře

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

Vitalia.cz: Baletky propagují zdravotní superpostel

Baletky propagují zdravotní superpostel

Lupa.cz: Není sleva jako sleva. Jak obchodům nenaletět?

Není sleva jako sleva. Jak obchodům nenaletět?

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

DigiZone.cz: NG natáčí v Praze seriál o Einsteinovi

NG natáčí v Praze seriál o Einsteinovi

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá