Portál AbcLinuxu, 24. listopadu 2025 01:01
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?
Už jsi dobuildil to icc? Já už z něj mám hlavu na prasknutí a naprosto to vzdávám. Pokud bys s tím dospěl k úspěchu, můžeš o tom napsat pár řádek do blogu (pravopisné chyby ti odpustím
)
Čeština není matematika
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.