Portál AbcLinuxu, 30. dubna 2025 13:05
V tomto díle si ukážeme, jak vytvořit vlastní balíček, a jak takový balíček poskytnout ostatním uživatelům.
Pro vytváření balíčku máme v Arch Linuxu skript makepkg
, který podle instrukcí v souboru PKGBUILD
sestaví balíček; ten lze následně nainstalovat pacmanem. PKGBUILDy jsou tedy jakousi obdobou ebuidů z Gentoo Linuxu.
Pokud chcete poskytnout balíček ostatním, pak je nejlepší umístit jej do AURu (ArchLinux User-community Repository). Je to nebinární repozitář, nachází se v něm jen PKGBUILDy.
Každý balíček musí splňovat Standardy balíčků Archu. Jde o omezení názvů balíčků, způsob verzování, omezení adresářů, do kterých se instaluje software, a několik dalších doporučení. Jen PKGBUILD, který splňuje tato pravidla, může být umístěn do AURu. Vše, co porušuje pravidla, je smazáno, o což se starají správci i samotní uživatelé, kteří tyto prohřešky hlásí.
Popisován je PKGBUILD pro makepkg 3.0.x, starší verze makepkg
nemusely vyžadovat všechny direktivy.
Uvedeme si příklad a vysvětlíme si jednotlivé direktivy a volby:
# Maintainer: An Archist <archist@archlinux.org> # Contributor: Big Boss <bigboss@sf.net> pkgname = helloworld pkgver = 0.4 pkgrel = 1 pkgdesc = "helloworld: a kernel module and a userspace daemon \ for controlling an atomic bomb" url = "http://www.helloworld.sf.net" arch = ('i686' 'x86_64') license = ('GPL' 'LGPL') replaces = ('helloworld-rc' 'helloworld-test') depend = ('kernel26') conflict = ('libatomicbomb' 'goodbyeworld') provides = ('libatomicbomb' 'goodbyeworld') backup = ('etc/helloworld.conf') install = $pkgname.install source = ('http://www.helloworld.sf.net/source/$pkgname-$pkgver.tar.gz') md5sums = ('a3290cbce4ffabbf91ccb1e9fce64d9e') sha1sums = ('99fdedaec3acc9a8107443b6bfe87c7cdc0165c2') build() { cd $startdir/src ./configure --prefix=/usr make || return 1 make DESTDIR=$startdir/pkg install || return 1 } # vim:syntax=sh
*.la
soubory knihoven; pokud je chcete smazat, použijte !libtool.makepkg.conf
.$pkgname
, $pkgver
a $startdir
.build()
.Zde popsaný PKGBUILD je použitelný pro sestavení balíčku ze zdrojových souborů dostupných v archivech. Existuje možnost balíček sestavit přímo ze SVN i CVS repozitáře. I v tomto případě je třeba se držet pravidel pro tvorbu PKGBUILDu. Používají se proměnné _cvsroot
a _cvsmod
, respektive _svntrunk
a _svnmod
. Ve funkci build()
se použije příkaz pro stažení CVS repozitáře a jeho překopírování; až z této kopie se sestavuje balíček.
if [ -d $_cvsmod/CVS ]; then cd $_cvsmod cvs -z3 update -d else cvs -z3 -d $_cvsroot co -D $pkgver -f $_cvsmod fi msg "CVS checkout done or server timeout" msg "Starting make..." cp -r $_cvsmod $_cvsmod-build cd $_cvsmod-build ...
Podobně vypadá fragment pro SVN:
if [ -d $_svnmod/.svn ]; then cd $_svnmod svn up -r $pkgver else svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod fi msg "SVN checkout done or server timeout" msg "Starting make..." cp -r $_svnmod $_svnmod-build cd $_svnmod-build ...
Pokud chcete ve svém balíčku používat instalační skript, musíte uvést v PKGBUILDu direktivu:
install=jméno_balíčku.install
Skript poskytuje tyto funkce:
Jak vypadá instalační skript, jsme si ukázali v prvním díle seriálu. Skript nemusí být umístěn v seznamu source; stačí, když je v adresáři, ve kterém je PKGBUILD.
Makepkg je shellový skript, který umožní sestavit balíček podle PKGBUILDu. Je distribuován společně s pacmanem.
Popisovány jsou vlastnosti makepkg 3.0.x, starší verze se mohou lišit. Postupně probereme nejpoužívanější přepínače. Pokud chcete vědět více, prohlédněte si manuálovou stránku.
makepkg se volá takto (musíme být v adresáři, kde je PKGBUILD, který chceme použít):
makepkg [volby]
Konfigurační soubor makepkg umožňuje nastavit optimalizace pro procesor, zapnout distribuovanou kompilaci a další proměnné prostředí, které ovlivňují software ve výsledném balíčku. Soubor je bohatě komentován, takže i neznalý uživatel se v něm neztratí.
Opět uvedu nejdůležitější volby:
AUR je repositář PKGBUILDů, do kterého může přispět každý uživatel Arch Linuxu. Jeho stránky jsou http://aur.archlinux.org/. Pokud chcete připívat, musíte si vytvořit účet.
Když zjistíte, že balíček pro daný software v binárních repozitářích není, nejprve se podívejte do AURu, obvykle ho tam najdete. Pokud vytvoříte PKGBUILD, který ještě neexistuje, pak jej stačí zabalit do archivu a uploadovat do AURu.
Ke každému balíčku je možné posílat komentáře, které mohou obsahovat hlášení chyb nebo návrhy na vylepšení PKGBUILDu určené pro autora. Každý má také možnost pro balíčky hlasovat - pokud bude mít daný balíček hodně hlasů, má velkou šanci se dostat do repozitáře community. Stejně tak se dá balíček označit za neaktuální (Out-of-date).
Vybraní důvěryhodní uživatelé se snaží udržovat AUR a PKGBUILDY v něm ve funkčním stavu, ale stejně je na každém přispěvateli, aby PKGBUILD udržoval v aktuální verzi a v sestavitelné podobě. Proto se může stát, že si stáhnete PKGBUILD, který je nepoužitelný, a nezbývá, než jej opravit. Toto se může odrazit ve vašem hodnocení balíčku.
AUR je dobrým zdrojem, ale často se vám může stát, že daný balíček nesestavíte - proto je dobré se podívat na poslední aktualizaci. Alespoň zjistíte, jestli je PKGBUILD ještě udržován. AUR je stále tak trochu džungle.
V příštím díle budeme pokračovat v sestavování balíčků - podíváme na ABS (Arch Build System) a makeworld.
Zde popsaný PKGBUILD je použitelný pro sestavení balíčku se zdrojových souborů dostupných v archivech.ze zdrojových balíčků - z koho z čeho 2.pád
Protože v případě, že jde o libovolně zaměnitelné alternativy, čárka se nepíše. Třeba Koupím hrušky nebo jablka.
Pokud se nejedná o libovolně zaměnitelné alternativy, čárka se tam píše. Líbí se ti to, nebo na to máš jiný názor?
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.