Arch Build System (Česky)

From ArchWiki
Revision as of 09:56, 30 October 2006 by DaBoX (Talk | contribs) (Co je PKGBUILD a co obsahuje?)

Jump to: navigation, search

Úvod

Arch Build System (ABS for short) se používá pro

  • Tvorbu nových balíčků jenž ještě neexistují
  • Úpravu existujících balíčků pro vlastní potřeby (např. přidání parametru)
  • Re-build celého vašeho systému s použitím compiler flags, "a la freebsd" (a rozběhnutí modulů jádra s vaším vlastním kernelem!)

ABS není nezbytný pro používání Arch Linuxu ale je užitečný.

Toto how-to se vám pokusí dát přehled o ABS a baličcích Archu, není to kompletní referenční příručka! Pokud chcete víc, zkuste si přečíst manuálovou stránku.

Instalace balíčků

Pro použití abs, musíte nejprve nainstalovat cvsup a wget, to uděláte snadno příkazem:

pacman -Sy cvsup wget

Nebo, pokud máte stažené balíčku do adresáře pojmenovaného 'foo' (pro příklad):

cd foo
pacman -A  cvsup-*.pkg.tar.gz  wget-*.pkg.tar.gz

Co je to balíček ?

Typický soubor balíčku má tvar balíček.pkg.tar.gz

Ve skutečnosti to neni víc než gzipovaný tar archiv který obsahuje:

  • Soubory pro instalaci
  • .PKGINFO : obsahuje všechna metadata potřebné pacmanem k výměně s balíčky, závislostmi, apod.
  • .FILELIST : seznam všech souborů obsažených v archivu. Je to vhodné pro zpětné odinstalování nebo konfliktu souborů.
  • .INSTALL : soubor pro provedení příkazů po instalaci/upgradu/odebrání.

Co je PKGBUILD a co obsahuje?

Vzhledem k vysvětlení výše, soubor PKGBUILD obsahuje metadata o balíčcích. Je to jednoduchý textový soubor. Zde je příklad:

# $Id: PKGBUILD,v 1.12 2003/11/06 08:26:13 dorphell Exp $
# Maintainer: judd <jvinet@zeroflux.org>
# Contributor: Judd Vinet <jvinet@zeroflux.org>
pkgname=foo
pkgver=0.99 # note: if the pkgver had been '0.99-10' then use an underscore. like '0.99_10'
pkgrel=1
pkgdesc="short description of foo"
arch=(i686 x86_64)
url="http://www.foo.org"
groups=
provides=
depends=('qt' 'python')
makedepends=('guile')
conflicts=('yafoo')
replaces=('mffoo')
backup=('etc/foo/foo.conf')
install=('foo.install')
source=(http://www.foo.org/download/$pkgname-$pkgver.tar.gz)
md5sums=('2c0cca3ef6330a187c6ef4fe41ecaa4d35175bee593a7cc7d6205584a94d8625')

build() {
  cd $startdir/src/$pkgname-$pkgver
  ./configure --prefix=/usr
  make || return 1
  make prefix=$startdir/pkg/usr install
}

Zde si vysvětleme jednotlivé pojmy :

  • # text : komentář
  • # $Id: PKGBUILD,v ... : cvs-tag pro tento balíček (z archlinux-cvs system)
  • # Maintainer : vývojář zodpovědný za balíček v oficiálním repozitáři
  • # Contributor : osoba která napsala PKGBUILD pro tento balíček
  • pkgname : jméno balíčku
  • pkgver : verze balíčku
  • pkgrel : číslo vydání Arch balíčku. V základu je to číslo verze změněné pokud je PKGBUILD modifikován. To se může přihodit z mnoha důvodů pro příklad pokud povolíte compile-time pro něco.
  • pkgdesc : výstižný popis balíčku. Toto je co uvidíte pokud se podíváte na databázi balíčků
  • arch : ukazuje na jakou architektutu je tvořen a odskoušen Arch64_FAQ pro portování.
  • url : domovská stránka softwaru (objevíse pokud kliknete na balíček v databázi balíčků)
  • groups : je užívané ve skupinách balíčků: například když zkusíte nainstalovat kde, nainstalujete všechny balíčky obsažené ve skupině kde.
  • provides : pokud balíček poskytuje jiný balíček, pro příklad kernel-scsi poskytuje kernel
  • depends : seznam závislostí balíčku (co potřebuje k běhu)
  • makedepends : závislosti potřebné k tvorbě balíčku ale nepotřebné k samotnému spuštění
  • conflicts : balíčky které jsou v konfliktu. Např, foo má konflikt s yafoo (yet another foo). Nemůže proto být instalován ve stejnou dobu.
  • replaces : nový balíček přepíše starý. Pokud mffoo (my first foo) je podporován, přepíše foo
  • backup : soubory pro zálohu (jako soubor.pacsave) pokud je balíček odstraněn
  • install : specifikuje speciální instalační script který může být obsažen v balíčku (ve stejném adresáři jako PKGBUILD)
  • source : specifikuje cestu odkud stáhnout zdrojový kód balíčku. Může to být např. "http" nebo "ftp".
  • md5sums : md5 součet pro ověření integrity

Tak pojdme si vysvětlit funkci :

  • build : všechny akce potřebné pro tvorbu balíčku (to bude vysvětleno v tomto dokumentu níže)

Dobře, podíváme se co PKGBUILD obsahuje za informace potřebné pro správce balíčků. To je srdce pacmana a abs.

Jsou tam také instalační soubory. Soubor PKGBUILD odkazuje na 'foo.install' jako na instalační soubor balíčku. Zde je příklad instalačního souboru:

post_install() {
/bin/true
}

post_upgrade() {
/bin/true
}

pre_remove() {
/bin/true
}

op=$1
shift

$op "$@"

Zde je vysvětlení funkcí :

  • post_install : tento script se spístí když jsou soubory nainstalovány, předává jeden argument :
    • the package version
  • post_upgrade : tento script se pustí jsou-li soubory upgradovány předává dva argumenty  :
    • the new package version
    • the old package version
  • pre_remove : spustí se jsou-li soubory odstraněny (například zastaví daemona) a předá jeden argument :
    • the package version

Ostatní jsou řádky potřebné pro každou instalaci.