RkBlog

Hardware, programming and astronomy tutorials and reviews.

Tworzenie pakietów w Archu

Tworzenie pakietów Archlinuksa jest proste. Na początek zainstaluj:
pacman -S abs
ABS to system budowania pakietów dla dystrybucji. Wykonując polecenie "abs" pobierzemy PKGBUILDy wszystkich pakietów z podstawowych repozytoriów (do /var/abs/). Mogą one służyć za wzór przy tworzeniu własnych PKGBUILDów. PKGBUILD to plik tekstowy zawierający wszystkie informacje potrzebne do zbudowania pakietu. Oto przykładowy pkgbuild:
pkgname=python-lcms
pkgver=1.17
pkgrel=1
pkgdesc="LittleCMS Python bindings"
arch=(i686 x86_64)
license=('CUSTOM')
depends=('libtiff' 'python' 'lcms' 'swig')
url="http://www.littlecms.com"
options=('!libtool')
source=(http://littlecms.com/lcms-${pkgver}.tar.gz)
md5sums=('07bdbb4cfb05d21caa58fe3d1c84ddc1')

build() {
  cd $startdir/src/$pkgname-$pkgver
  ./configure --prefix=/usr
  make || return 1
  make prefix=$startdir/pkg/usr install
}
pkgname=weplab
pkgver=0.1.5
pkgrel=1
pkgdesc="A WEP encryption cracker"
url="http://sourceforge.net/projects/weplab"
depends=('wireless_tools')
makedepends=()
conflicts=()
arch=('x86_64')
replaces=()
backup=()
source=("http://dl.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz")
md5sums=('713870965447b0b8b7341409968846fb')

build() {
	cd $startdir/src/$pkgname-$pkgver
	./configure --prefix=/usr
	make || return 1
	make DESTDIR=$startdir/pkg install
}
Gdzie możliwe zmienne to:
  • pkgname: nazwa pakietu
  • pkgver: wersja aplikacji
  • pkgrel: wersja pakietu
  • pkgdesc: krótki opis pakietu
  • url: strona pakietu
  • arch: lista architektur, pod którymi pakiet działa i można go skompilować
  • depends: zależności
  • makedepends: zależności potrzebne jedynie do kompilacji
  • conflicts: konflikty - czego nie można instalować z tym pakietem
  • replaces: jakie pakiety ma ten pakiet zastąpić (np. stare wersje)
  • backup: jakie pliki zapisać jako backup (plik.pacsave) gdy pakiet zostanie usunięty
  • install: określa skrypt instalacyjny
  • source: link do paczki z kodem źródłowym
  • md5sums: suma kontrolna paczki źródłowej
  • build: funkcja build - zawiera akcje potrzebne do zbudowania pakietu
  • groups: grupowanie pakietów (np. instalacja "kde" zainstaluje wszystko z grupy "kde")
  • provides: używane jeżeli pakiet dodaje jeszcze inny/inne pakiety

Funkcja build

Standardowa kompilacja pakietu polega na wydaniu poleceń ./configure, make i make install. Odpowiednik tego w funkcji build to:
build() {
  cd $startdir/src/$pkgname-$pkgver
  ./configure --prefix=/usr
  make || return 1
  make prefix=$startdir/pkg/usr install
}
  • Notka 1: W przypadku cd $startdir/src/$pkgname-$pkgver: źródła rozpakowują się do katalogu zawierającego nazwę i wersję np. /foo-0.12 a nie /foo
  • Notka 2: ./configure --prefix=/usr: konfigurujemy z opcją instalacji w katalogu /usr
  • Notka 3: make prefix=$startdir/pkg/usr install: instalujemy w $startdir/pkg/usr tak by pacman miał nad tym kontrolę.
  • Notka: czasami prefix nie jest stosowany tylko DESTDIR

Budowanie pakietu

Budowanie pakietu polega na wykonaniu z konta zwykłego użytkownika polecenia makepkg z katalogu zawierającego plik PKGBUILD. Zbudowany pakiet można zainstalować przez pacman -U nazwa_pakietu.

AUR - zbiór PKGBUILDów społeczności

Strona AUR to repozytorium pkgbuildów stworzonych przez użytkowników. Dość często znajdziemy tak pkgbuildy aplikacji, których nie ma w postaci pakietów. Możemy też umieszczać tam własne pkgbuildy. Należy zwrócić uwagę iż dostępne tam pkgbuildy nie zawsze muszą odnosić się do najnowszej wersji aplikacji i działać bezbłędnie.

Shaman

Shaman to GUI dla Pacmana z obsługą ABS i budowania pakietów. Pakiet znajdziemy w repozytorium community.
pacman -S shaman
shaman
RkBlog

ArchLinux, 14 July 2008, Piotr Maliński

Comment article