PKGBUILD

PKGBUILD’s er en meget vigtig del af Arch Linux og vi kan derfor ikke undgå at benytte os af PKGBUILD’s. Det er fx PKGBUILD’s der gør det muligt for Arch Linux at få brugerne til selv at lave pakker til Arch Linux og dele dem med hinanden på en side som fx AUR hvor der er over 3500 pakker lavet af brugere.

Desuden kræver sådanne sider ikke ret meget plads da det kun er små tekstfiler der gemmes med informationer til at lave pakker. Hvis du ikke ved hvad en PKGBUILD er for noget kan det anbefales at læse afsnittet neden under.

Hvad er en PKGBUILD?

En PKGBUILD er kort fortalt en fil der fortæller om “hvordan” man laver en pakke. Altså står der fx hvordan man laver en pakke der installere et program ved navn bb (et program der kan lave ASCII grafik i en terminal). En sådan pakke kan fx se sådan ud:

# Contributor: Jacob Bang

pkgname=bb
pkgver=1.3rc1
pkgrel=10
pkgdesc="ASCII-art demo based on AAlib"
url="http://aa-project.sourceforge.net/bb/"
license="GPL"
depends=('aalib' 'glibc' 'libx11' 'ncurses' 'libmikmod' 'libxau' 'libxdmcp')
source=(http://ftp.debian.org/debian/pool/main/b/bb/${pkgname}_${pkgver}.orig.tar.gz
http://ftp.debian.org/debian/pool/main/b/bb/${pkgname}_${pkgver}-7.diff.gz)
md5sums=('e6aed11dc5a59fb0896e04c947d3de43' 'a03027ad560b2a7339ef36db069b5717')

build() {
cd $startdir/src/${pkgname}-${pkgver}.orig
patch -Np1 -i ../${pkgname}_${pkgver}-7.diff
./configure --prefix=/usr
make
make DESTDIR=$startdir/pkg/ install
}

Dette kan lige i starten meget vanskeligt ud men det hele er opbygget logisk og er nemt for udvikleren at overskue. Ideen er at i stedet for at udvikleren skal uploade en hel pakke så kan han/hun i stedet uploade en PKGBUILD som flyder langt mindre. Det tager selvfølgelig længere tid for brugeren da computeren skal lave pakken før den kan installeres i stedet for hente pakken direkte fra serveren. Vi kan lige hurtigt se på hvordan en PKGBUILD er opbygget.

Efter build() er kørt ligger der en pakke som kan installeres med pacman.

Hvordan bruger jeg en PKGBUILD?

Måske burde vi have startet med dette men lad det nu ligge. Det er meget nemt at benytte sig af en PKGBUILD og du skal slet ikke tænke på hvordan den er opbygget for at bruge den. Alt dette gør et program ved navn makepkg. Lad os tage et eksempel. Vi har installeret openoffice med pakken openoffice-base og har opdaget at der ikke er nogen dansk sprogpakke i Arch Linux current, extra eller andre steder. Vi kikker på AUR og finder ud af der findes pakken openoffice-da.

På siden kan man læse kommentarer og andre informationer. Tryk på Tarball for at downloade en tar.gz fil der indeholder PKGBUILD plus andre vigtige filer hvis det er nødvendigt. Gem filen et eller andet sted du kan huske hvor er. I dette eksempel er filen gemt i /tmp mappen. Det meste korrekte sted er /var/abs/local/ men der er ingen lov der siger den skal ligge der.

cd /tmp

tar -xzf openoffice-da.tar.gz

cd openoffice-da

su
makepkg

pacman -U openoffice-da-2.0.4-1.pkg.tar.gz

Sådan færdig arbejde. Nogle af tingene kan være anderledes som fx pakkens navn. makepkg kommandoen kan tage lang tid hvis der er meget der skal kompileres. Der kan komme forskellige beskeder om pakker du mangler at installere når du køre makepkg. Alle disse ting skal være i orden og hvis du ikke kan finde pakkerne med pacman ligger de 99% sikkert på AUR. Når makepkg har været kørt ligger der en del filer og du behøver ikke gemme nogen af dem. Jeg gemmer ofte bare PKGBUILD filen og nogen gange pakken. Alt det andet kan slettes. makepkg behøver desuden ikke at køres som root.

Dette er bare en kort beskrivelse af pacman og makepkg systemerne. Der findes mange muligheder som du selv kan læse om på wiki.archlinux.org og man-pages.