Difference between revisions of "Arch Build System (Česky)"

From ArchWiki
Jump to: navigation, search
(Instalace balíčků)
(Co je to balíček ?)
Line 36: Line 36:
  
 
*.INSTALL : soubor pro provedení příkazů po instalaci/upgradu/odebrání.
 
*.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:
 +
 +
<pre>
 +
# $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
 +
}
 +
</pre>
 +
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 [http://archlinux.org/packages.php 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ř, <i>foo</i> má konflikt s <i>yafoo (yet another foo)</i>.  Nemůže proto být instalován ve stejnou dobu.
 +
* '''replaces''' : nový balíček přepíše starý.  Pokud <i>mffoo (my first foo)</i> je podporován, přepíše <i>foo</i>
 +
* '''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 : all the actions needed to build the package (it will be explained with more attention later in this document)
 +
 +
Well, you see that the PKGBUILD file contains all the information that might be needed by the package manager. It is the heart of pacman and abs.
 +
 +
There are also install files.  This PKGBUILD specifies 'foo.install' as the package's install file.  Here is an example install file:
 +
 +
<pre>
 +
post_install() {
 +
/bin/true
 +
}
 +
 +
post_upgrade() {
 +
/bin/true
 +
}
 +
 +
pre_remove() {
 +
/bin/true
 +
}
 +
 +
op=$1
 +
shift
 +
 +
$op "$@"
 +
</pre>
 +
 +
Here are the function explainations :
 +
 +
* post_install : this script is run right after files are installed, it takes one argument :
 +
** the package version
 +
* post_upgrade : this script is run after all files have been upgraded, <em>it takes two arguments</em> :
 +
** the new package version
 +
** the old package version
 +
* pre_remove : this script is run right before files are removed (stop a daemon for example) and takes one argument :
 +
** the package version
 +
 +
The three lines at the bottom are needed in every install file so that they run properly.

Revision as of 08:53, 30 October 2006

Ú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 : all the actions needed to build the package (it will be explained with more attention later in this document)

Well, you see that the PKGBUILD file contains all the information that might be needed by the package manager. It is the heart of pacman and abs.

There are also install files. This PKGBUILD specifies 'foo.install' as the package's install file. Here is an example install file:

post_install() {
/bin/true
}

post_upgrade() {
/bin/true
}

pre_remove() {
/bin/true
}

op=$1
shift

$op "$@"

Here are the function explainations :

  • post_install : this script is run right after files are installed, it takes one argument :
    • the package version
  • post_upgrade : this script is run after all files have been upgraded, it takes two arguments :
    • the new package version
    • the old package version
  • pre_remove : this script is run right before files are removed (stop a daemon for example) and takes one argument :
    • the package version

The three lines at the bottom are needed in every install file so that they run properly.