Tworzenie pakietów w Archu
14 July 2008
Comments
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
}
- 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
RkBlog
Comment article